您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页C语言指针选择题

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]

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;iif( *(a+i)<*(a+p) )_______________;

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;

for(i=j;iif(a[i]return(p);

30

}

在下划线处应填入的是:

A) i=p B) a[p]=a[i]

C) p=j D) p=i

D

60. 有如下说明

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

61. 以下程序的运行结果是

#include \"stdio .h\"

31

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 %d\\n\",*p,*q);

}

A) 运行后报错 B) 6 6

C) 6 11 D) 5 5

C

62. 下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件

表达式应该是

main()

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

32

for(i=0;i<10;i++,p++)

if( )*a=*p;

printf(\"%d\",*a);

}

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

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

B

63. 以下程序的输出结果是:

#include

main()

{char *a=\"abcdefghi\";int k;

fun(a);puts(a);

}

33

fun(char *s)

{int x,y;char c;

for(x=0,y=strlen(s)-1;x{c=s[y];s[y]=s[x];s[x]=c;}

}

A) ihgfedcba B) abcdefghi

C) abcdedcba D) ihgfefghi

A

. 以下程序的输出结果是

main()

{char ch[3][4]={\"123\",\"456\",\"78\,*p[3];int i;

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

34

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

}

A) 123456780 B) 123 456 780

C) 12345678 D) 147

C

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

#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(\"%d\\n\",*p);

}

35

f(int *s,int p[ ][3])

{*s=p[1][1];}

A) 1 B) 4

C) 7 D) 5

D

66. 以下程序的输出结果是:

main()

{char *s=\"12134211\";

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;

36

case '3':i=2;

case '4':i=3;

}

v[i]++;

}

for(k=0;k<4;k++) printf(\"%d }

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

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

#include

main()

\",v[k]);0 8

8 8

37

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

p1=\"abcd\";p2=\"efgh\";

strcpy(str+1,p2+1);strcpy(str+3,p1+3);

printf(\"%s\",str);

}

A) AfghdEFG B) Abfhd

C) Afghd D) Afgd

D

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

A) p+1 B) a+1

C) a++ D) ++P

C

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

38

main()

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

int i;i=8;p=a+i;

printf(\"%s\\n\",p-3);

}

A) 6 B) 67

C) '6' D) 7

B

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

main()

{int a[3][3],*p;p=&a[0][0];

for(i=0; i<9;i++) p[i]=i+1;

printf(\"%d\\n\

39

}

A) 3 B) 6

C) 9 D) 随机数

B

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

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

main()

{int a,b[5];a=0;b[0]=3;

func(&a,b);

printf(\"%d\\n\

}

A) 6 B) 7

C) 8 D) 9

40

A

72. 下列程序运行后的输出结果是

void fun(int *x,int *y)

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

main()

{int x=1,y=2;

fun(&x,&y);

printf(\"%d %d\

}

A) 2 1 4 3 B) 1 2 1 2

C) 1 2 3 4 D) 2 1 1 2

C

73. 下列程序的输出结果是

41

main()

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

p=a;printf( \"%d\\n\",*p+9);

}

A) 0 B) 1

C) 10 D) 9

C

74. 以下程序运行后,输出的结果是

main()

{char *s=\"abcde\";s+=2;printf(\"%ld\\n\",s);}

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

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

C

42

75. 现已定义:char b[5],*p=b;下列正确的赋值语句是

A) b=\"abcd\"; B) *b=\"abcd\";

C) p=\"abcd\"; D) *p=\"abcd\";

C

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

C) s[2]=p[4]; D) *p=s[0];

B

77. 现有定义语句:char **s;下列正确的赋值语句是

A) s=\"computer\"; B) *s=\"computer\";

C) **s=\"computer\"; D) *s='A';

B

78. 现有定义语句:char *p,* q;下列正确的赋值语句是

43

A) p*=3; B) p/=q;

C) p+=3; D) p+=q;

C

79. 说明语句\"int (*p)();\"的含义是

A) P是一个指向一维数组的指针变量

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

C) P是一个指向函数的指针,该函数的返回值为整型

D) 以上答案都不对

C

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

int i;

char *s=\"a\\045+045\\'b\";

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

44

A) 7 B) 8

C) 9 D) 10

B

81. 已知定义\"int a[ ]={1,2,3,4},y,*p=&a[1];\"

执行y=(*- -p)++后,y的值是

A) 0 B) 1

