C语言指针章节选择题

更新时间:2024-01-16 07:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言指针章节选择题(答案在最后)

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]

2. 已知指针p的指向如下图所示,则执行语句*--p;后*p的值是B

a[0] a[1] a[2] a[3] a[4]

┌──┬──┬──┬──┬──┐ │ 10 | 20 | 30 │ 40 | 50 |

└──┴──┴──┴──┴──┘ p↑

A) 30 B) 20 C) 19 D) 29

3. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的 结果是______C__。 main( )

{ int a,b,*pa,*pb; pa=&a; pb=&b;

scanf(\ *pa=a+b; *pb=a+b;

printf(\ }

A) a=13,b=13 B) a=8,b=8 C) a=8,b=13 D) 出错

4. 下面程序段的输出结果是____B____。 main( )

{ char string1[20],string2[20]={\ strcpy(string1,string2); printf(\ }

A) EF B) DEF

C) CDEF D) ABCDEF

5. 下列程序执行后的输出结果是___B_____。 main()

{ int a[3][3],i,*pmul;

pmul=&a[0][0];

for(i=0;i<9;i++) pmul[i]=i+1; printf(\ }

A) 3 B) 6

C) 9 D) 随机数

6. 有如下程序段 int *p,a=10,b=1; p=&a; a=*p+b;

执行该程序段后,a的值为________。 A) 12 B) 11

C) 10 D) 编译出错

7. 对于基类型相同的两个指针变量之间,不能进行的运算是 A) < B) = C) + D) –

8. 以下函数返回a所指数组中最小值所在的下标值 fun( int *a,int n) { int i,j=0,p; p=j;

for(i=j;i

if( *(a+i)<*(a+p) )_______________; return (p); }

在下划线处应填入的是________。 A) i=p; B) a[p]=a[i]; C) p=j; D) p=i;

9. 有以下函数

char *fun(char *p) { return p; }

该函数的返回值是________。

A) 无确切的值 B) 形参p中存放的地址值 C) 一个临时存储单元的值 D) 形参p自身的地址值

10. 有如下说明

int a[10]=[1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是________。 A) *(p+9) B) *(p+8) C) *p+=9 D) p+8

11. 有如下程序 main()

{ char s[]=\

for(p=s+1;p

}

该程序的输出结果是________。 A) ABCD B) A BCD B CD C D D

C) B D) BCD C CD D D

12. 下列程序的输出结果是 main()

{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(\ }

A) 非法 B) a[4]的地址 C) 5 D) 3

13. 下面程序的输出结果是 main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(\ }

A) 0 B) 1 C) 10 D) 9

14. 当调用函数时,实参是一个数组名,则向函数传送的是________。 A) 数组的长度 B) 数组的首地址

C) 数组每一个元素的地址 D) 数组每个元素中的值

15. 设有定义语句\ a=3,b,*p=&a;\,则下列语句中使b不为3的语句是 A) b=*&a; B) b=*p; C) b=a; D) b=*a ;

16. 设指针x指向的整型变量值为25,则printf(\,++*x);的输出是: A) 23 B) 24 C) 25 D) 26

17. 若有说明语句\ i,j =7,*p=&i;\,则与i=j等价的语句是 A) i=*p; B) *p=*&j; C) i=&j; D) i=**p ;

18. 若有说明语句\ a[10],*p=a;\,对数组元素的正确引用是 A) a[p] B) p[a]

C) *(p+2) D) p+2

19. 下列各语句行中,能正确进行赋字符串操作的语句是 A) char s[5]={\;

B) char s[5]={'A' ,'B','C','D','E'}; C) char *s; s=\; D) char *s; scanf(\;

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]

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

22. 执行语句\ a[10]={\,*p=a;\后,*(p+4)的值是 A) \ B) 'd'

C) '\\0' D) 不能确定

23. 设有定义语句\;\,其中的ptr是 A) 10个指向整型变量的指针

