练习1
一、选择题
1、一个C程序是由( B )。
A.一个主程序和若干子程序组成 B.一个或多个函数组成
C.若干过程组成 D.若干子程序组成
解析:C语言称为函数式语言,其程序是由至少一个主函数main,和其他更多的函数组成,答案选B;
2、一个C程序的执行是从( A )。
A.main函数开始,直到main函数结束 B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束 D.main函数开始,直到最后一个函数结束
解析:C语言执行都是从主函数main函数开始,不论main函数放置的位置,答案选A;
3、C语言语句的结束符是( B )。
A.回车符 B.分号 C.句号 D.逗号
解析:C语言语句是以分号结束,答案选B;
4、下面标识符中( D )不是C语言的关键字。
A.char B.goto C.case D.include
解析:char 声明字符型变量关键字,case 为switch结构中开关语句分支关键字,goto为无条件跳转语句关键字,在C语言中include不属于关键字,属于预处理命令,故答案选D;
5、以下说法正确的是( A )
A.C程序的注释可以出现在程序的任何位置,它对程序的编译和运行不起任何作用。
c语言程序分析题及答案B.C程序的注释只能是一行。
C.C程序的注释不能是中文文字信息。
D.C程序的注释中存在的错误会被编译器检查出来。
解析:在C程序中注释只是起到增加程序的可读性,编译器并不会对注释进行检查,且C程序中存在多行注释。故答案选A
6、以下说法正确的是( D )
A.C程序中的所有标识符都必须小写 B.C程序中关键字必须小写,其他标识符不区分大小写
C.C程序中所有标识符都不区分大小写 D.C程序中关键字必须小写,其他标识符区分大小写。
解析:C程序中的关键字均是小写定义的,且标识符定义可以使用大写和小写,但是严格区分大小写;故答案选D。
7、设x、y均为float型变量,则以下不合法的赋值语句是( B )
A.++x ; B.y=(x%2)/10 ; C.x*=y+8; D.x=y=0 ;
解析:运算符%要求两端的操作数必须为整型,而在答案B中%号两端的操作数为x和2,x为实型,所以是错误的。
8、下列不正确的转义字符是( C )
A.' \\ ' B.' \' ' C.' \19 ' D.' \0 '
解析:转义字符是由单引号括起来的带反斜线的字符,这些字符具有特殊的含义,反斜线后可以是数字来代表某个字符,而这些数字只包括两种:八进制(1-3位)和十六进制(1-2位)。十六进制前面要加x(或X),这里的C答案反斜线后是数字,但不是x开头,所以应该是八进制数,但是数值里有9,和八进制数不符,所以是错误的。
9、下列不是C语言常量的是( A )
A.e-2 B.074 C."a" D.' \0 '
解析:C语言的常量分为整型、实型、字符型和字符串。整型常量的书写形式分为十进制、八进制和十六进制,十进制是0~9的数值表示;八进制是以0开头,0~7的数值表示,十六进
制是以0x(或0X)开头,0~9与a~f(或A~F)表示。实型常量的书写分为小数形式和指数形式,小数形式指只包含小数点的形式,如:0.056或300.57;指数形式只指用包含e(或E)的书写形式,要求e(或E)的前面必须有数值,后面必须是整数的书写规则。字符型常量指单引号引起来的单个字符或转义字符。字符串常量是指双引号引起的多个字符。这里答案A是实型的指数书写形式,但是这种书写形式要求e前面必须有数值,后面必须是整数,而这里所以是错误的。
10、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( B )
A.0~255 B.0~65535 C.-32768~32767 D.-256~255
解析:2个字节为16个二进制位,且是无符号型,故范围为0到216-1=65535,故答案选B;
11、若定义了int x; 则将x强制转化成双精度类型应该写成( A )
A.(double)x B. x(double) C. double(x) D.(x)double
解析:A为C语言强制转换的标准书写形式;
12、在C语言中,要求参加运算的数必须是整数的运算符是( C ) 。
A./ B.* C.% D. =
解析:C选型的%为求余运算符,其要求两端的运算数必须为整型。
13、为了计算s=10!(即10的阶乘),则s变量应定义为( D ) 。
A.int B.unsigned C.long D.以上三种类型均可
解析:在TC下,此题答案是C,在VC6.0下此题答案是D,因为两个编译器对int类型数据的空间分配的大小不一样,在TC下是2字节,在VC6.0下是4字节,所以取值范围也就不一样。
14、putchar ( )函数可以向终端输出一个( D ) 。
A、整型变量表达式值 B、实型变量值
C、字符串 D、字符或字符型变量值
解析:putchar函数的作用是向终端输出一个字符,其参数可以是变量或常量,但是输出的结
果是ASCII码表中显示的字符;答案选D;
15、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( D ) (代表空格,↙代表Enter)
int a1,a2; char c1,c2;
scanf("%d %c%d %c",&a1,&c1,&a2,&c2);
A、10undefinedA20B↙ B、10A20undefinedB↙ C、10undefinedA20undefinedB↙ D、10A20B↙
解析:空格是有效字符,所以会被scanf函数正常读取。A答案会将10送给a1,空格送给c1,而A字符不属于a2的读取范围,scanf函数非正常结束,a2与后面的c2都没有正常获取数值;B答案会将10送给a1,A送给c1,20送给a2,空格送给c2,然后scanf函数读取正常结束,后面的B字符将会留给下一输入函数读取;C答案与A答案类似;只有D答案正确地将将10送给a1,A送给c1,20送给a2,B送给c2,然后scanf函数读取正常结束。
16、执行下列程序片段时输出结果是( C )。
int x=13,y=5;
printf("%d",x%=(y/=2));
A、3 B、2 C、1 D、0
解析:这是一个表达式的运算,x%=()是一个赋值表达式,赋值表达式的运算方向是从右向左进行。即先运算表达式y/=2,其运算结果是y=2,再将表达式转换为x%=2,运算此表达式得到最后结果为1 。
17、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是( D )。(代表空格,↙代表Enter)
int a1,a2; char c1,c2;
scanf("%d%d",&a1,&a2);
scanf("%c%c",&c1,&c2);
A、1020AB↙ B、10undefined20↙ C、10undefined20AundefinedB↙ D、10undefined20AB↙
AB↙
解析:此题与15题类似,这里的回车符也属于有效字符,所以会被scanf函数正常读取。A答案中的1020后面是字符A,不属于数值,第一个scanf函数读取时将1020看成一个整体送给a1,而后面的A不属于a2获取类型,这个scanf函数非正常结束,a2没有获取到数值;第二个scanf执行,c1获取到字符A,c2获取到字符B。B答案中的10后面是空格,所以第一个scanf函数现将10送给a1,再将空格后的20送给a2,第一个scanf函数正常结束,第二个函数是读取字符型,这时的缓冲区中首先是回车符,当数字型读取时可以忽略此字符,但是字符型读取却不能忽略,所以scanf函数将回车符送给了c1,将A送给c2,scanf函数正常结束。C答案中10后面是空格,所以第一个scanf函数现将10送给a1,20后面是字符A,所以将20送给a2,第一个scanf函数正常结束;第二个函数是读取字符型,这时的缓冲区中首先是A,scanf函数将A送给c1,A后面的空格送给c2,第二个scanf函数正常结束。D答案中10后面是空格,所以第一个scanf函数现将10送给a1,20后面是字符A,所以将20送给a2,第一个sca
nf函数正常结束;第二个函数是读取字符型,这时的缓冲区中首先是A,scanf函数将A送给c1,A后面的B送给c2,第二个scanf函数正常结束。所以D答案是正确的。
18、若运行时输入:12345678↙,则下列程序运行结果为( A )。
#include<stdio.h>
int main ( )
{
int a,b;
scanf("%2d%2d%3d",&a,&b);
printf("%d\n",a+b);
return 0;
}
A、46 B、579 C、5690 D、出错
解析:scanf中的2是指读取数值的位数,所以scanf函数读取前两个数字12送给a,接着读取后面两个数字34送给b,最后读取567三个字符,但是后面没有对应的参数所以不送给任何变量,scanf函数执行结束,所以a+b=12+34=46,所以输出为46。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论