C) 2 D) 3

B

82. 已知定义\"int b[ ]={1,2,3,4},y,*p=b;\"

执行y=*p++后,y的值是

A) 1 B) 2

C) 3 D) 4

A

45

83. 已知定义\"char *a,b[5];\",并执行了a=malloc(80);之后,

以下语句中正确的是

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

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

D

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

A) P是一个指针数组,其数组的每一个元素是指向字符的指针

B) P是一个指针,指向一个数组,数组的元素为字符型

C) A和B均不对,但它是C语言正确的语句

D) C语言不允许这样的说明语句

A

85. 若有以下说明和语句,且0<=i<10,则对数组元素的错误引用是

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

46

p=a;

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

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

C

86. 若有以下说明和语句,且0int 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])

C

87. 在以下说明中,标识符prt是

int (*prt)[3];

A) 说明不合法

47

B) 是一指针数组名,每个元素是一个指向整型变量的指针

C) 是一个指针,它指向一个具有三个整型元素的一维数组

D) 是一个指向整型变量的指针

C

88. 下列程序的输出结果是

#include

main( )

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

p=a;

*(p+3)+=2;

printf(\"%d,%d\\n\

}

A) 0,5 B) 1,5

48

C) 0,6 D) 1,6

D

. 与以下说明语句等价的说明语句是

int *p[4];

A) int p[4]; B) int *p;

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

C

90. 若有说明语句\"int 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)

B

91. 若有说明语句\"int a[4][3],b[3][4],(*prt) [3];\",49

且0<=i<3,则下列正确的赋值语句是

A) prt=a; B) prt=b;

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

A

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

# 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 (\"%d\\n\

}

A) 输出项不合法,输出结果确定 B) 6

50

C) 8 D) 12

D

93. 若在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)

51

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

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

D

94. 下列程序的输出结果是

#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);

52

printf(\"%d\\n\

}

A) 10 B) 26

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

B

95. 若有以下说明和语句,则对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]

A

53

96. 若在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], D) **pa, a, B

97. 下列程序的输出结果是

char s[ ]=\"ABCD\";

main()

{char *p;

for(p=s;pprintf(\"%s\\n\

}

*(*(pa+i)+j)

p

55

A) ABCD B) A

ABC B

AB C

A D

C) D D) ABCD

C BCD

B CD

A D

D

98. 若有以下说明和语句,其输出结果是

char *s=\"\\\v\\\\\\owill\\n\";

printf(\"%d\",strlen(s));

A) 14 B) 3

56

C) 9 D) 10

B

99. 若有以下说明和语句,其输出结果是

char *sp=\"\\\"D:\\\\ANI.WPS\\\"\" ;

printf(\"%s\",sp);

A) 字符串中有非法字符,输出值不定

B) \\\"D:\\\\ANI.WPS\\\"

C) \"D:\\ANI.WPS\"

D) \"D:\\\\ANI.WPS\"

C

100. 若有以下说明和语句,其输出结果是char *sp=\"\\x69\\082\\n\";

printf(\"%d\",strlen(sp));

57

A) 3 B) 5

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

A

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

char *a[6]={\"ABCD\",\"EFGH\",\"IJKL\",\"MNOP\", \"QRST\",\"UVWX\;

char **p;

main ()

{ int i;

p=a;

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

printf(\"%c\ *(p[i]));

printf(\"\\n\");

58

}

A) AEIM B) BFJN

C) ABCD D) DHLP

A

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

A) *strp B) *(strp+i)

C) strp[i] D) strp

D

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

main ()

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

59

}

A) 3 B) 4

C) 1 D) 2

A

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

#include

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

{printf(\"%d,%d,%d\\n\

}

int a=10,c=20,b=40;

main()

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

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

60

}

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

B

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

#include

#include

main( )

{char *p=\"abc\ str[50]=\"xyz\";

strcpy(str+2,strcat(p1,p2));

printf(\"%s\\n\

61

}

A) xyzabcABC B) zabcABC

C) yzabcABC D) xyabcABC

D

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

void prtv(int *x)

{printf(\"%d\\n\",++*x);}

main()

{int a=25;

prtv(&a);

}

A) 23 B) 24

C) 25 D) 26

62

D

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

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(\"%d\\n\

}

A) 60 B) 68

C) 99 D) 108

A

63

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

char s1[4]=\"12\";

