国家二级C语言机试(语言程序设计)模拟试卷32
选择题
1.合法的C语言语句是( )。(B)
A. int x=y=10;
B. char c=65;
C. float f=f+1.1;
D. double x=12.3E2.5;
解析:本题主要考查变量的定义和赋值,C语言中变量的定义形式为:类型说明符变量名:初始值:选项A中,x和y只能单独赋初值;选项B正确,定义了一个字符变量c,初值为65;选项C错误,初值设置自身不能参与运算;选项D中字母E后面的指数必须是整数。
2.子函数的功能是通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是( )。
#include
#defineN 5
void fun(int x[N])
{ int m;
for(m=N一1;m>=0;m一一)scanf(’’%d’’,__);}(A)
A. x+m
B. x[++m]
C. x+(m++)
D. x[m+1]
解析:本题用for循环给数组赋值,与上题类似,选项B和选项D不是地址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环里面又m一一自减,会导致死循环,不满足要求,选项A正确。
3.执行以下程序段后,k的值是( )。
int k=0,a=1,b=2,c=3;k=a<b?b:a;k=k<c?C:k;(B)
A. 1
B. 2
C. 3
D. 0
解析:本题主要考查条件表达式。k=a<b?b:a中a<b为真,因此k的值为b,因此结果为2。
4.若char s[10]=’’Chinese\0\0’’;,则strlen(s)的值是( )。(A)
A. 7
B. 8
C. 9
D. 10
解析:本题考查字符串数组和字符串函数。数组的末尾会有一个结束符,题目中s有7个字符,然后跟着结束符’’\0’’,因此数组s的长度为7。
5.为使以下程序段不陷入死循环,从键盘输入的数据应该是( )。
int n,t=1,s=0;
scanf(’’%dt’’,&n);
do{s=s++;t=t一2;}while(t!=n);(D)
A. 任意自然数
B. 任意小数
C. 任意正偶数
D. 任意负奇数
解析:本程序代码的功能是通过scanf给变量n赋值,在do…while循环中,s变量自增,t变量每次减2,t的初值为1,循环执行一次后t的值变成一1,然后是一3、一5、…,直到t的值和n的值相同循环结束。从t的值的变化可知,t是一个变化的负奇数,因此输入的n如果是负奇数,则循环能退出,否则是死循环,程序不会退出。
6.要通过scanf。(’’%d%c%d%c’’,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值1和2,为变量c1和c2赋字符a和b。以下所示的输入形式中正确的是( )。(C)
A. 1口a2口b
B. 1口a2口b口
C. 1a 2b
D. 1口a口2口b
解析:在使用scanf函数进行输入数据时,必须严格按照格式输入数据。而按照格式符’’%d%c%d%c’’说明,数值型数据和字符数据输入之间不要加入空格间隔,而字符型数据和数值型数据的输入却可以加入任意的空格、回车和跳格。
7.若int a,b;通过语句scarf(’’%d;%d’’,&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是( )。 (C)
A. 3,5
B. 35
C. 3;5
D. 3 5
解析:在用scanf这个函数输入数据时,必须严格遵守其输入的规则定义。本题此函数定义的规则是,在两个整数之间加分号输入。
8.设有定义:double a,b,c;若要求通过输入分别给a、b、c输入2、3、4,输入形式如下2.03.0 4.0则能进行正确输入的语句是( )。(C)
A. Scanf(’’%1f%1f%1ft’’,a,b,c);
B. Scanf(’’%f%f%f’’,&a,&b,&c);
C. scanf(’’%1f%1f%1f’’,&a,&b,&c);
D. scanf(’’%5.11f%5.11f%5.11f’’,&a,&b,&c);
解析:输入函数scanf不可以用实数指定小数位的宽度。输入double型数据,格式控制必须用%lf(或%le)。否则,数据不能正确输入。由于输入的是一个字符流,scanf函数从这个字符流中按照格式控制指定的格式解析出相应数据。
9.关于Scanf和printf的叙述中正确的是( )。(A)
A. 在Scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B. 在使用Scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C. 在printf函数中,各个输出项只能是变量
D. 使用printf函数无法输出百分号%
解析:scanf函数中的格式控制字符串不会输出,选项A正确;在使用scanf函数输入整数或实数时,输入数据之间可以用空格、跳格、回车来分隔,选项B错误;printf输出项不但可以为变量,还可以为表达式或者常量,选项C错误;如果要输出“%”,可以在格式控制中用“%%”表示,选项D错误。
10.设s1和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;
解析:C语言的库函数strcmp有两个参数分别是需要比较大小的两个字符串s1和s2,如果s1大于s2则返回值大于0,如果s1小于s2则返回值小于0,否则s1和s2相同返回0。题目要求s1大于s2时执行语句S,因此strcmp(s1,s2)的返回值大于0时执行S。
11.关于if(表达式)中的“表达式”叙述正确的是( )。(D)
A. 必须是整数表达式
B. 必须是关系表达式
C. 必须是逻辑表达或关系表达
D. 可以是任意合法的表达式
解析:本题考查if语句,C语言中if语句中的表达式可以是任意合法的表达式,有多余语句时用{}括起来。
12.以下程序的输出结果是( )。
main(){int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf(’’%d\n’’,y);}(B)
A. 一1
B. 0
C. 1
D. 2
解析:如果不满足if语句的条件,函数将不执行本题中x=1,if和else if的条件都不满足,故y值不改变输出。
13.以下程序段的输出结果是( )。
int a,b,c;
a=10;b=50;c=30;
if(a>b) a=b,b=c;c=a;
printf(’’a=%d b=%d c=%d\
本文档预览:3600字符,共7363字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载