B) 指向10个整型变量的函数指针

C) 一个指向具有10个元素的一维数组的指针 D) 具有10个指针元素的一维数组

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]

25. 若有下面的程序片段,则对数组元素的错误引用是 int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p;

A) pp[0][1] B) a[10]

C) p[3][1] D) *(*(P+2)+2)

26. 若有如下定义和语句,则输出结果是 int **pp,*p,a=10,b=20;

pp=&p;p=&a;p=&b;printf(\,%d\\n\,*p,**pp); A) 10,20 B) 10,10 C) 20,10 D) 20,20

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)

28. 若有如下定义和语句,则输出结果是 char *a=\;printf(\,a); A) A B) AB C) ABC D) ABCD

29. 设有两条语句\ a,*p=&a;\和\;\,则下列说法中 正确的是

A) 两条语句中的\含义完全相同

B) 两条语句中的\和\功能完全相同

C) 第1条语句中的\是定义指针变量P并对其初始化 D) 第2条语句中的\是将a的值赋予变量P

30. 设有定义语句\ x,*p=&x;\,则下列表达式中错误的是 A) *&x B) &*x C) *&P D) &*P

31. 设有定义语句\ s[10],*p1=s,*p2=s+5;\,下列表达 式中错误的是

A) p1=0xffff B) p2--

C) p1-P2 D) p1<=p2

32. 设有下列定义语句\ s[ ]={\,*p=s;\,下列表达 式中错误的是

A) *(p+2) B) *(s+2)

C) p=\ D) s=\

33. 设有定义语句\ 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)

34. 设有定义语句\ s[3][20],(*p)[20]=s;\,则下列语句中 错误的是:

A) scanf(\,s[2]); B) gets(*(p+2)); C) scanf(\; D) gets(s[2][0]);

35. 下列程序执行后输出的结果是 main()

{char *a[6]={\,\,\,\,\,\; int i;

for(i=0;i<4;i++) printf(\,a[i]); printf(\; }

A) ACEG B) ABCDEFGH C) EGIK D) EFGHIJKL

36. 下面的变量定义中,不正确的是

A) char *p=\; B) int a[ ]={'A','B','C'}; C) float *q=&b,b; D) double a,*r=&a;

37. 设有变量定义语句\ k=2,*p=&k,*q=&k;\则下列表达式中 错误的是

A) k=*P+*q B) k=p+q

C) p=q D) *P=*P*(*q)

38. 设有变量定义语句\ a[2][3];\,能正确表示数组a中元素 地址的表达式是

A) a[1]+3 B) *(a+2) C) *(a[1]+2) D) *(a+1)

39. 设有变量定义语句\ b[5];\, 能正确引用数组b中元素的 表达式是

A) *&b[5] B) b+2

C) *(b+2) D) *(*(b+3))

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

41. 设有变量定义语句\ b[5],*pb=b;\,能正确表示b数组 中的元素的地址表达式是

A) b B) pb+5 C) &b[5] D) &b

42. 设有变量定义

char *lang[ ]={\,\,\VA\,\; 表达式 *lang[1]>*lang[3]的值是 A) 0 B) 1 C) 非零 D) 负数

43. 已有函数说明\ min(int a,int b);\,为了让函数指针p指 向函数min,正确的赋值方式是 A) p=&min B) p=min

C) *P=min D) *P=&min

44. 一个能指向具有5个整型元素的一维数组指针的正确定义方式是 A) int (*p)[5]; B) int *p[5]; C) int (*p[5]); D) int *(p[5]);

45. 若有说明语句

\ 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

46. 若有说明语句

\ s[ ]={'A','B','C','D'},*p=s,c;\, 则执行语句\;\后,变量c的值 A) 'A' B) 'B' C) 'C' D) 'D'

47. 若有说明语句

\ a[5]={2,3,5,7,11},*p=a+4;\, 下列不能正确引用数组a的元素的表达式是 A) *(--p) B) *(p--) C) *(p++) D) *(++p)

