练习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    )
Aint    Bunsigned  Clong    D以上三种类型均可
解析在TC下,此题答案是C,在VC6.0下此题答案是D,因为两个编译器对int类型数据的空间分配的大小不一样,在TC下是2字节,在VC6.0下是4字节,所以取值范围也就不一样。
14putchar ( )函数可以向终端输出一个(  D 
A、整型变量表达式值              B、实型变量值
C、字符串                        D、字符或字符型变量值
解析:putchar函数的作用是向终端输出一个字符,其参数可以是变量或常量,但是输出的结
果是ASCII码表中显示的字符;答案选D;
15、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为1020AB,当从第一列开始输入数据时,正确的数据输入方式是(  D  代表空格,↙代表Enter
int a1,a2; char c1,c2;
scanf("%d %c%d %c",&a1,&c1,&a2,&c2);
A10undefinedA20B↙    B10A20undefinedB↙      C10undefinedA20undefinedB        D10A20B
解析:空格是有效字符,所以会被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));
A3    B2    C1        D0
解析:这是一个表达式的运算,x%=()是一个赋值表达式,赋值表达式的运算方向是从右向左进行。即先运算表达式y/=2,其运算结果是y=2,再将表达式转换为x%=2,运算此表达式得到最后结果为1 。
17、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,AB,当从第一列开始输入数据时,正确的输入方式是(  D   )。(代表空格,↙代表Enter
        int a1,a2; char c1,c2;
        scanf("%d%d",&a1,&a2);
        scanf("%c%c",&c1,&c2);
A1020AB      B10undefined20↙      C10undefined20AundefinedB    D10undefined20AB
                                            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;
}
A46    B579        C5690        D、出错
解析:scanf中的2是指读取数值的位数,所以scanf函数读取前两个数字12送给a,接着读取后面两个数字34送给b,最后读取567三个字符,但是后面没有对应的参数所以不送给任何变量,scanf函数执行结束,所以a+b=12+34=46,所以输出为46。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。