习题三 基本语句
1. 以下叙述中错误的是______
AC语句必须以分号结束      B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句
解析:本题考查的是C语句。"空语句出现在任何位置都不会影响程序运行"这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。 故本题答案为C
2. 有以下程序,其中%u表示按无符号整数输出
main()
{ unsigned int  x=0xFFFF;      /*  x的初值为十六进制数  */
  printf("%u\n ",x);}
程序运行后的输出结果是______
A-1   B65535  C32767   D0xFFFF
解析:本题考查的是整型无符号数的输出。%u的作用是按无符号的十进制形式输出整型数,十六进制数0xFFFF转换为二进制位其值为161,代表的整数就是65535。故本题答案选B
3. 下列定义变量的语句中错误的是______
Aint  _int;   Bdouble  int_;   Cchar  For;  Dfloat  US$;
  解析:本题考查的是C数据类型及其定义。选项D中含有"$",故不符合标识符的定义。 故本题答案为D
4. #include <stdio.h>
main()
{ char c1,c2,c3,c4,c5,c6;
  scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
  c5=getchar();      c6=getchar();
  putchar(c1);      putchar(c2);
  printf("%c%c\n",c5,c6);
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是______
A1267   B1256  C1278  D1245
    解析:本题考查的是字符输入输出函数的应用。 getchar()函数只能接收一个字符,即使输入多个字符后再按回车还是只能将第一个字符读入。scanf()printf()是按格式输入输出的函数,当输入123<回车>scanf()分别读入字符"1""2""3""<回车>";接下来输入45678<回车>,则getchar()读入字符"4"赋值给c5,字符"5" 赋值给c6,故本题答案为D
5. 以下叙述中正确的是______
A、调用printf函数时,必须要有输出项
B、使用putchar函数时,必须在之前包含头文件stdio.h
C、在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 
D、调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII
  解析:本题考查的是标准输出函数。在使用标准输入输出库函数(除了printfscanf)前,必须要用预编译命令"#include"将头文件"stdio.h"包括到用户源文件中。故本题答案为B
6.  有以下程序
main()
printf函数输出整数时不能使用{  int m,n,p;
  scanf("m=%dn=%dp=%d",&m,&n,&p);
    printf("%d%d%d\n",m,n,p);}
若想从键盘上输入数据,使变量m中的值为123n中的值为456p中的值为789,则正确的输入是______
Am=123n=456p=789      Bm=123  n=456  p=789
Cm=123,n=456,p=789     D123  456  789
解析:本题考查的是格式输入函数。如果在"格式控制"字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。根据本题的数据输入形式说明在输入数据时,必须输入"m=""n=""p="字符,且中间不能含有空格。故本题答案为A
7.有以下程序
main()
{ char a,b,c,d;
  scanf("%c,%c,%d,%d",&a,&b,&c,&d);
  printf("%c,%c,%c,%c\n",a,b,c,d);}
若运行时从键盘上输入:6,5,65,66↙。则输出结果是______
A6,5,A,B   B6,5,65,66  C6,5,6,5  D6,5,6,6
    解析:本题考查的是格式字符的输入和输出。将字符常量65所对应的内存的ASCII码翻译成字符常量为65输出,将内存中的整型数6566对应的字符常量即AB输出。所以此题答案为A
8. 以下程序的输出结果是______
main() 
{int  k=17;
printf("%d,%o,%x\n",k,k,k);}
A17,021,0x11    B17,17,17  C17,0x11,021   D17,21,11
解析:本题的考查点是不同格式的数据输出。printf函数对不同类型的数据用不同的格式字符,"%d"是以十进制形式输出整数(正数不输出符号);"%o"以八进制无符号形式输出整数(不包括前导符0);"%x"以十六进制无符号形式输出整数(不包括前导符0x)。本题答案为D
9.有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是______
A11 12↙  B11,12↙  C11, 12↙  D11,12
解析:本题的考查点是格式输入函数。如果在格式控制字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。所以输入的两个数字之间的逗号是不可少的。故本题答案为A
10.设变量xfloat型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______
Ax=x*100+0.5/100.0;           Bx=(x*100+0.5)/100.0
Cx=(int)(x*100+0.5)/100.0;     Dx=(x/100+0.5)/100.0;
    解析:本题的考查点是实型数据。对于此类题目,我们可用排除法,题目要求保留到小数点后两位,选项ABD都不合题面要求。选项C中,x=(int)(x*100+0.5)/100.0中,xfloat型,所以小数点后有6位小数,x*100后有4位,x*100+0.5仍为4位,且在这里已经将第三位四舍五入了,取整后再除以100.0,结果中小数点后为2位。故本题答案为C
11.有以下程序
main()
{ int a=666,b=888;
  printf("%d\n",a,b);}
程序运行后的输出结果是______
A、错误信息  B666  C888    D666,888
  解析:本题考查的是输出格式。printf()函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。所以本题答案为B
12.有以下程序
main()
{  int  x=102,y=012;
  printf("%2d,%2d\n",x,y);}
执行后输出结果是______
A10,01    B02,12      C102,10  D02,10
  解析:y=012表示将八进制数12赋给变量yd格式符,用来输出十进制整数。%mdm
指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。本题是将八进制数12也输出为十进制数,八进制数12转换为十进制数为10,所以输出结果为102,10。故本题答案为C
13.若以下选项中的变量已正确定义,则正确的赋值语句是______
Ax1=26.8%3;  B1+2=x2;  Cx3=0x12;  Dx4=1+2=3;
    解析:正确的赋值语句中的左值不能为常量或表达式,右值不能为变量或表达式。
    选项A中右值为表达式,明显是错误的;选项B中,左值为表达式,明显是不对的。选项D中,表达式x4=1+2=3,是先执行赋值表达式1+2=3,这本身就是错误的,1+2不是变量,不能赋值。故本题答案为C

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