48. 若有变量定义语句

\ 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--)

49. 若有变量定义语句\ a[4][3],*p=a[2];\则表达式指向的数组元素是

A) a[0][1] B) a[1][1] C) a[2][2] D) a[3][0]

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]

51. 下列程序执行后的输出结果是 void func(int *a,int b[ ]) {b[0]=*a+6;} main()

{int a,b[5];

a=0;b[0]=3;

func(&a,b);printf(\,b[0]);} A) 6 B) 7 C) 8 D) 9

52. 下列程序的输出结果是 int b=2;

int func(int *a) {b+=*a;return(b);} main()

{int a=2,res=2; res+=func(&a);

printf(\,res); }

A) 4 B) 6 C) 8 D) 10

53. 请选出正确的程序段

A) int *p; B) int *s,k; scanf(\,p); *s=100; . . . . . .

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; . . . . . .

54. 已知指针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

55. 下列程序的输出结果是: void fun(int *x,int *y)

{printf(\,*x,*y);*x=3;*y=4;}

main()

{int x=1,y=2; fun(&y,&x);

printf(\,x,y); }

A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2

56. 下列程序的输出结果是 main()

{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf (\,*--p); }

A) 非法 B) a[4]的地址 C) 5 D) 3

57. 有如下程序段 int *p,a=10,b=1; p=&a;a=*p+b;

执行该程序段后,a的值为 A) 12 B) 11

C) 10 D) 编译出错

58. 以下函数返回a所指数组中最小值所在的下标值 fun(int *a,int n) {int i,j=0,p; p=j;

for(i=j;i

if(a[i]

在下划线处应填入的是:

A) i=p B) a[p]=a[i] C) p=j D) p=i

59. 有如下说明

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是:

A) *p+9 B) *(p+8) C) *p+=9 D) p+8 B

60. 以下程序的运行结果是 #include \main()

{int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL;

*q=*(p+5);

printf(\ %d\\n\,*p,*q); }

A) 运行后报错 B) 6 6 C) 6 11 D) 5 5

61. 下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件 表达式应该是 main()

{int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i; for(i=0;i<10;i++,p++) if( )*a=*p; printf(\,*a); }

A) P>a B) *P>a[0] C) *P>*a[0] D) *P[0]>*a[0]

62. 以下程序的输出结果是: #include main()

{char *a=\;int k; fun(a);puts(a); }

fun(char *s)

{int x,y;char c;

for(x=0,y=strlen(s)-1;x

A) ihgfedcba B) abcdefghi C) abcdedcba D) ihgfefghi

63. 以下程序的输出结果是 main()

{char ch[3][4]={\,\,\,*p[3]; int i;

for(i=0;i<3;i++) p[i]=ch[i];

for(i=0;i<3;i++) printf(\,p[i]); }

A) 123456780 B) 123 456 780 C) 12345678 D) 147

64. 以下程序的输出结果是 #include

int a[3][3]={1,2,3,4,5,6,7,8,9},*p; main()

{ p=(int*)malloc(sizeof(int));

f(p,a);

printf(\,*p); }

f(int *s,int p[ ][3]) {*s=p[1][1];}

A) 1 B) 4 C) 7 D) 5

65. 以下程序的输出结果是: main()

{char *s=\;

int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) {switch(s[k]) {case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; }

v[i]++; }

for(k=0;k<4;k++) printf(\ \,v[k]); }

A) 4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8

66. 以下程序的输出结果是 #include main()

{ char *p1,*p2,str[50]=\; p1=\;p2=\;

strcpy(str+1,p2+1);strcpy(str+3,p1+3); printf(\,str); }

A) AfghdEFG B) Abfhd C) Afghd D) Afgd

67. 若已定义:int a[9],*p=a;并在以后的语句中未改变P的值,不能表示a[1]地址的表达式是: A) p+1 B) a+1 C) a++ D) ++P