char *ptr;

ptr=s1;

printf (\"%c\\n\",*(ptr+1));

A) 字符'2' B) 字符'1'

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

A

109. 执行下列程序段后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) 无定值

C

110. 执行下列程序段后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)A) 10 B) 7

C) 4 D) 6

65

A

111. 执行以下程序段后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) 无定值

A

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

static char a[ ]=\"program\";

char *ptr;

ptr =a;

66

for(;ptrputchar(*ptr);

A) program B) porm

C) por D) 有语法错误

B

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

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

int k;

ptrl=a;ptr2=b;

for(k=0;k<7;k++)

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

printf(\"%c\

67

A) gae B) ga

C) language D) 有语法错误

B

114. 以下程序段执行后,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

A

115. 执行以下程序段后的输出结果是

static char a[]=\"language\";

68

char *ptr;

ptr=a;

while(*ptr)

{printf(\"%c\",*ptr-32);

ptr++;

}

A) LANGUAGE B) 陷入死循环

C) language D) 有语法错误

A

116. 下列程序的运行结果是

main ()

{char *letter[5]={\"ab\;char **ptr;

69

int i;

ptr=letter;

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

printf(\"%s\

printf(\"\\n\");

}

A) abef B) abefg

C) abefghijkmnop D) abefghijkmnopst

C

117. 下列程序的运行结果是

#include

main( )

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

70

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(\"%d\\n\

printf(\"%d\\n\

}

A) 12 9 C) 21 15 A

B) 3

27

21

71

D) 9

118. 下列程序中有两个printf语句,如果第一个printf语句输出的

是194,则第二个printf 语句的输出结果是

#include

main( )

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

p=a;

printf(\"%x\\n\

printf(\"%x\\n\

}

A) 203 B) 204

C) 1a4 D) 1a6

D

119. 若有定义语句\"char *aa[2]={\"abcd\",\"ABCD\;\则以下说法中72

正确的是

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

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

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

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

C

120. 下列程序的输出结果是

main()

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

p=a;k=&p;

printf(\"%d \

printf(\"%d\\n\

73

}

A) 4 4 B) 4 2

C) 2 4 D) 4 6

C

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

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(\"%d\\n\",y);

}

74

A) 17 B) 18

C) 19 D) 20

C

122. void fun( );

fun(pa,&c);

printf(\"%.2f\\n\

}

void fun (float b[M][N], {int i,j;

*p=b[0][0];

for(i=0;ifor(j=0;jif(*pfloat *p)

75

*p=b[i][j];

return;

}

A) -12.50 B) -12.5

C) -18.70 D) -18.7

C

123. 假设已有如下定义语句

char c[8]=\"Tianjin\",*s=c;

int i;

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

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

printf(\"%c\ printf(\"%c\

76

B

124. 假设已有定义语句\"char a[10],*p=a;\",则下面的赋值

语句中,正确的是

A) a[10]=\"Turbo c\"; B) a=\"Turbo c\";

C) *p=\"Turbo c\"; D) p=\"Turbo c\";

D

125. 下列程序的输出结果是

#include

#iinclude

main( )

{char *s1=\"Abcdef\",*s2=\"aB\";

s1++; s2++;

printf(\"%d\\n\",strcmp(s1,s2));

77

}

A) 正整数 B) 负数

C) 零 D) 不确定的值

A

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

#include

main( )

{int a[]={2,4,6,8},*p=a, i;

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

a[i]=*p++;

printf(\"%d\\n\

}

A) 6 B) 8

78

C) 4 D) 2

A

127. 下列程序的输出结果是

main()

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

z=(*(p+y)printf(\"%d\\n\

A) 2 C) 6 C

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

main()

x=8, y, z;

B) 4

79

D) 8

{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(\"%d \ break;

case 3: printf(\"%d \

}

}

}

A) 9 9 11 B) 9 11 11

C) 7 7 9 D) 7 9 9

A

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

80

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(\"%d\\n\

}

A) 25 C) 72 B

130. 下列程序的输出结果是

main()

B) 60

81

D) 86

{char *p[4]={\"abcd\",\"efgh\",\"ijkl\",\"mnop\;

int i;

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

printf(\"%s\

printf(\"\\n\");

}

A) ab C) abef D

131. 下列程序的输出结果是

fun(int **s,int p[2][3])

{**s=p[1][1];}

main()

B) ae

