发布时间 : 星期六 文章C语言复习题更新完毕开始阅读
63. 下面程序执行后输出是( B )。
#include
{ 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
char a[20]=\ for(p=&a[5];p>=a;p--) printf(\
}
A.135 B.246 C.654321 D.123456 85. 运行下列程序的输出结果是( A )。
#include
{ 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(\