68. 以下程序的输出结果是 main()

{ char a[10]={'1','2','3','4','5','6','7','8','9',0},*P; int i;i=8;p=a+i; printf(\,p-3);

}

A) 6 B) 6789 C) '6' D) 789

69. 下列程序执行后的输出的结果是 main()

{int a[3][3],*p;p=&a[0][0]; for(i=0; i<9;i++) p[i]=i+1; printf(\}

A) 3 B) 6

C) 9 D) 随机数

70. 下列程序执行后的输出的结果是

void func(int *a,int b[ ]){b[0]=*a+6;} main()

{int a,b[5];a=0;b[0]=3; func(&a,b);

printf(\}

A) 6 B) 7 C) 8 D) 9

71. 下列程序运行后的输出结果是 void fun(int *x,int *y)

{printf(\,*x,*y);*x=3;*y=4;} main()

{int x=1,y=2; fun(&x,&y);

printf(\}

A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2

72. 下列程序的输出结果是 main()

{int a[ ]={1,2,3,4,5,6,7,8,9,0},*P; p=a;printf( \,*p+9); }

A) 0 B) 1 C) 10 D) 9

73. 以下程序运行后,输出的结果是 main()

{char *s=\;s+=2;printf(\,s);}

A) cde B) 字符C的ASCII码值

C) 字符C的地址 D) 出错

74. 现已定义:char b[5],*p=b;下列正确的赋值语句是 A) b=\; B) *b=\; C) p=\; D) *p=\;

75. 现已定义:char s[10],*p=s;下列不正确的赋值语句是 A) p=s+5; B) s=[p+5]; C) s[2]=p[4]; D) *p=s[0];

76. 现有定义语句:char **s;下列正确的赋值语句是 A) s=\; B) *s=\; C) **s=\; D) *s='A';

77. 现有定义语句:char *p,* q;下列正确的赋值语句是 A) p*=3; B) p/=q; C) p+=3; D) p+=q;

78. 说明语句\ (*p)();\的含义是 A) P是一个指向一维数组的指针变量

B) P是指针变量,它指向一个整型数据的指针

C) P是一个指向函数的指针,该函数的返回值为整型 D) 以上答案都不对

79. 下列程序段执行后,变量i的正确结果是 int i;

char *s=\; for(i=0;*s++;i++);

A) 7 B) 8 C) 9 D) 10

80. 已知定义\ a[ ]={1,2,3,4},y,*p=&a[1];\执行y=(*- -p)++后,y的值是 A) 0 B) 1 C) 2 D) 3

81. 已知定义\ b[ ]={1,2,3,4},y,*p=b;\执行y=*p++后,y的值是

A) 1 B) 2 C) 3 D) 4

82. 已知定义\ *a,b[5];\,并执行了a=malloc(80);之后, 以下语句中正确的是

A) scanf(\,*a); B) b=a;

C) b=\; D) a=\;

83. C语言的说明语句\ *p[5];\的 含义是

A) P是一个指针数组,其数组的每一个元素是指向字符的指针 B) P是一个指针,指向一个数组,数组的元素为字符型 C) A和B均不对,但它是C语言正确的语句 D) C语言不允许这样的说明语句

84. 若有以下说明和语句,且0<=i<10,则对数组元素的错误引用是 int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a;

A) *(a+i) B) a[p-a] C) p+i D) *(&a[i])

85. 若有以下说明和语句,且0

A) *(a+i) B) a[p-a] C) p+i D) *(&a[i]) C

86. 在以下说明中,标识符prt是 int (*prt)[3]; A) 说明不合法

B) 是一指针数组名,每个元素是一个指向整型变量的指针 C) 是一个指针,它指向一个具有三个整型元素的一维数组 D) 是一个指向整型变量的指针

87. 下列程序的输出结果是 #include main( )

