1. 若已定义: int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a, i;
其中0≤i≤9,则对a数组元素不正确的引用是
A) a[p-a] B) *(&a[i])
C) p[i] D) a[10]
D
2. 已知指针p的指向如下图所示,则执行语句*--p;后*p的值是
a[0] a[1] a[2] a[3] a[4]
┌──┬──┬──┬──┬──┐
│ 10 | 20 | 30 │ 40 | 50 |
└──┴──┴──┴──┴──┘
p↑
A) 30 B) 20
C) 19 D) 29
1
B
3. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的
结果是________。
main( )
{ int a,b,*pa,*pb;
pa=&a; pb=&b;
scanf(\"%d,%d\
*pa=a+b;
*pb=a+b;
printf(\"a=%d,b=%d\\n\
}
A) a=13,b=13 B) a=8,b=8
C) a=8,b=13 D) 出错
2
C
4. 下面程序段的输出结果是________。
main( )
{ char string1[20],string2[20]={\"ABCDEF\
strcpy(string1,string2);
printf(\"%s\\n\
}
A) EF B) DEF
C) CDEF D) ABCDEF
B
5. 下列程序执行后的输出结果是________。
main()
{ int a[3][3], i,*pmul;
3
pmul=&a[0][0];
for(i=0;i<9;i++) pmul[i]=i+1;
printf(\"%d\\n\
}
A) 3 B) 6
C) 9 D) 随机数
B
6. 有如下程序段
int *p,a=10,b=1;
p=&a; a=*p+b;
执行该程序段后,a的值为________。
A) 12 B) 11
C) 10 D) 编译出错
4
B
7. 对于基类型相同的两个指针变量之间,不能进行的运算是
A) < B) =
C) + D) –
C
8. 以下函数返回a所指数组中最小值所在的下标值
fun( int *a,int n)
{ int i,j=0,p;
p=j;
for(i=j;i return (p); } 5 在下划线处应填入的是________。 A) i=p; B) a[p]=a[i]; C) p=j; D) p=i; D 9. 有以下函数 char *fun(char *p) { return p; } 该函数的返回值是________。 A) 无确切的值 B) 形参p中存放的地址值C) 一个临时存储单元的值 D) 形参p自身的地址值 B 10. 有如下说明 int a[10]=[1,2,3,4,5,6,7,8,9,10},*p=a; 6 则数值为9的表达式是________。 A) *(p+9) B) *(p+8) C) *p+=9 D) p+8 B 11. 有如下程序 main() { char s[]=\"ABCD\ for(p=s+1;p 该程序的输出结果是________。 A) ABCD B) A BCD B CD C 7 D D C) B D) BCD C CD D D D 12. 下列程序的输出结果是 main() { char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(\"%d\ } A) 非法 B) a[4]的地址 C) 5 D) 3 C 8 13. 下面程序的输出结果是 main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf(\"%d\\n\ } A) 0 B) 1 C) 10 D) 9 C 14. 当调用函数时,实参是一个数组名,则向函数传送的是________。A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 B 9 15. 设有定义语句\"int a=3,b,*p=&a;\",则下列语句中使b不为3的语句是 A) b=*&a; B) b=*p; C) b=a; D) b=*a ; D 16. 设指针x指向的整型变量值为25,则printf(\"%d\\n\",++*x);的输出是: A) 23 B) 24 C) 25 D) 26 D 17. 若有说明语句\"int i,j =7,*p=&i;\",则与i=j等价的语句是 A) i=*p; B) *p=*&j; C) i=&j; D) i=**p ; B 18. 若有说明语句\"int a[10],*p=a;\",对数组元素的正确引用是 10 A) a[p] B) p[a] C) *(p+2) D) p+2 C 19. 下列各语句行中,能正确进行赋字符串操作的语句是 A) char s[5]={\"ABCDE\; B) char s[5]={'A' ,'B','C','D','E'}; C) char *s; s=\"ABCDE\"; D) char *s; scanf(\"%s\; C 20. 若有以下定义语句,则不能表示a数组元素的表达式是 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;A) *p B) a[10] C) *a D) a[p-a] 11 B 21. 若有以下定义语句,则值为3的表达式是 int a[ ]={1,2,3,4,5,6,7,8,9,10},*p=a; A) p+=2 ,*(p++) B) p+=2,*++p C) p+=3 , *p++ D) p+=2,++*p A 22. 执行语句\"char a[10]={\"abcd\,*p=a;\"后,*(p+4)的值是 A) \"abcd\" B) 'd' C) '\\0' D) 不能确定 C 23. 设有定义语句\"int (*ptr)[10];\",其中的ptr是 A) 10个指向整型变量的指针 B) 指向10个整型变量的函数指针 12 C) 一个指向具有10个元素的一维数组的指针 D) 具有10个指针元素的一维数组 http://zhidao.baidu.com/link?url=pofNuhgjB9g8D0eU70Tv6mHHXBdg00k8DB1CMsA9LRSJMZv2zCDzKmsiqsXnSQ9ji4D4-uzx_abO_MHgLDLaVK C 24. 若有以下定义,则数组为4的表达式是 int a[3][4]={{0,1},{2,4},{5,8}},(*p)[4]=a; A) *a[1]+1 B) p++,*(p+1) C) a[2][2] D) p[1][1] D 25. 若有下面的程序片段,则对数组元素的错误引用是 int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p; 13 A) pp[0][1] B) a[10] C) p[3][1] D) *(*(P+2)+2) C 26. 若有如下定义和语句,则输出结果是 int **pp,*p,a=10,b=20; pp=&p;p=&a;p=&b;printf(\"%d,%d\\n\",*p,**pp);A) 10,20 B) 10,10 C) 20,10 D) 20,20 D 27. 若有以下定义和语句,则对w数组元素的非法引用是 int w[2][3],(*pw)[3];pw=w; A) *(w[0]+2) B) *pw[2] C) pw[0][0] D) *(pw[1]+2) 14 B 28. 若有如下定义和语句,则输出结果是 char *a=\"ABCD\";printf(\"%s\",a); A) A B) AB C) ABC D) ABCD D 29. 设有两条语句\"int a,*p=&a;\"和\"*P=a;\",则下列说法中正确的是 A) 两条语句中的\"*P\"含义完全相同 B) 两条语句中的\"*P=&a\"和\"*p=a\"功能完全相同 C) 第1条语句中的\"*P=&a\"是定义指针变量P并对其初始化 D) 第2条语句中的\"*P=a\"是将a的值赋予变量P C 15 30. 设有定义语句\"int x,*p=&x;\",则下列表达式中错误的是 A) *&x B) &*x C) *&P D) &*P B 31. 设有定义语句\"float s[10],*p1=s,*p2=s+5;\",下列表达 式中错误的是 A) p1=0xffff B) p2-- C) p1-P2 D) p1<=p2 A 32. 设有下列定义语句\"char s[ ]={\"12345\,*p=s;\",下列表达 式中错误的是 A) *(p+2) B) *(s+2) C) p=\"ABCD\" D) s=\"ABC\" 16 D 33. 设有定义语句\"double d[3][5]={{1},{2},{3}},(*p)[5]=d;\", 则下列表达式中值不为0.0的表达式是 A) *&d[1][2] B) p[1][2] C) *(p+1*5+2) D) *(*p+1)+2) C 34. 设有定义语句\"char s[3][20],(*p)[20]=s;\",则下列语句中 错误的是: A) scanf(\"%s\",s[2]); B) gets(*(p+2)); C) scanf(\"%s\; D) gets(s[2][0]); D 35. 下列程序执行后输出的结果是 main() 17 {char *a[6]={\"AB\",\"CD\",\"EF\",\"GH\",\"IJ\",\"KL\; int i; for(i=0;i<4;i++) printf(\"%s\",a[i]); printf(\"\\n\"); } A) ACEG B) ABCDEFGH C) EGIK D) EFGHIJKL B 36. 下面的变量定义中,不正确的是 A) char *p=\"string\"; B) int a[ ]={'A','B','C'}; C) float *q=&b,b; D) double a,*r=&a; C 18 37. 设有变量定义语句\"int k=2,*p=&k,*q=&k;\"则下列表达式中 错误的是 A) k=*P+*q B) k=p+q C) p=q D) *P=*P*(*q) B 38. 设有变量定义语句\"int a[2][3];\",能正确表示数组a中元素 地址的表达式是 A) a[1]+3 B) *(a+2) C) *(a[1]+2) D) *(a+1) D 39. 设有变量定义语句\"int b[5];\", 能正确引用数组b中元素的 表达式是 A) *&b[5] B) b+2 19 C) *(b+2) D) *(*(b+3)) C 40. 执行下列程序段后,变量w和*p的值是 int b[ ]={2,3,5,9,11,13},*p=b; w=++(*++p); A) 3和3 B) 4和3 C) 3和4 D) 4和4 D 41. 设有变量定义语句\"double b[5],*pb=b;\",能正确表示b数组 中的元素的地址表达式是 A) b B) pb+5 C) &b[5] D) &b A 20 42. 设有变量定义 char *lang[ ]={\"FOR\",\"BAS\",\"JAVA\",\"C\; 表达式 *lang[1]>*lang[3]的值是 A) 0 B) 1 C) 非零 D) 负数 A 43. 已有函数说明\"int min(int a,int b);\",为了让函数指针p指 向函数min,正确的赋值方式是 A) p=&min B) p=min C) *P=min D) *P=&min B 44. 一个能指向具有5个整型元素的一维数组指针的正确定义方式是A) int (*p)[5]; B) int *p[5]; 21 C) int (*p[5]); D) int *(p[5]); A 45. 若有说明语句 \"int a[2][4]={2,4,6,8,10,12,14,16},*p=a[0];\",则表达式*(*(a+1)+2)**(p+1)的值是 A) 140 B) 80 C) 56 D) 48 C 46. 若有说明语句 \"char s[ ]={'A','B','C','D'},*p=s,c;\", 则执行语句\"c=++*++p;\"后,变量c的值 A) 'A' B) 'B' C) 'C' D) 'D' 22 D 47. 若有说明语句 \"int a[5]={2,3,5,7,11},*p=a+4;\", 下列不能正确引用数组a的元素的表达式是 A) *(--p) B) *(p--) C) *(p++) D) *(++p) D 48. 若有变量定义语句 \"int a[ ]={1,3,5,7,9,11,13},x,*p=a+2;\",在以下表达式中,使变量x的值为5的表达式是 A) x=*(p+++1) B) x=*(--p) C) x=*(++p) D) x=*(p--) D 23 49. 若有变量定义语句\"int a[4][3],*p=a[2];\" 则表达式指向的数组元素是 A) a[0][1] B) a[1][1] C) a[2][2] D) a[3][0] C 50. 若已定义: int a[ ]={0,1,2,,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是 A) a[p-a] B) *(&a[i]) C) P[i] D) a[10] D 51. 下列程序执行后的输出结果是 void func(int *a,int b[ ]) 24 {b[0]=*a+6;} main() {int a,b[5]; a=0;b[0]=3; func(&a,b);printf(\"%d\\n\",b[0]);} A) 6 B) 7 C) 8 D) 9 A 52. 下列程序的输出结果是 int b=2; int func(int *a) {b+=*a;return(b);} main() 25 {int a=2,res=2; res+=func(&a); printf(\"%d\\n\",res); } A) 4 C) 8 B 53. 请选出正确的程序段 A) int *p; scanf(\"%d\",p); . . . B) 6 D) 10 B) int *s,k;*s=100; . . . 26 C) int *s,k; D) int *s,k; char *p,c; char *p,c; s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; *s=1; . . . . . . C . 已知指针P的指向如下图所示,则执行语句*--P;后*P的值是:a[0] a[1] a[2] a[3] a[4] ┌──┬──┬──┬──┬──┐ 27 │10│20│30│40│50│ └──┴──┴──┴──┴──┘ p↑ A) 30 B) 20 C) 19 D) 29 B 55. 下列程序的输出结果是: void fun(int *x,int *y) {printf(\"%d%d\",*x,*y);*x=3;*y=4;} main() {int x=1,y=2; fun(&y,&x); printf(\"%d%d\",x,y); 28 } A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 A 56. 下列程序的输出结果是 main() {char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf (\"%d\",*--p); } A) 非法 B) a[4]的地址 C) 5 D) 3 C 57. 有如下程序段 29 int *p,a=10,b=1; p=&a;a=*p+b; 执行该程序段后,a的值为 A) 12 B) 11 C) 10 D) 编译出错 B 59. 以下函数返回a所指数组中最小值所在的下标值 fun(int *a,int n) {int i,j=0,p; p=j;}
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务