C8.以下程序的输出结果是 void main()
{ int a[5] = {2, 4, 6, 8, 10}, *p, **k;
p = a; k = &p;
printf(“%d “, *(p++)); printf(“%d\\n”, **k);
}
A)4 4 B)2 2 C)2 4 D)4 6 C9.以下程序的输出结果是 void fun( int *s) { static int j = 0;
do
s[j] += s[j+1]; while(++j < 2);
}
void main()
{ int k, a[10 ]= {1, 2, 3, 4, 5};
for( k = 1; k < 3; k++)
fun(a);
for( k = 0; k < 5; k++) printf(“%d”, a[k]);
}
A)34756 B)23445 C)35745 D)12345 A10.若有定义:int x, *pb;,则以下正确的赋值语句是
A)pb = &x B)pb = x C)*pb = &x D)*pb = *x B11.以下程序的输出结果是
#include “stdio.h” void main()
{ printf(“%d\\n”, NULL); }
A)不确定 B)0 C)-1 D)1 B12.以下程序的输出结果是
void sub(int x, int y, int *z) { *z = y - x; } void main() { int a, b, c;
sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf(“%d, %d, %d\\n”, a, b, c); }
A)5, 2, 3 B)-5, -12, -7 C)-5, -12, -17 D)5, -2, -7 C13.以下程序的输出结果是
void main()
{ int k = 2, m = 4, n = 6;
int *pk = &k, *pm = &m, *p; *(p = &n) = *pk * (*pm);
36
printf(“%d\\n”, n); }
A)4 B)6 C)8 D)10
B14.已知指针p的指向如图所示,则执行语句*p++;后,*p的值是 A)20 B)30 C)21 D)31
a[0] a[1] a[2] a[3] a[4]
10 20 30 40
p B15.已知指针p的指向如上图,则表达式*++p的值是 A)20 B)30 C)21 D)31 C16.已知指针p的指向如上图,则表达式++*p的值是 A)20 B)30 C)21 D)31 D17.以下程序的输出结果是
void prtv(int *x)
{ printf(“%d\\n”, ++*x); } void main() { int a = 25; prtv(&a); }
A)23 B)24 C)25 D)26 B18.以下程序的输出结果是
void main()
{ int **k, *a, b = 100; a = &b; k = &a; printf(“%d\\n”, **k); }
A)运行出错 B)100 C)a的地址 D)b的地址 C19.以下程序的输出结果是 void fun(float *a, float *b)
{ float w; *a = *a + *a; w = *a; *a = *b; *b = w; }
void main()
{ float x = 2.0; y = 3.0; float *px = &x, *py = &y; fun(px, py);
printf(“%2.0f,%2.0f\\n”, x, y); }
A) 4, 3 B) 2, 3 C) 3, 4 D) 3, 2 B20.以下程序的输出结果是
void sub(float x, float *y, float *z)
37
50
{ *y = *y - 1.0;
*z = *z + x;
}
void main()
{ float a = 2.5, b= 9.0, *pa, *pb;
pa = &a; pb = &b; sub(b - a, pa, pb); printf(“%f\\n”, a);
}
A)9.000000 B)1.500000 C)8.000000 D)10.500000 A21.以下四个程序中,能对两个整型值进行交换的是 A)void main()
{ int a = 10, b = 20; swap(&a, &b);
printf(“%d %d\\n”, a, b); }
swap( int *p, int *q) { int *t, a; t = &a;
*t = *p; *p = *q; *q = *t; }
B)void main()
{ int a = 10, b = 20; swap(&a, &b);
printf(“%d %d\\n”, a, b); }
swap( int *p, int *q) { int t;
*t = *p; *p = *q; *q = *t; }
C)void main() { int *a, *b;
*a = 10, *b = 20; swap(a, b);
printf(“%d %d\\n”, *a, *b); }
swap( int *p, int *q) { int t;
t = *p; *p = *q; *q = t; }
D)void main()
{ int a = 10, b = 20; int *x = &a, &y = &b; swap(x, y);
38
printf(“%d %d\\n”, *a, *b); }
swap( int *p, int *q) { int t;
t = *p; *p = *q; *q = t; }
B22.定义语句int *swap();指的是
A) swap是一个返回整型值的函数
B) swap是一个返回指向整型值指针的函数 C) swap是一个指向函数的指针 D) 以上说法均不对
B23.若有以下说明和定义, 则对fun函数的正确调用语句是 void main()
{ int (*a)( int ), *b(), w[10], c; … }
fun( int *c ) { … }
A)a = fun; a( w ) B)a = fun; (*a)(&c); C)b = fun; *b( w ) D)fun(b); D24.若有定义和语句:
int a[4][5], (*cp)[5]; cp = a; 则对a数组元素的引用正确的是
A)cp+1 B)*(cp+3) C)*(cp+1)+3 D)*(*cp+2) D25.若已定义:
int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*prt )[3] = a, *p = a[0]; 则能够正确表示数组元素a[1][2]的表达式是
A)*((*prt + 1)[2]) B)*(*(p + 5)) C)(*prt + 1) + 2 D)*(*(a + 1) + 2) A26.若有定义和语句:
int a[4][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, (*prt )[3] = a, *p[4], i; for(i = 0; i < 4; i++)
p[i] = a[i];
则不能够正确表示a数组元素的表达式是
A)a[4][3] B)p[0][0] C)prt[2][2] D)(*(p+1))[1] A27.以下程序的输出结果是 void main()
{ int aa[3][3] = {{2}, {4}, {6} }, i, *p = &aa[0][0];
for(i = 0; i < 2; i++) { if(i == 0)
aa[i][i+1] = *p + 1; else ++p;
printf(”%d”, *p); }
printf(“\\n”);
39
}
A)23 B)26 C)33 D)36 A28.以下程序的输出结果是 void main()
{ int a[3][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
int (*p)[4] = a, i, j, k = 0; for(i = 0; i < 3; i++) for(j =0; j < 2; j++) k += *(*(p + i) + j); pritnf(“%d\\n”, k);
}
A)60 B)68 C)99 D)108 C29.若有定义语句:int (*p)[M];,其中的标识符p是 A)M个指向整型变量的指针
B)指向M个整型变量的函数指针
C)一个指向具有M个整型元素的一维数组指针
D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量 B30.以下能正确进行字符串赋值的语句是 A)char s[5] = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’}; B)char *s; s = “good!”; C)char s[5] = “good!”; D)char s[5]; s = “good!”; B31.以下程序段的输出结果是 char str[] = “ABCD”, *p = str; printf(“%d\\n”, *(p+4));
A)68 B)0 C)字符D的地址 D)不确定的值
B32.当运行以下程序时输入OPEN THE DOOR
{ if(*c <= ‘Z’ && *c >= ‘A’ )
*c -= ‘A’ - ‘a’; return *c;
}
void main()
{ char s[8], *p = s;
gets(s); while(*p)
{ *p = fun( p );
putcahr(*p); p++; }
putchar(‘\\n’);
}
A)oPEN tHE dOOR B)open the door C)OPEN THE DOOR D)Open The Door C33.以下程序的输出结果是
40