C语言之选择题
1.设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(D)。
A.p=1; B.*p=5; C.*q=2; D.q=p;
2.以下程序的输出结果是 (B)
void prtv(int *x)
{ printf(“%d\n”, ++*x); }
main()
{ int a = 25;
prtv(&a);
}
A.24 B.26 C.23 D.25
3.char *match(char c)是(C)。
A.函数调用 B.函数预说明 C.函数定义的头部 D.指针变量说明
4.char h,*s=&h;可将字符H通过指针存入变量h中的语句是(B)。
A.s='H' B.*s='H'; C.s=H; D.*s=H;
5.为了提高程序的运行速度,在函数中对于整型或指针可以使用(D)型的变量。
A.static B.auto C.extern D.register
6.若已有定义:
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a, i;
其中0≤i≤9,则对a数组元素的引用不正确的是D
A.a[p - a] B.*(&a[i]) C.p[i] D.*(*(a+i))
7.以下程序的输出结果是 B
main()
{ int **k, *a, b = 100;
a = &b; k = &a;
printf(“%d\n”, **k);
}
A.bμ?μ??· B.100 C.运行出错 D.aμ?μ??·
8.以下程序的输出结果是 D
main()
{ int a[] = {2, 4, 6, 8, 10}, y = 1, x, *p;
p = &a[1];
for(x = 0; x < 3; x++)
y += *(p + x);
printf(“%d\n”, y);
}
A.20 B.18 C.17 D.19
9.有定义:char*p1,*p2;则下列表达式中正确合理的是 C
A.p1/=5 B.p1+=5 C.p1=&p2 D.p1*=p2
11.若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
的语句为(A)。
A.printf("%d",*p[5]); B.printf("%d",p[5]);
C.printf("%d",*(p+5)); D.printf("%d",*(a+5));
12.若有定义和语句:
int a[4][5], (*cp)[5]; cp = c;
则对a数组元素的引用正确的是 B
A.*(cp+3) B.*(*cp+2) C.*(cp+1)+3 D.cp+1
13.int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是(A)。
A.3 B.4 C.不一定 D.2
14.关于指针概念说法不正确的是(A)。
A.指针变量可以由整数赋,不能用浮点赋
B.只有同一类型变量的地址才能放到指向该类型变量的指针变量之中
C.一个变量的地址称为该变量的指针 D.一个指针变量只能指向同一类型变量
15.设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是 A
A.*p=5; B.*q=2; C.p=1£? D.q=p;
16.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(C)。
A.n=*q; B.p=q; C.p=n; D.*p=*q;
17.若有定义int a[10],*p=a;,则p+5表示 A
A.元素a[5]的地址 B.元素a[6]的地址 C.元素a[6]的值 D.元素a[5]的值
18.以下程序段 char *alp[]={"ABC","DEF","GHI"}; int j; puts(alp[1]);
的输出结果是(A)。
A.DEF B.B C.D D.A
19.设有以下语句, 若0
char str[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];
int j;
for (j=0;j<4;j++)
strp[j]=str[j];
A.*str