国家二级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;虽然题中未给出字符20的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小时内删除。