C语言复习题 联系客服

发布时间 : 星期三 文章C语言复习题更新完毕开始阅读69ffcb4d59eef8c75fbfb3eb

63. 下面程序执行后输出是( B )。

#include void main()

{ int k=4,*p1=&k;

if (*p1==k) printf(\ else printf(\ }

A.4 B.1 C.0 D.运行时出错 64. 设有定义语句short x=12;假定分配给x的内存地址是0xff00和0xff01,则在程序中能表

示变量x地址的表达式是( A )。

A.&x B.&12 C.ff00 D.ff01

65. 设有定义语句int a,*pa=&a;和赋值语句*pa=a;,则下列说法正确的是( A )。

A.定义语句中的“*pa=&a”表示将a的地址赋给pa B.定义语句中的“*pa=&a”表示将a的值赋给pa C.赋值语句中的“*pa=a”表示将a的地址赋给pa D.赋值语句中的“*pa=a”表示将a的值赋给pa

66. 已有定义int k=2,*p1=&k,*p2=&k;下面不能正确执行的赋值语句是( B )。

A.k=*p1+*p2; B.p2=k; C.p1=p2; D.k=*p1*(*p2);

67. 若有语句int *p,a=4;和p=&a;下面均代表地址的一组选项是( D )。

A.a,p,*&a B.&*a,&a,*p C.*&p,*p,&a D.&a,&*p,p 68. 若有定义:int *p,m=5,n;以下正确的程序段是( D )。

A.p=&n;scanf(\ B.p=&n;scanf(\C.scanf(\ D.p=&n;*p=m; 69. 指出函数abc的作用是( D )。

void abc(char * s , char * t) { while( *t++ ) ; t-- ;

while ( *t++ = *s++ ) ; // 注:是单等号 }

A.求字符串长度 B.将字符串 t 复制到字符串s 中

C.比较字符串大小 D.将字符串s 连接到字符串t 的尾部 70. 若有定义:int *p1,*p2,m=5,n;以下均是正确赋值语句的选项是( C )。

A.p1=&m;p2=&p1; B.p1=&m;*p1=*p2; C.p1=&m;p2=p1; D.p1=&m;*p2=*p1; 71. 声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是( A )。

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

72. 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是

( D )。

void print_value(int *x) { printf(\

A.32 B.24 C.25 D.26 73. 下面程序的输出是( B )

#include “stdio.h” void fun(int *a,int b) {*a=13; b*=5; return;} void main()

{int x=12,y=12; fun(&x,y);

printf(“x=%d,y=%d\\n”,x,y); }

A.x=12,y=12 B.x=13,y=12 C.x=13,y=60 D.x=12,y=60 74. int a[] = {1,2,3}, *p, *q; p = a+1; q = p++;

执行该程序段后, p和q所指向的单元的内容分别为( C )。 A.(*p) = 1, (*q) = 2 B.(*p) = 2, (*q) = 3 C.(*p) = 3, (*q) = 2 D.以上都错

75. 和定义语句char *a=\功能完全相同的程序段是( C )。

A.char *a,a=\B.char *a;*a=\C.char *a;a=\D.char *a,*a=\76. 下列程序段的输出结果是( D )。 int t, a[3] = {10, 5, 1};

int *p;

for(p = a; p < a+3; p++) t = t + *p;

printf(\A.15 B.16 C.10 D.不确定

77. 设有定义语句int x[]={1,2,3},*p=x;则结果不是地址值的表达式是( C )。

A.p+1 B.x C.*p D.&x[0] 78. 执行下列程序段后,变量y的值为( D )。

int x[]={1,2,3,4},y,*p=&x[1]; y=(*--p)++;

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

79. 设有定义语句int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;则结果为8的表达式是( D )。 A.p+7 B.*p+8 C.*(p+8) D.*p+=7 80. 设变量定义为:int *p[3], a[3];,( C )是正确的赋值。 81. A.p = &a[0] B.*p = **a 82. C.p[0] = a D.**p = a 83. 执行下列程序段后,m的值为( D )。

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

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

A.12 B.13 C.14 D.15 84. 运行下列程序的输出结果是( C )。

#include main() { int i;

char a[20]=\ for(p=&a[5];p>=a;p--) printf(\

}

A.135 B.246 C.654321 D.123456 85. 运行下列程序的输出结果是( A )。

#include main()

{ char *p=\ while(*p!='4')

printf(\}

A.246 B.135 C.152 D.13542 86. 不正确的赋值或赋初值的方式是( D )。

A.char str[6]={?s?,?t?,?r?,?i?,?n?,?g?}; B.char str[10]=”string”; C.char *str=”string”;

D.char str[10];str=”string”;

87. 如下程序段,其输出应为( B )。 int c[]={1, 7, 12}; int *k; k=c;

printf(\

A.2 B.7 C.1 D.以上均不对 88. 调用f(\的返回结果是( B )。 int f(char *s) { int k = 0;

while (*s) k = k*10+*s++-'0'; return(k); }

A.\ B.1234 C.\ D.4321 89. 以下程序运行后的输出结果是( B )。

main()

{ char s[]=\ printf(“%s”,ps+4); *(ps+4)=0;

puts(s); }

A.n/No /No B./NoYes C.n/NO Yes D.Yes Yes Yes /No 90. 设有定义:char str[]=“ABCD”,*p=str;则语句printf(“%d\\n”,*(p+4));的输出结果

是( B )。 A.68 B.0 C.字符d的地址 D.不确定的值 91. 下面程序执行后a的值是( B )。

#include\void main( )

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

printf(\ }

A.4 B.1 C.0 D.运行时出错,a无定值

92. 语句:printf(printf(\的输出结果是( C )。 A)11 B)10 C)9 D)8

93. 以下程序段输出字符串str,其中循环条件str[i] != '\\0' 还可以写成( A )。

char str[80];

for(i = 0; str[i] != '\\0'; i++) putchar(str[i]);

A.str[i] != NULL B.i < 80 C.!(str[i] = '\\0') D.i <= 80

94. 设变量定义为:int n, *p; char ch, *q, *g;,则语句( D )是不正确的。

A.p = &n; g = q = &ch; B.p = &n; q = &ch; C.p = &n; g = &ch; D.p = &n; q = &ch; g = p; 95. 下列数据定义语句中,正确的是( B )。

A.char c[2],*p=c[1]; B.char c,*p=&c; C.float *p=&a,a=5; D.float b1,p=&b1; 96. 设有char str[100];int i=5;则引用数组元素的错误形式是( A )。

A.*((str++)+i) B.*(str+i-1) C.*(str+i) D.str[i+10] 97. 设有定义语句int a[3][4],*p=a[0];则下列表达式中,不能代表合法数组元素的是( D )。

A.**a B.*(a[2]+1) C.*(p+2*4+1) D.*(*(p+2)+1) 98. 下列程序段的输出结果是( B )。

char *st[ ]={\printf(\

A.(MOON,M) B.(OON,C) C.(OON,Q) D.(OON, A) 99. 已有定义:int i,a[10],*p;,则合法的赋值语句是( D )。

A.p=100; B.p=a[5]; C.p=a[2]+2; D.p=a+2; 100. 以下程序运行后的输出结果是( D )。

main()

{ char s[]=\

for(p=s+1;p

A.ABCD B.A C.B D.BCD

BCD B C CD CD C D D

101. 有定义:char *p[10];,则p是一个( D )。

A.函数名 B.指针变量 C.数组元素 D.数组名

102. s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,

执行语句S;则以下选项中正确的是( D )。

A.if(s1>s2)S; B.if(strcmp(s1,s2))S; C.if(strcmp(s2,s1)>0)S; D.if(strcmp(s1,s2)>0)S; 103. 设有定义语句

int x[6]={2,4,6,8,5,7},*p=x,i;

要求依次输出x数组6个元素中的值,不能完成此操作的语句是( D )。 A.for(i=0;i<6;i++) printf(\B.for(i=0;i<6;i++) printf(\C.for(i=0;i<6;i++) printf(\D.for(i=0;i<6;i++) printf(\