82

D) abcdefgh

{int a[2][3]={1,3,5,7,9,11},*p;

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

fun(&p,a);

printf(\"%d\\n\

}

A) 1 C) 9 C

132. 下列程序的输出结果是

int a[3][3]={{2},{4},{6}};main()

{int i,*p=&a[0][0];

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

B) 7

83

D) 11

{if(i==0)

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

else

++p;

printf(\"%d\

}

}

A) 23 B) 26

C) 33 D) 36

A

133. 下面的程序,调用findmax函数求出数组中最大元素在数组中的下标。请选择正确的内容填入________中。

#include

84

findmax (s,t,k)

int *s,t,*k;

{int p;

for(p=0, *k=p; pif(s[p]>s[*k])___________;

}

main( )

{int a[10],i,k;

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

scanf(\"%d\

findmax(a,10,&k);

printf(\"%d,%d\\n\

}

85

A) k=p B) *k=p

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

B

134. 下列程序的输出结果是

main()

{char ch[2][5]={\"6937\",\"82\,*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(\"%d\\n\

86

}

A) 69825 B) 63825

B) 6385 D) 693825

C

135. 请选出正确的程序段

A) int *p; scanf(\"%d\",p); . . . C) int *s,k; Char *p,c; s=&k; B) int*s,k;

*s=100;

.

.

.

*s,k; char *p,c; s=&k;

87

D) int

p=&c; p=&c;

*p='a'; s=p;

. s=1;

. .

. .

.

C

136. 下列程序的输出结果是

int b=2;

int func(*a)

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

main()

{int a=2,res=2;

88

res+=func(&a);

printf(\"%d\\n\

}

A) 4 B) 6

C) 8 D) 10

B

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

void func(int *a,int b[])

{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

138. 若有以下定义和语句\"double r=99,*p=&r;*p=r;\

则以下正确的叙述是

A) 以上两处的*p含义相同,都说明给指针变量p赋值

B) 在\"double r=99,*p=&r;\"中,把r 地址赋给了p

所指的存储单元

C) 语句\"*p=r;\"把变量r的值赋给指针变量p

D) 语句\"*p=r;\"取变量r的值放回r中

D

90

139. 以下程序执行后,a的值是

main()

{int a,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

printf(\"%d\\n\

}

A) 4 B) 1

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

C

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

int fun(int x,int y,int *cp,int *dp)

{*cp=x+y;*dp=x-y;}

main ()

91

{int a,b,c,d;

a=30;b=50;

fun(a,b,&c,&d);

printf(\"%d,%d\\n\

}

A) 50,30 B) 30,50

C) 80,-20 D) 80,20

C

141. 执行以下程序段后,m的值为

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

int m,*p;

p=&a[0][0];

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

92

A) 15 B) 14

C) 13 D) 12

A

142. 设有如下定义:

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

int *ptr;

则下列程序的输出结果为

ptr=arr;

*(ptr+2)+=2;

printf(\"%d,%d\\n\",*ptr,*(ptr+2));A) 8,10 B) 6,8

C) 7,9 D) 6,10

D

93

143. 设p1和p2是指向同一个int型一维数组的指针变量,

k为int型变量,则不能正确执行的语句是

A) k=*p1+*p2; B) p2=k;

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

B

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

char *s1=\"12345\",*s2=\"1234\";

printf(\"%d\\n\",strlen(strcpy(s1,s2));

则输出结果是

A) 4 B) 5

C) 9 D) 10

A

145. 若有以下定义:

94

char s[20]=\"programming\",*ps=s;

则不能代表字符o的表达式是

A) ps+2 B) s[2]

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

A

146. 若有以下说明,则数值为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

C

147. 若有说明:\"int i,j=7,*p=&i;\则与i=j;等价的语句是

A) i=*p; B) *p=*&j;

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

95

B

148. 执行以下程序后,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(\"%d\\n\

}

A) 17 B) 18

C) 19 D) 20

C

96

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

main()

{char ch[2][5]={\"6934\",\"82\,*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(\"%d\\n\

}

A) 6385 B) 69825

C) 63825 D) 693825

A

150. 下列程序的输出结果是

97

main()

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

p1=\"abcd\";p2=\"ABCD\";

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

printf(\"%s\",str);

}

A) xyabcAB B) abcABZ

C) Ababxy D) xyabcBCD

D

98

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务