国家二级C语言机试(C语言程序设计)模拟试卷1 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 若x为int变量,则以下语句的输出结果是( )。 x=1234; printf(“|\%-06d|n”,x);
A.输出格式描述符不合法
B.输出为|001234|
C.输出为|1234|
D.输出为|-01234|
正确答案:C
解析:本题主要考查C语言prinltf函数中格式控制字符串的使用,%表示格式说明的起始符号,
“-”表示输出是否左对齐,“0”表示输出是空位是否填0。在本题中格式字符串的“f”将原样输出。若用格式描述’%6d’输出x值,则输出占6格,右对齐,左边用空格填满。若用格式描述%06d,将输出x值,输出同上,只是左边用0填满。若用格式描述%-06d,输出为左对齐即左边没有空位置,右边有空位置。 知识模块:C语言程序设计
2. 已知定义k为double类型变量, k=260.72631: p血t”%-6.2e\n”,k); 则以上语句的输出结果是( )。
A.输出格式描述的域宽不够,不能输出
B.输出为26.07e+01
C.输出为2.6e+02
D.输出为-2.64e2
正确答案:C
解析:在C语言中,使用e格式描述符输出浮点数时(浮点数将以指数形式输出),用户可指
定输出数据的宽度和小数部分的位数,其一般形式为%m.he或%-m.ne,其中m、n和字符“-”的含义均与上题所述相同。需要指出的是,在不同的计算机系统中,虽然对指数部分应占宽度的规定不同,但是数值部分均按标准化指数形式输出(即小数点前必须有而且仅有一位非零数字)。本题按标准化指数形式输出k值的整数部分,截去小数点并四舍五入,输出项k的实际宽度为9列,而格式说明中所给定的域宽为6,因此,将自动突破规定宽度,而按实际宽度输出,输出结果为2.6e+02。 知识模块:C语言程序设计
3. 若m是int型变量,n是noat型变量,所用的scanf调用语句格式为: scanf(“m=%d,n=%f,”&m,&n); 则为了将数据10和66.6分别赋给m和n,正确的输入应当是( )。
A.m=10,n=66.6<回车>
B.1 0 66.6<回车>
C.10<回车>66.6<回车>
D.in=10<回车>n=66.6<回车>
正确答案:A
解析:在C语言中,scanf函数的两个格式说明项有一个或多个普通字符,这些字符被称为通配符。在输入数据时,在两个数据之间也必须以相同的字符分隔。 知识模块:C语言程序设计
4. 已知字母c的ASCII十进制代码为99,则执行以下语句后的输出结果为( )。 char a=‘c’: a--; printf(“%d,%c\n”,a+’2’,a+’3’-’0’);
A.d,e
B.a--运算不合法,故有语法错
C.100,e
D.格式描述和输出项不匹配,输出无定值
正确答案:C
解析:C语言规定,所有字符常量可以作为整型常量来处理,因而字符常量也可参与算术运算。本题中字符变量a的初值为字符c,其对应整数值就是c的ASCII码,其十进制代码为
99,经过自减运算a--后,变量a所对应的整数值为98;虽然题中未给出字符’2’和’0’的ASCII代码值,但是’2’-’0’是求字符’2’和字符’0’之间的距离为2。故a+’2’-’0’的值为100。同理可知,第二个输出项相当于算术表达式98+3,其值为101。按照题中所给定的格式描述符,第一个输出项应当以%d格式输出100,;第二个输出项应当以%c格式输出字符,已知字符c的ASCII代码值为99,故不难推算出101的对应字符应该是字母e。 知识模块:C语言程序设计
5. 两次执行下面的程序,如果从键盘上分别输入4和2,则输出结果是( )。 main( ) { int x; scanf(“%d\n”,&x); ifi(x++>3)printf(“%d\n”,x); else printf(“%d\n”,x--); }
A.7和5
B.5和3
C.7和4
D.6和4
正确答案:B
解析:本题的考点是增1减1运算符作为后缀时的运算程序。如果从键盘上输入4,执行if(x++>3)时条件为真,x的值加1,输出结果为5,当键盘输入2时,执行if(x++>3)时条件为假,x值增1后执行printf(“%d\n”,x--);,即输出结果为3。 知识模块:C语言程序设计
6. 下面程序的输出结果是( )。 main( ) { int m1=‘a’,m2=‘e’,m3=‘e’; printf(“%d%c\n”,m2-m1,m3-’b’+’A’); }
A.2,M
B.4,D
C.2,E
D.输出结果不确定
正确答案:B
解析:本题中字符变量m1的初值为字符’a’,m2的初值为字符’e’,m3的初值为字符’e’;因为英文字母的ASCII码值是连续的,所以m2-m1=‘e’’a’=4,m3-’b’+’A’=‘e’-’b’+’A’=3+’A’=‘D’。 知识模块:C语言程序设计
7. 设有定义:long x=745321L,则能正确输出变量x的语句是( )。
A.printf(“x=%d\n”,x);
B.printf(“x=%LD\n”,x);
C.printf(“x=%d1\n”,x);
D.printf(“x=%1d\n”,x);
正确答案:D
解析:本题考查C语言中长整型数据的输出。在题中格式控制符只有采用格式字符%1d,且必须是小写字母d,才能表示输出长整型数据x。 知识模块:C语言程序设计
8. 以下叙述正确的是( )。
A.当输入数据时,必须指明变量的地址,例如,scanf(“%f”,&a);
B.只有格式控制,没有输入项,也能正确输入数据到内存。例如,scanf(“m=%d,n=%d”);
C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如,scanf(“%5.1f”,&a);
D.输入项可以是一个实型常量,例如,scanf(“%f”,7.5);
正确答案:A
解析:本题考查对scanf函数的理解。选项B)中没有给出输入项;选项C)中的格式字符指定了小数位数;选项D)中的输入项为一个常量;以上均是错误的。 知识模块:C语言程序设计
9. 已知字母A的ASCII码值为65,则下面程序的输出是( )。 main( ) { char c1,c2; c1=‘A’+’5’-’3’; c2=‘A’+’6’-’3’; printf(“%d,%c\n”,c1,c2); }
A.67,D
B.B,C
C.C,D
D.不确定的值
正确答案:A
解析:程序中’A’+’5’-’3’相当于“‘A’+2=67”,“‘A’+’6’-’3’”相当于’A’+3=68。输出函数的格式控制符分别为%d,%c,对应输出一个整数和一个字符。 知识模块:C语言程序设计
10. 在C语言中的if语句中,用作判断的表达式为( )。
A.逻辑表达式
B.关系表达式
C.任意表达式
D.算术表达式
正确答案:C
解析:在C语言中,不论采用任何形式的if语句,在if后面都必须有用做判断的表达式,且表达式的类型不限于关系表达式或逻辑表达式,只要表达式的值能判断为0或非0即可,所以if后面的表达式可以是任意类型的表达式。 知识模块:C语言程序设计
11. 为了避免嵌套的条件语句if-else的二义性,C语言规定:与else配对的是( )。
A.if同一行上的if
B.缩排位置相同的if
C.其之前最近的if
D.其之后最近的if
正确答案:C
解析:C语言中在if语句中又包含一个或多个if语句称为if语句的嵌套。使用嵌套的if语句时应注意if-else的配对关系,else总是与它上面的最近if配对。 知识模块:C语言程序设计
12. 有以下程序,输出结果是( )。 main( ) { int i=15j=21,n=0; switch(i%3) { case 0:n++;break; case 1:n++: switch(j%2) { default:n++;case 0:n++;break; } } pintf(“%d\n”,n); }
A.1
B.2
C.3
D.4
正确答案:A
解析:本题考查switch-case语句的嵌套形式。程序的主体部分是switch-case语句的嵌套,变量i的值是15,表达式i%3之后是0,对应的分支是“case 0:n++;break”,变量n自加变
为1,遇到break语句,跳出外层的switch-case语句。内层switch-case语句未执行,n为1。 知识模块:C语言程序设计
13. 设变量m和n均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。
A.if(m>0)m-else n++;
B.if(m++)
C.if(m>n&&n!=0)
D.if(n<0){;}else m++;
正确答案:A
解析:选项B)和C)在条件判断语句的后面是空语句,什么都不做;在选项D)中,在if语句后面是一个复合空语句;在选项A)中,在m--后面少了一个分号,所以程序段在编译时,会出现语法错误。 知识模块:C语言程序设计
14. 阅读以下程序: #include<stdio.h> main( ) { int i; scanf(“%dt”,&i); if(i--<5)printf(“计算机二级c语言选择题库%d”,i); else printf(“%d”,i++); } 程序运行后,如果从键盘上输入5,则输出结果是( )。
A.2
B.3
C.4
D.5
正确答案:C
解析:本题考查if-else语句的一般形式。i--是自减运算的后置形式,即先计算i是否小于5,再对i减1,所以条件(i--<5)的结果为0,i的值变为4,执行else子句,输出i++,这是自加运算的后置形式,即先输出i的值,再对i加1,i的值变为5。 知识模块:C语言程序设计
15. 以下程序运行后的输出结果是( )。 #include<stdio.h> main( ) { int m=1,
n=0,i=0,j=0; switch(m) { case 1: switch(n) { case 0:i++;break; case 1:j++;break;) case 2:i++ij++;break;} printf(“i=%d,j=%d\n”,i,j); }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论