{int a[ ]={1,2,3,4,5,6},*p; p=a;

*(p+3)+=2;

printf(\}

A) 0,5 B) 1,5 C) 0,6 D) 1,6

88. 与以下说明语句等价的说明语句是 int *p[4];

A) int p[4]; B) int *p; C) int *(p[4]); D) int(*p)[4]; C

89. 若有说明语句\ a[4][10];\且0<=i<4,0<=j<10, 则对数组元素a[i][j]的错误引用是

A) *(&a[0][0]+10*i+j) B) *(a+i)[j] C) (*(*a+i)+j) D) *(a[i]+j)

90. 若有说明语句\ a[4][3],b[3][4],(*prt) [3];\, 且0<=i<3,则下列正确的赋值语句是

A) prt=a; B) prt=b; C) prt=b[i]; D) prt=a[i];

91. 下面程序输出的结果是 # include main ( )

{int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3];

printf (\}

A) 输出项不合法,输出结果确定 B) 6 C) 8 D) 12

92. 若在C程序中有以下说明和语句,则下面表示的都是对数组元素 的正确引用的是(其中0<=i<4, 0<=j<3) main( )

{int a[4][3]={0},*ptr[3],i,j; ptr=a; . . . }

A) a[i][j], a[i]+j, *(*(a+i)+j) B) *(ptr+i)[j], ptr[i]+j, *(*(ptr+i)+j) C) *(ptr+i)[j], *(a+i)[j], *(ptr+i) D) ptr[i][j], *(ptr[i]+j),*(a[i]+j)

93. 下列程序的输出结果是 #include main()

{int a[20],*p[4],i,j,k=0; for(i=0;i<20;i++) a[i]=i;

for(i=0;i<4;i++) p[i]=&a[i*(i+1)]; for(i=0;i<4;i++) k=k+*(p[i]+i); printf(\}

A) 10 B) 26

C) 6 D) 数组元素引用不合法,输出结果不定

94. 若有以下说明和语句,则对a数组元素的错误引用是

int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p;

A) a[12] B) p[2][3] C) a[10] D) pp[0][1]

95. 若在C程序中有以下说明和语句,则能都表示a 数组元素的 地址的是(其中0<=i<4, 0<=j<3) main()

{int a[4][3]={0},*p[4],**pa,i,j; for (i=0; i<4;i++) p[i]=a[i]; . . . pa=p; . . . }

A) &a[i][j], p[i]+j, pa[i][j] B) *(pa+i)+j, p[i], *(p+i)+j

C) &a[j], &p[i], *(*(pa+i)+j) D) **pa, a, p

96. 下列程序的输出结果是 char s[ ]=\; main()

{char *p;

for(p=s;p

A) ABCD B) A ABC B AB C A D C) D D) ABCD C BCD B CD A D

97. 若有以下说明和语句,其输出结果是 char *s=\; printf(\,strlen(s));

A) 14 B) 3

C) 9 D) 10

98. 若有以下说明和语句,其输出结果是 char *sp=\:\\\\ANI.WPS\\\; printf(\,sp);

A) 字符串中有非法字符,输出值不定 B) \\\:\\\\ANI.WPS\\\C) \:\\ANI.WPS\D) \:\\\\ANI.WPS\

99. 若有以下说明和语句,其输出结果是 char *sp=\; printf(\,strlen(sp)); A) 3 B) 5

C) 1 D) 字符串中有非法字符,输出值不定

100. 下面程序的输出结果是

char *a[6]={\,\,\,\, \,\; char **p; main () { int i; p=a;

for(i=0;i<4; i++)

printf(\ *(p[i])); printf(\}

A) AEIM B) BFJN C) ABCD D) DHLP

101. 若有说明语句\ *strp=\;\,则对字符串 字符的错误引用是

A) *strp B) *(strp+i) C) strp[i] D) strp

102. 下面程序的输出结果是 main ()

{int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(\,*(p+2)); }

