2.使用 Scanf( X=%f,y=%f , x, y) ,要使 X,y均为1.25,正确的输入是( )
①1.25,1.25 ②1.25 1.25 ③x=1.25,y=1.25 ④X=1.25 y=1.25
解 格式输入函数的格式字符串中的字符可以分成三类:空格类字符、其它普通字符和格式转换说明。其中空格类字符用来跳过一个空格类字符序列,直至下一个非空格类字符。普通字符要求输入字符与其完全相同。格式转换说明对输入字符列按格式转换说明进行转换,得到内部值存储到对应输入项所指定的存储位置中。函数调用scanf( x=%f,y=%f, x, y)以普通字符X=开头,输入时也要先输入X=.接着是一个浮点数输入格式,所有能构成一个浮点数1.25的字符序列都能满足要求。接着是普通字符列 ,y= ,在输入的浮点数之后也要有字符列 ,y= 。最后又是浮点数输入格式,同样所有能构成一个浮点数1.25的字符序列都能满足要求。问题给出的供选择答案中只有x=1.25,y=1.25是能满足上述要求的。所以正确选择是③。
3.设有int i=010,j=10;则执行 printf( %d,%d\n ,++i,j ); 的输出是( )
①ll, 10 ② 9,10 ③ 010, 9 ④ 10, 9
解 变量i和j的初值分别为八进制数010和十进制数 10,函数调用Printf( %d,%d\n ,++i,j )中,++i的值是变量 i增1后的值,原来值是八进制数 010,等于十进制数8,输出9.j 的值是变量j减1之前的值,输出10.格式字符申中的逗号是普通字符照原样输出。所以问题给出的格式输出函数调用将输出9,10.正确的解答是②。
4.设a,b为字符型变量,执行 scanf( a=%c,b=%c , a, b) 后使a为 A ,b为 B ,从键盘上的正确输入是( )
① A B ② A , B ③A=A,B=B ④a=A b=B
解 函数调用scanf( c=%c,b=%c , c, b)中,普通字符必须按格式字符串要求照原样输入,c格式对紧接的任何字符都输入。所以实现问题的要求,输入字符列应为 a=A,b=B 。另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。但用字符格式输入字符时,在要输入字符前后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。正确的解答是④。
5.设X、y、Z、t均为int型变量,则执行以下语句后,t的值为( )
x=y=z=1;t=++x||++y ++z;
①不定值 ②2 ③l ④0
解 语句序列 x=y=z=l;t=++x||++y ++z; 使变量x的值为1,变量t是赋一个逻辑表达式的值。在C语言中,由逻辑与和逻辑或构成的逻辑表达式有特别的计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑表达式的结果时,就立即结束逻辑表达式的计算,不再计算后继逻辑子表达式。本题的逻辑表达式是两个运算分量的逻辑或,而且左运算分量++X的值为非0,立即得到逻辑或运算的结果为1,并将1赋给变量t,所以变量t的值为1.正确解答为③。
6设x、y、z均为int型变量,则执行以下语句后,x、y, z的值为( )
X=1; y=0; Z=2; y++ ++Z ||++ X;
①2、l、3 ②2、0、3 ③2、l、3 ④2、1、2
8.下面的程序段所表示的数学函数关系是( )
y=-l;
if( x!= 0)if(x 0)y=l; else y=0 ;
1(x 0) 1(x 0)
① y= { 0(x= 0) ② y={-l(X=0)
1(X 0) 0(X 0)
o(X 0) -l(X 0)
③ y= {-1(x= 0) ④ y={ 1(X= 0)
1(X 0) 0(X 0)
解 程序段首先置变量y的值为一l,接着按变量x值的不同情况重置变量y的值。重置的首要条件是x!=0,若变量x的值为0,则不再重置变量y的值,所以在X值为0情况下,y的值是-l.在变量X的值不等于0的条件下,若X的值大于0,重置变量y的值为1;若变量X的值小于0,重置变量y的值为0.所以程序段实现当变量x的值为0时,变量y的值为-1;当变量X的值大于0时,置变量y的值为1;当变量X的值小于0时,置变量y的值为0.正确解答为③。