习题三 基本语句
1. 以下叙述中错误的是______。
A、C语句必须以分号结束 B、复合语句在语法上被看作一条语句
C、空语句出现在任何位置都不会影响程序运行
D、赋值表达式末尾加分号就构成赋值语句
解析:本题考查的是C语句。"空语句出现在任何位置都不会影响程序运行"这句话是错误的,例如在for循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。 故本题答案为C。
2. 有以下程序,其中%u表示按无符号整数输出
main()
{ unsigned int x=0xFFFF; /* x的初值为十六进制数 */
printf("%u\n ",x);}
程序运行后的输出结果是______。
A、-1 B、65535 C、32767 D、0xFFFF
解析:本题考查的是整型无符号数的输出。%u的作用是按无符号的十进制形式输出整型数,十六进制数0xFFFF转换为二进制位其值为16个1,代表的整数就是65535。故本题答案选B。
3. 下列定义变量的语句中错误的是______。
A、int _int; B、double int_; C、char For; D、float 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<回车>
则输出结果是______。
A、1267 B、1256 C、1278 D、1245
解析:本题考查的是字符输入输出函数的应用。 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码
解析:本题考查的是标准输出函数。在使用标准输入输出库函数(除了printf和scanf)前,必须要用预编译命令"#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中的值为123,n中的值为456,p中的值为789,则正确的输入是______。
A、m=123n=456p=789 B、m=123 n=456 p=789
C、m=123,n=456,p=789 D、123 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↙。则输出结果是______。
A、6,5,A,B B、6,5,65,66 C、6,5,6,5 D、6,5,6,6
解析:本题考查的是格式字符的输入和输出。将字符常量6和5所对应的内存的ASCII码翻译成字符常量为6和5输出,将内存中的整型数65和66对应的字符常量即A和B输出。所以此题答案为A。
8. 以下程序的输出结果是______。
main()
{int k=17;
printf("%d,%o,%x\n",k,k,k);}
A、17,021,0x11 B、17,17,17 C、17,0x11,021 D、17,21,11
解析:本题的考查点是不同格式的数据输出。printf函数对不同类型的数据用不同的格式字符,"%d"是以十进制形式输出整数(正数不输出符号);"%o"以八进制无符号形式输出整数(不包括前导符0);"%x"以十六进制无符号形式输出整数(不包括前导符0x)。本题答案为D。
9.有定义语句:int x,y;若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是______。
A、11 12↙ B、11,12↙ C、11, 12↙ D、11,↙12↙
解析:本题的考查点是格式输入函数。如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。所以输入的两个数字之间的逗号是不可少的。故本题答案为A。
10.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
A、x=x*100+0.5/100.0; B、x=(x*100+0.5)/100.0
C、x=(int)(x*100+0.5)/100.0; D、x=(x/100+0.5)/100.0;
解析:本题的考查点是实型数据。对于此类题目,我们可用排除法,题目要求保留到小数点后两位,选项A、B、D都不合题面要求。选项C中,x=(int)(x*100+0.5)/100.0中,x为float型,所以小数点后有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、错误信息 B、666 C、888 D、666,888
解析:本题考查的是输出格式。printf()函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。所以本题答案为B。
12.有以下程序
main()
{ int x=102,y=012;
printf("%2d,%2d\n",x,y);}
执行后输出结果是______。
A、10,01 B、02,12 C、102,10 D、02,10
解析:y=012表示将八进制数12赋给变量y。d格式符,用来输出十进制整数。%md,m为
指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。本题是将八进制数12也输出为十进制数,八进制数12转换为十进制数为10,所以输出结果为102,10。故本题答案为C。
13.若以下选项中的变量已正确定义,则正确的赋值语句是______。
A、x1=26.8%3; B、1+2=x2; C、x3=0x12; D、x4=1+2=3;
解析:正确的赋值语句中的左值不能为常量或表达式,右值不能为变量或表达式。
选项A中右值为表达式,明显是错误的;选项B中,左值为表达式,明显是不对的。选项D中,表达式x4=1+2=3,是先执行赋值表达式1+2=3,这本身就是错误的,1+2不是变量,不能赋值。故本题答案为C。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论