A) 3 B) 4 C) 1 D) 2

103. 下面程序的输出结果是 #include

void prt(int *x., int *y., int *z)

{printf(\}

int a=10,c=20,b=40; main()

{prt(&a,&b,&c); prt(&a,&b,&c); }

A) 11,42,31 B) 11,41,20 12,22,41 12,42,20 C) 11,21,40 D) 11,41,21 11,21,41, 12,42,22

104. 下面程序输出的结果是 #include #include main( )

{char *p=\ str[50]=\ strcpy(str+2,strcat(p1,p2)); printf(\}

A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC

105. 下面程序的输出结果是 void prtv(int *x)

{printf(\,++*x);} main()

{int a=25; prtv(&a); }

A) 23 B) 24 C) 25 D) 26

106. 下面程序的输出结果是 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=k+*(*(p+i)+j); printf(\}

A) 60 B) 68 C) 99 D) 108

107. 执行下列程序后的输出结果是

char s1[4]=\; char *ptr; ptr=s1;

printf (\,*(ptr+1));

A) 字符'2' B) 字符'1' C) 字符'2'的地址 D) 不确定

108. 执行下列程序段后y 的值是 static int a[ ]={1,3,4,5,7,9}; int x, y, *ptr; y=1;

ptr=&a[1];

for(x=0; x<3; x++) y*=*(ptr+x);

A) 105 B) 15

C) 60 D) 无定值

109. 执行下列程序段后m 的值是 static int a[ ]={7,4,6,3,10}; int m,k,*ptr; m=10; ptr=&a[0]; for(k=0; k<5; k++ )

m=(*ptr+k)

110. 执行以下程序段后s的值是

static int a[ ]={5,3,7,2,1,5,4,10}; int s=0,k;

for(k=0;k<8;k+=2) s+=*(a+k);

A) 17 B) 27

C) 13 D) 无定值

111. 以下程序段的输出结果是 static char a[ ]=\; char *ptr; ptr =a;

for(;ptr

A) program B) porm

C) por D) 有语法错误

112. 以下程序段的输出结果是

staric char a[]=\,b[]=\; char *ptrl,*ptr2;

int k;

ptrl=a;ptr2=b; for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k)) printf(\

A) gae B) ga

C) language D) 有语法错误

113. 以下程序段执行后,m的值是

static int a[2][3]={{1,2,3},{4,5,6,}}; int m,*ptr; ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4));

A) 15 B) 48 C) 24 D) 12

114. 执行以下程序段后的输出结果是 static char a[]=\; char *ptr; ptr=a; while(*ptr)

{printf(\,*ptr-32); ptr++; }

A) LANGUAGE B) 陷入死循环 C) language D) 有语法错误

115. 下列程序的运行结果是 main ()

{char *letter[5]={\; char **ptr; int i; ptr=letter;

for(i=0; i<4; i++) printf(\ printf(\}

A) abef B) abefg

C) abefghijkmnop D) abefghijkmnopst

116. 下列程序的运行结果是 #include main( )

{static int a[]={2,6,8,10,14,18};

static int *ptr[]={&a[0],&a[1],&a[2],&a[3],&a[4]}; int **p,i;

for(i=0;i<5;i++) a[i]=a[i]/2+a[i]; p=ptr;

printf(\ printf(\}

A) 15 B) 3 9 27 C) 21 D) 9 15 21

117. 下列程序中有两个printf语句,如果第一个printf语句输出的 是194,则第二个printf 语句的输出结果是 #include main( )

{int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(\printf(\}

A) 203 B) 204 C) 1a4 D) 1a6

118. 若有定义语句\ *aa[2]={\,\;\则以下说法中 正确的是

A) aa数组元素的值分别是\和\

B) aa是指针变量,它指向含有两个数组元素的字符型一维数组

C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的 首地址

D) aa数组的两个元素中各自存放了字符'a'和'A'的地址

119. 下列程序的输出结果是 main()

