1.以下选项中不合法的标识符是( )。
A) &a
B) FOR
C) print
D) 00
参考答案:A【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B)选项中的"FOR"可以作为标识符来用。A)选项中含有非法字符&,所以选择A)。
2.以下选项中,合法的一组C语言数值常量是( )。
A) 12. 0Xa23 4.5e0
B) 028 .5e-3 -0xf
C) .177 4e1.5 0abc
D) 0x8A 10,000 3.e5
参考答案:A【解析】C语言中八进制整型常量的开头是数字0,十六进制整型常量的开头数字是0x。C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以"e"或"E"后跟一个整数来表示以10为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B)选项中 028错误,八进制中没有数字8。C)选项中4e1.5中e后面的指数不是整数。D)选项中3.e5小数点后面缺少数字。
若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是( )
A) i=(a+k)<=(i+k);
B) i=a%11;
C) a=a++,i++
D) i=!a;
参考答案:B
【解析】取模运算符"%",二元运算符,具有左结合性,参与运算的量均为整型。选项 B中的a变量是double实型,所以B)不符合规定。
有以下程序:
#include <stdio.h>
main()
{ int s,t,A=10; double B=6;
s=sizeof(A); t=sizeof(B);
printf("%d,%d\n",s,t);
}
在VC6.0平台上编译运行,程序运行后的输出结果是( )。
A) 10,6
B) 4,4
C) 2,4
D) 4,8
参考答案:D
【解析】C语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,double型数据占有8个字节。
有以下程序:
#include <stdio.h>
main()
{ char a,b,c,d;
scanf("%c%c",&a, &b);
c=getchar(); d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)
12<CR>
34<CR>
则输出结果是( )。
A) 12
34
B) 12
C) 1234
D) 12
3
参考答案:D
【解析】按照从键盘输入的数据可以判断字符1给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D)选项。
下关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A) 可以是任意合法的表达式
B) 只能是整数0或非0整数
C) 可以是结构体类型的数据
D) 只能是整数0或1
参考答案:A
【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A)。
有以下程序:
#include <stdio.h>
main()
{ int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出( )。
A) 1,1,2,0
B) 0,0,0,3
C) 编译有错
D) 0,1,2,0
参考答案:C
【解析】本题中if(a=1)b=1;与else d=3; 之间多了语句c=2;所以会出现else语句的位置错误的编译失败提示。
以下程序段中的变量已正确定义:
for( i=0; i<4; i++,i++ )
for( k=1; k<3; k++ ); printf("*" );
程序段的输出结果是( )。
A) **
B) ****
C) *
D) ********
参考答案:C
【解析】由于内层循环 for( k=1; k<3; k++)后面直接跟了空语句";"所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个"*",选择C)。
有以下程序段:
#include <stdio.h>
int i, n;
for( i=0; i<8; i++ )
{ n = rand() % 5;
switch (n)
{ case 1:
case 3: printf("%d \n", n); break;
case 2:
case 4: printf("%d \n", n); continue;
case 0: exit(0);
}
printf("%d \n",n);
}
以下关于程序段执行情况的叙述,正确的是( )。
A) for循环语句固定执行8次
B) 当产生的随机数n为4时结束循环操作
C) 当产生的随机数n为1和2时不做任何操作
D) 当产生的随机数n为0时结束程序运行
参考答案:D
【解析】case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,到与之匹配的case语句,就从此case子句执行下去,不再进行判断,直到碰到break或函数结束为止。简单的说break是结束整个循环体,而continue是结束单次循环。B)选项中当产生的随机数n为4时要执行打印操作。C)选项中当产生的随机数为1和2时分别执行case3与case4后面语句的内容。由于存在break语句所以f
or循环不是固定执行8次,执行次数与产生的随机数n有关系。
有以下程序:
#include <stdio.h>
int f(int x);
main()
{ int n=1,m;
m=f(f(f(n))); printf("%d\n",m);
}
int f(int x)
{ return x*2; }
程序运行后的输出结果是( )。
A) 8
B) 2
C) 4
D) 1
sizeof 指针 参考答案:A
【解析】第一次调用m=f(f(f(1))),第二次为m=f(f(2)),第三次为m=f(4),即返回值为8。
以下叙述中错误的是( )。
A) 可以给指针变量赋一个整数作为地址值
B) 函数可以返回地址值
C) 改变函数形参的值,不会改变对应实参的值
D) 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
参考答案:A
【解析】不能将一个整数直接赋给指针变量作为地址,所以A)是错误的。函数的返回值可以是地址,即指针。函数调用中形参值的变化不会传递给实参。
设已有定义:float x;,则以下对指针变量p进行定义且赋初值的语句中正确的是( )。
A) int *p=(float)x;
B) float *p=&x;
C) float p=&x;
D) float *p=1024;
参考答案:B
【解析】指针是用来存放地址的变量,用 (类型名 *指针变量名)的形式定义。赋值时应将某个变量地址即&x 赋给指针变量,所以选择B)。
有以下程序:
#include <stdio.h>
void fun( int a[], int n)
{ int i, t;
for(i=0; i<n/2; i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; }
}
main()
{ int k[10]={ 1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2; i<8; i++) printf("%d",k[i]);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论