一
选择题
1, 答案是
C
随意使用空语句会导致逻辑上出现错误,不要随便使用。
2, 答案是
B
语句必须以分号结尾,A,C,D表达式后面均没有分号。
3, 答案是
C
int
x=13,y=4;说明x,y均为整型,所以x/y只取整数部分(舍去法),值为3,
把3赋值给x,整个x=x/y表达式的值为左边变量x的值,所以输出为3。
4, 答案是
A
a,b均为整型,a/b是取a÷b所得商的整数部分,所以是0,再把0赋值给
c,所以是c的值是0。
5, 答案是 D
A 注释语句可以放在代码的任何位置
B 将r定义为整型不会在编译时出错,会自动进行类型转换
C 变量s为浮点型,格式描述符%f时正确的
D π是非法的变量
6, 答案是 D
(x,y)是逗号表达式,它的值只有一个,所以格式说明符的个数和输出项的个数是相等的。并且逗号表达式的值为最后一个表达式的值,最后一个表达式是y=2003,所以整个表达式的值是2003,因此输出值为2003。
7, 答案是 A
m是十进制整数以十进制有符号的形式输出,即照原样输32767,n=032767,032767是八进制的整数以八进制无符号形式输出,去掉前面的0。见教材P20
8, 答案是
C
m,n的值都是十六进制数0xabc,m-=n即是m=m-n,
把m-n的值赋给m,
即把0赋给m,再把m值以十六进制无符号的形式输出,输出的十六进制
数不用在前面0x或者0X。见教材P21
9, 答案是
B
表达式i--的值是在变量自减之前的值,i的初值为10,所以该表达式的
值也为10;表达式j++的值是变量自加之后的值,j初值为1,所以该表达
式在值是2。
10, 答案是 C
m=0256,即m是八进制的数0256,要以八进制无符号的形式输出,即输出
256;n=256,即n是十进制的数256,也要以八进制无符号的形式输出,首
先要把十进制数转化为八进制数,256转化为八进制为0400,以无符号形
式输出,即输出400。
11, 答案是 B
在printf语句中,格式控制的个数只有一个,即%d,而输出项有两项,即a和b。而得到的结果应该只有一个,所以应该输出第一个变量的值,即变量a的值。
12, 答案是 C
第一个数据的输出控制宽度是2位,但是x的值是102,占3位,要输出的数据宽度大于规定的输出宽度,所以按数据的实际宽度输出,输出102。第二个数据要求以十进制形式输出,输出控制宽度是2,y的值为012,是八进制数,所以要转换成十进制数10后再输出。
13, 答案是
B
表达式a=f/=c*=(x=6.5),按从右到左结合,先把6.5赋值给x,再执行c=c*6.5,c的值变为65,再执行f=f/65,为浮点数的除法,f的值为1.53……,再把f的值赋给a,a为整型数据,执行强制类型转换,a的值为1。a对应的输出格式为%d,即输出1;c对应的输出格式为%d,输出65,f对应的输出格式%3.1f,即输出控制宽度为3位,保留小数点后一位小数,即输出1.5,x对应的输出格式也为%3.1f,输出6.5。
14, 答案是 B
long
x=-123456L;说明x为长整型的数据,长整型数据对应的输出格式应该为%ld。
15, 答案是 C
m=(k+=i*=k);按从右到左结合,先执行i=i*k;即i被赋值为4,再执行k=k+4;k被赋值为6,最后把6赋给m,输出m和i的值。
16, 答案是 C
略(参考12题)
17, 答案是 D
-m++遵循从右向左结合的原则;m++的值为m自增之前的值,所以执行完x=-m++以后,x被赋值为-3;表达式x=x+8/++n中有加号除号,先算8/++n,++n的值为自增之后的值为5,8/5取整为1,即x=x+8/++n转化为x=x+1,即把x+1的值赋给x,x的值变为-2。
18, 答案是 D
A 输入函数应为scanf();
B,C 输入数据列表必须是地址表达式;
19, 答案是 A
从键盘输入数据的格式必须与输入控制要求的格式一样
B答案三个之间不要有空格;C答案用逗号分开是多余的;D答案格式不匹配。
20, 答案是 A
格式控制要求输入的两个数据之间要用逗号隔开,A没有逗号所以错误,D两个输入数之间的回车换行可以忽略。
21, 答案是 C
x乘以100是为了把x小数点后的两位小数变为整数,再加上0.5,如果小数点后一位大于等于5则会进一位,如果小数点后一位小于5则不会出现进位的情况,再对其进行强制类型转换,采用舍去法丢掉小数部分,即对x乘上100后的数实现了小数位到整数位的四舍五入。最后再除以100.0,把数字变回原来的大小,整数与浮点数相除结果为浮点数,即实现了要求。
22, 答案是 C
从键盘输入数据的格式必须与输入控制要求的格式一样。
23, 答案是 B
输入控制中第一个数要求以“%2d”形式输入,即要求输入一个两位的数,而从键盘输入的数为876,所以从左到右取两位数字87,即把87赋值给整型变量a,余下的6再赋值给浮点型变量b,自动进行类型转换,b的值为6.000000,后面输入的543则没有赋值给变量。
24, 答案是 D
“%%”会输出一个“%”,“d”会照原样输出,因为没有格式说明,m,n无法输出到屏幕。
二
填空题
1,
一条语句 分号
参见教材P18
2, 88
首先将八进制数0210转化为十六进制的数0X88,输出格式说明要以十六进制无符号的形式输出,所以省略0X,直接输出88。
3, 11
把十进制数转化为八进制数,以无符号的形式输出
4, 25 21 37
b为八进制数025,c为十六进制数0X25,首先把b、c都转化为十进制的整数,分别为21、37,按照输出格式要求a、b、c以十进制整数形式输出,中间以空格分开,所以输出为25
21 37。
5, n1=%d\nn2=%d
除了n1,n2的值之外,还必须加入“n1=”“n2=”照原样输出的字符,很明显在两个数据之间还加了换行符。
6,
i=10,j=20
格式控制中加入了格式说明以外的其他字符,则在输入数据时这些字符也要同样输入。输入格式控制为i=%d,j=%d,所以则应该从键盘输入i=10,j=20
7, 261
a为十进制数177转化为八进制的数为0261,以无符号的形式输出为261
8, 16
a的初值为0,在表达式a+=(a=8)中,a首先被赋值为8,再执行操作a=a+a,所以a最后被赋值为16,即输出a的值为16