{int a[5]={2,4,6,8,10},*p,**k; p=a;k=&p;

printf(\printf(\}

A) 4 4 B) 4 2 C) 2 4 D) 4 6

120. 下列程序执行后输出的结果是 main()

{ int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x);

printf(\,y); }

A) 17 B) 18 C) 19 D) 20

121. void fun( ); fun(pa,&c);

printf(\}

void fun (float b[M][N], float *p) {int i,j; *p=b[0][0];

for(i=0;i

A) -12.50 B) -12.5 C) -18.70 D) -18.7

122. 假设已有如下定义语句 char c[8]=\,*s=c; int i;

则下面输出语句中,错误的是

A) printf(\,s); B) printf(\,*s); C) for(i=0;i<8;i++) D) for(i=0;i<8;i++) printf(\ printf(\

123. 假设已有定义语句\ a[10],*p=a;\,则下面的赋值 语句中,正确的是

A) a[10]=\ c\; B) a=\ c\; C) *p=\ c\; D) p=\ c\;

124. 下列程序的输出结果是 #include #iinclude main( )

{char *s1=\,*s2=\; s1++; s2++;

printf(\,strcmp(s1,s2)); }

A) 正整数 B) 负数

C) 零 D) 不确定的值

125. 下列程序的输出结果是 #include main( )

{int a[]={2,4,6,8},*p=a, i; for(i=0;i<4;i++) a[i]=*p++;

printf(\}

A) 6 B) 8 C) 4 D) 2

126. 下列程序的输出结果是 main()

{int a[]={2,4,6},*p=&a[0], x=8, y, z; for(y=0;y<3;y++)

z=(*(p+y)

A) 2 B) 4 C) 6 D) 8

127. 下面程序的输出结果是 main()

{int j,a[]={1,3,5,7,9,11,13,15},*p=a+5; for(j=3; j>0; j--) {switch(j) {case 1:

case 2: printf(\ break; case 3: printf(\ } } }

A) 9 9 11 B) 9 11 11 C) 7 7 9 D) 7 9 9

128. 下面程序的输出结果是 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); printf(\}

A) 25 B) 60 C) 72 D) 86

129. 下列程序的输出结果是 main()

{char *p[4]={\,\,\,\; int i;

for(i=0; i<2; i++) printf(\ printf(\}

A) ab B) ae

C) abef D) abcdefgh

130. 下列程序的输出结果是 fun(int **s,int p[2][3]) {**s=p[1][1];} main()

{int a[2][3]={1,3,5,7,9,11},*p; p=(int*)malloc(sizeof(int)); fun(&p,a);

printf(\}

A) 1 B) 7 C) 9 D) 11

131. 下列程序的输出结果是 int a[3][3]={{2},{4},{6}}; main()

{int i,*p=&a[0][0]; for(i=0;i<2;i++) {if(i==0)

a[i][i+1]=*p+1; else ++p;

printf(\ } }

A) 23 B) 26 C) 33 D) 36

132. 下面的程序,调用findmax函数求出数组中最大元素在数组中的下 标。请选择正确的内容填入________中。 #include findmax (s,t,k) int *s,t,*k; {int p;

for(p=0, *k=p; p

if(s[p]>s[*k])___________; }

main( )

{int a[10],i,k; for(i=0;i<10;i++) scanf(\ findmax(a,10,&k);

printf(\}

A) k=p B) *k=p C) k=p-s D) *k=p-s

133. 下列程序的输出结果是 main()

{char ch[2][5]={\,\,*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++)

for(j=0;p[i][j]>'\\0';j+=2) s=10*s+p[i][j]-'0'; printf(\}

A) 69825 B) 63825 B) 6385 D) 693825

134. 请选出正确的程序段

A) int *p; B) int*s,k; scanf(\,p); *s=100; . . . . . .

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; . . . . .

135. 下列程序的输出结果是 int b=2; int func(*a)

{b+=*a;return(b);}

main()

{int a=2,res=2; res+=func(&a); printf(\}

A) 4 B) 6 C) 8 D) 10 B

136. 下列程序执行后的输出结果是 void func(int *a,int b[]) {b[0]=*a+6;} main()

{int a,b[5]; a=0;b[0]=3; func(&a,b);

printf(\}

A) 6 B) 7 C) 8 D) 9 A

137. 若有以下定义和语句\ r=99,*p=&r;*p=r;\则以下正确的叙述是

A) 以上两处的*p含义相同,都说明给指针变量p赋值 B) 在\ r=99,*p=&r;\中,把r 地址赋给了p 所指的存储单元

C) 语句\;\把变量r的值赋给指针变量p D) 语句\;\取变量r的值放回r中

138. 以下程序执行后,a的值是 main()

{int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf(\}

A) 4 B) 1

C) 0 D) 运行时出错,a无定值

139. 以下程序的输出结果是

int fun(int x,int y,int *cp,int *dp) {*cp=x+y;*dp=x-y;} main ()

{int a,b,c,d; a=30;b=50; fun(a,b,&c,&d);

printf(\}

A) 50,30 B) 30,50 C) 80,-20 D) 80,20

140. 执行以下程序段后,m的值为 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; p=&a[0][0];

m=(*p)*(*(p+2)*(*(p+4));

A) 15 B) 14 C) 13 D) 12

141. 设有如下定义:

int arr[]={6,7,8,9,10}; int *ptr;

则下列程序的输出结果为 ptr=arr;

*(ptr+2)+=2;

printf(\,%d\\n\,*ptr,*(ptr+2)); A) 8,10 B) 6,8 C) 7,9 D) 6,10

142. 设p1和p2是指向同一个int型一维数组的指针变量, k为int型变量,则不能正确执行的语句是 A) k=*p1+*p2; B) p2=k;

C) p1=p2; D) k=*p1*(*p2);

143. 若有以下定义和语句:

char *s1=\,*s2=\; printf(\,strlen(strcpy(s1,s2)); 则输出结果是

A) 4 B) 5 C) 9 D) 10

144. 若有以下定义:

char s[20]=\,*ps=s; 则不能代表字符o的表达式是

A) ps+2 B) s[2]

C) ps[2] D) ps+=2,*Ps

145. 若有以下说明,则数值为6的表达式是

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; A) *p+6 B) *(p+6) C) *p+=5 D) p-5

146. 若有说明:\ i,j=7,*p=&i;\则与i=j;等价的语句是 A) i=*p; B) *p=*&j;

C) i=&j; D) i=**p;

147. 执行以下程序后,y的值是 main()

{int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1];

for(x=0;x<3;x++) y+=*(p+x); printf(\}

A) 17 B) 18 C) 19 D) 20

148. 下列程序的输出结果是 main()

{char ch[2][5]={\,\,*p[2]; int i,j,s=0; for(i=0; i<2; i++)

for (j=0;p[i][j]>'\\0'&& p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0'; printf(\}

A) 6385 B) 69825 C) 63825 D) 693825

149. 下列程序的输出结果是 main()

{char *p1,*p2,str[50]=\; p1=\;p2=\;

strcpy(str+2,strcat(p1+2,p2+1)); printf(\,str); }

A) xyabcAB B) abcABZ C) Ababxy D) xyabcBCD

答案:

1. D 2. B 3. C 4. B 10. B 11. D 12. C 13. C 19. C 20. B 21. A 22. C 28. D 29. C 30. B 31. A 37. B 38. D 39. C 40.D

5. B 6. B 15. D 23. C 24. D 32. D 33. C 41. A 42. A 7. C 8. D 16. D 17. B 25. C 26. D 34. D 35. B 43. B 44. A 9. B 18. C 27. B 36. C 45.C

14. B

本文来源:https://www.bwwdw.com/article/k4do.html

Top