1、国家二级 C语言(运算符与表达式、基本语句)机试模拟试卷 3及答案与解析 一、选择题 1 表达式 (int)(double)9 2)-9 2的值是 ( )。 ( A) 0 ( B) 3 ( C) 4 ( D) 5 2 若有定义 int x, y;并已正确给变量赋值,则以下选项中与表达式 (x-y)?(x+):(y+)中的条件表达式 (x-y)等价的是 ( )。 ( A) (x-y 0|x-y 0) ( B) (x-y 0) ( C) (x-y 0) ( D) (x-y=0) 3 若变量已正确定义,在 if(W)pfintf(“ d n“, k);中,以下不可替代 W的是( )。 ( A) a
2、b+c ( B) ch=getchar( ) ( C) a=b+c ( D) a+ 4 若有定义语句: int x=10;,则表达式 x-=x+x的值为 ( )。 ( A) 0 ( B) -20 ( C) -10 ( D) 10 5 设有定义: int x=2;,以下表达式中,值不为 6的是 ( )。 ( A) 2*x, x+=2 ( B) x+, 2*x ( C) x*=(1+x) ( D) x*=x+1 6 若有定义语句: int x=12, y=8, z;,在其后执行语句 z=0 9+x y;,则 z的值为 ( )。 ( A) 1 ( B) 1 9 ( C) 2 ( D) 2 4 7 表
3、达式 3 6-5 2+1 2+5 2的值是 ( )。 ( A) 4 3 ( B) 4 8 ( C) 3 3 ( D) 3 8 8 有定义语句: int a; long b; double x, y;,则以下选项中正确的表达式是 ( )。 ( A) a=x y ( B) a (int)(x-y) ( C) (a*y) b ( D) y=x+y=x 9 设变量已正 确定义并赋值,下列表达式中正确的是 ( )。 ( A) x=y+z+5, +y ( B) int(15 8 5) ( C) x=y*5=x+z ( D) x=25 5 0 10 以下不能将 s所指字符串正确复制到 t所指存储空间的是 (
4、 )。 ( A) do*t+=*s+; while(*s); ( B) for(i=0; ti=si; i+); ( C) while(*t=*s)t+; s+ ( D) for(i=0, j=0; ti+=sj+; ); 11 设有定义: int k=0; ,以下选项的 4个表达式中与其他 3个表达式的值不相同的是 ( )。 ( A) +k ( B) k+=1 ( C) k+ ( D) k+1 12 若有定义语句: int year=2009, *p=&year;,以下不能使变量 year中的值增至2010的语句是 ( )。 ( A) (*p)+; ( B) *p+; ( C) +(*p);
5、 ( D) *p+=1; 13 若有定义: double a=22; int i=0, k=18;,则不符合 C语言规定的赋值语句是( )。 ( A) i=(a+k) =(i+k); ( B) i=a 11; ( C) a=a+, i+ ( D) i=!a; 14 若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是 ( )。 ( A) x+1=y ( B) +x, y=x- ( C) x=x+10=x+y ( D) double(x) 10 15 若变量均已正确定义并赋值,以下合法的 C语言赋值语句是 ( )。 ( A) x=y=5; ( B) x=n 2 5; ( C) x+n
6、=i; ( D) x=5=4+1; 16 表达式 a+=a-=a=9的值是 ( )。 ( A) 18 ( B) -9 ( C) 0 ( D) 9 17 设有以下语句: int a=1, b=2, c; c=a (b 2); 执行后, c的值为 ( )。 ( A) 7 ( B) 9 ( C) 8 ( D) 6 18 若有以下程序段: int r=8; prinff(“ d n“, r 1); 输出结果是 ( )。 ( A) 16 ( B) 8 ( C) 4 ( D) 2 19 有以下程序: #include stdio h main( ) int a=1, b=2, c=3, x; x=(ab)
7、&c; prinff(“ d n“, x); 程序的运行结果是 ( )。 ( A) 3 ( B) 1 ( C) 2 ( D) 0 20 若变量已正确定义,则语句 s=32; s =32; pfintf(“ d“, s);的输出结果是( )。 ( A) -1 ( B) 0 ( C) 1 ( D) 32 21 以下叙述中错误的是 ( )。 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数 据到文件 22 要求通过 while循环不断读入字符,当读入字母 N
8、时结束循环。若变量已正确定义,以下正确的程序段是 ( )。 ( A) while(eh=getchar( )=N)pfintf(“ c“, ch); ( B) while(ch=getchar( )!=N)pfintf(“ c“, ch); ( C) while(ch=getchar( )=N)pfintf(“ c“, ch); ( D) while(ch=getchar( )=N)pfintf(“ c“, ch); 23 以下不能输出字符 A的语句是 (注:字符 A的 ASCII码值为 65,字符 a的ASCII码值为 97)( )。 ( A) printf(“ c n“, a-32); (
9、 B) pfintf(“ d n“, A); ( C) prinff(“ c n“, 65); ( D) pfintf(“ c n“, B-1); 24 已知字符 A的 ASCII码值是 65,字符变量 c1的值是 A, c2的值是 D,则执行语句 pfintf(“ d, d“, c1, c2-2);的输出结果是 ( )。 ( A) 65, 68 ( B) A, 68 ( C) A, B ( D) 65, 66 25 有如下程序段: int x=12; double y=3 141593; pfintf(“ d 8 6f“, x, y); 其输出结果是 ( )。 ( A) 123 141593
10、 ( B) 123 141593 ( C) 12 3 141593 ( D) 123 1415930 26 若变量已正确定义为 int型,要通过语句 scanf(“ d, d, d“, &a, &b,&c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (注: 代表一个空格符 )( )。 ( A) 1, 2, 3回车 ( B) 1, 2, 3回车 ( C) 1, 2, 3回车 ( D) 123回车 27 若有定义: int a, b;,通过语句 scanf(“ d; d“, &a, &b);能把整数 3赋给变量 a、 5赋给变量 b的输入数据是 ( )。 ( A) 3
11、 5 ( B) 3, 5 ( C) 3; 5 ( D) 35 28 若有定义语句: int a, b, c, *p=&c;,接着执行以下选项中的语句,则能正确执行的语句是 ( )。 ( A) scanf(“ d“, a, b, c); ( B) scanf(“ d d d“, a, b, c); ( C) scanf(“ d“, p); ( D) seanf(“ d“, &p); 29 设有定义: int a; float b;,执行 scanf(“ 2d f“, &a, &b);语句时,若从键盘输入 876543 0回车,则 a和 b的值分别是 ( )。 ( A) 87和 6 0 ( B)
12、876和 543 0 ( C) 87和 543 0 ( D) 76和 543 0 30 有以下程序段: #include stdio h int i; float y; char name50; scanf(“ 2d f s“, &j, &y, name); 当执行上述程序段时,从键盘上输入 55566 7777abc后, y的值为 ( )。 ( A) 566 0 ( B) 55566 0 ( C) 7777 0 ( D) 566777 0 国家二级 C语言(运算符与表达式、基本语句)机试模拟试卷 3答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 先将整型数据 9强制转换成 dou
13、ble型,然后除以 2,得到的结果与double型保持一致,即为 4 5,然后将 4 5强制转换成整型数据 4,然后计算9 2的值为 1,最后计算 4-1的值为 3,所以选择 B选项。 【知识模块】 运算符与表达式 2 【正确答案】 A 【试题解析】 条件表达式 “x=表达式 1?表达式 2:表达式 3”的含义是:先求解表达式 1,若为非 0(真 ),则求解表达式 2,将表达式 2的值赋给 x;若表达式 1的值为 0(假 ),则求解表达式 3,将表达式 3的值赋给 x。本题中与条件表达式: (x-y)等价的是 (x-y 0|x-y 0)。 【知识模块】 运算符与表达式 3 【正确答案】 A 【
14、试题解析】 选项 A是非法的表达式, C语言中没有 “ ”运算符。 【知识模块】 运算符与表达式 4 【正确答案】 C 【试题解析】 算术运算符 +的优先级高于 -=,且 -=的结合方向为自右向左,所以表达式 x-=x+x可以表示成 x=x-(x+x)=10-(10+10)=-10,选择 C选项。 【知识模块】 运算符与表达式 5 【正确答案】 A 【试题解析】 A选项中逗号表达式先计算第一表达式 2*x,然后计算表达式 x+=2的值,即 x=x+2即 4,整个逗号表达式为第二个表达式的值 4, 所以选择 A选项。B选项中首先计算逗号表达式中第一表达式 x+,此时 x为 3,再执行第二个表达式
15、 2*x=2*3=6,所以逗号表达式为第二个表达式的值 6。 C选项的赋值表达式可以表示为 x=x*(1+x)=2*(1+2)=6。 D选项中的表达式可以表示为 x=x*(x+1)=2*3=6。 【知识模块】 运算符与表达式 6 【正确答案】 A 【试题解析】 先计算 x y,结果为 1,然后计算 0 9+1,结果为 1 9,但由于变量 z为整型,取值 1,所以 z的值为 1。 【知识模块】 运算符与表达式 7 【正确 答案】 D 【试题解析】 计算 5 2,结果取整数值 2。计算 3 6-2,结果与高精度数据保持一致,即为 1 6。计算 1 6+1 2,结果为 2 8。计算 5 2,结果为
16、1。计算2 8+1结果为 3 8。所以选择 D选项。 【知识模块】 运算符与表达式 8 【正确答案】 B 【试题解析】 C语言中没有 “ ”运算符,所以 A选项错误。 “ ”运算符的两个操作值必须为整型数据,所以 B选项正确。 a*y的结果为 double型,所以 C选项错误。不能将值赋给像 x+y这样的表达式,所以 D选项错误。 【知识模块 】 运算符与表达式 9 【正确答案】 A 【试题解析】 B选项与 D选项中取模运算符的左右两个操作数均应为整数,所以错误。 C选项中不能将 x+y的值赋给表达式 y*5,所以 C选项错误。 【知识模块】 运算符与表达式 10 【正确答案】 A 【试题解析
17、】 “do*t+=*s+; while(*s); ”不能因为当 *s= 0时, while(*s)跳出循环,这样字符串结束标志 0没有复制给 *t,造成 *t不完整。注意,*t+=*s+是先执行 *t=*s,然后才进行 *t=t+1, s=s+1。 B、 c、 D选项都能将 0复制过去。 【知识模块】 运算符与表达式 11 【正确答案】 C 【试题解析】 +k,先使得 k的值自增 1后再使用, k+是先取得 k的值再将 k的值自增 1,所以 C选项中表达式的值为 O,而其他 3个表达式的值均为 1,所以选择 C选项。 【知识模块】 运算符与表达式 12 【正确答案】 B 【试题解析】 由于自加
18、运算符 +的运算级别高于间接运算 *的运算级别,所以 B选项的表达式 *p+不能使变量 year中的值增至 2010,因此选择 B选项。 【知 识模块】 运算符与表达式 13 【正确答案】 B 【试题解析】 取模运算符 “ ”、二元运算符具有左结合性,参与运算的量均为整型。 B选项中的 a变量是 double实型,不符合规定。 【知识模块】 运算符与表达式 14 【正确答案】 B 【试题解析】 不能将变量赋给表达式,故 A、 C选项错误, D选项中强制类型转换表达式应写成 (doub1e)x 10。 【知识模块】 运算符与表达式 15 【正确答案】 A 【试题解析】 B选项中运算符 “ ”的前
19、后必须为整数, C选项中不能将变量 赋给表达式 x+n, D选项中不能将表达式 4+1赋给常量 5。 【知识模块】 运算符与表达式 16 【正确答案】 C 【试题解析】 首先计算 a=9,然后计算 a-=9,即 a=a-9,结果为 0,然后计算a+=0,即 a=a+0,所以最终结果为 0。 【知识模块】 运算符与表达式 17 【正确答案】 B 【试题解析】 b为 2,二进制为 00000010,执行左移两位操作后为 00001000,然后与 a(00000001)做异或运算的结果为 00001001,即十进制的 9。 【知识模块】 运算 符与表达式 18 【正确答案】 C 【试题解析】 本题考
20、查位运算,属于基础知识。题目中的整型变量 8,二进制表达为 00001000,右移一位为 00000100,即 4, C选项正确。 【知识模块】 运算符与表达式 19 【正确答案】 A 【试题解析】 本题考查位运算符以及相关运算。为按位或, &为按位与,那么a b为 3,再与 c按位与仍然为 3,所以答案为 A选项。 【知识模块】 运算符与表达式 20 【正确答案】 B 【试题解析】 本题考查逻辑异或运算。异或运算只有在两个比较 的位不同时其结果为 1,否则结果为 0,题目中两个值相同,所以结果为 0。 【知识模块】 运算符与表达式 21 【正确答案】 B 【试题解析】 本题考查字符处理函数和
21、文件读写函数,属于基础知识。其中 B选项的 getchar函数用于从终端读入字符。 【知识模块】 基本语句 22 【正确答案】 B 【试题解析】 在 C语言中,等于号用 “=”表示,一个 “=”表示赋值,当读入字母N时,选项 A中, while后的条件值为 “N”,是非零数,条件成立,循环继续执行,所以 A选项错误。 c、 D选项的含义都 是如果输入的字符为 “N”,则打印输出,所以正好和题意相反。 【知识模块】 基本语句 23 【正确答案】 B 【试题解析】 B选项输出的格式为 d,即为整型格式,所以输出字符 A的ASCII码值 65,而不是字符 A。由于大写字母比和其对应的小写字母的 AS
22、CII码值小 32,所以 A选项正确。字符 A的 ASCII码值就是 65,所以以 c格式输出可以输出字符 A,所以 C选项正确。由于字符 A的 ASCII码值比字符 B的小 1,所以 D选项正确。 【知识模块】 基本语句 24 【正确答案】 D 【试题解 析】 打印时以 d整型格式打印输出,所以字符变量 c1的值打印出来就是 65,从 c2-2的值打印出来就是 68-2,即 66,所以选择 D选项。 【知识模块】 基本语句 25 【正确答案】 A 【试题解析】 printf。函数中格式字符 “ 8 6”的含义是:变量 y的输出宽度为8(包括小数点 ),小数点后面保留 6位小数,且右对齐,当数
23、值的实际宽度大于设定宽度时,按实际宽度输出,所以选择 A选项。 【知识模块】 基本语句 26 【正确答案】 D 【试题解析】 在输入整数或实数这类数值型数据时, 输入数据之间必须用空格、回车符、制表符等间隔符隔开,间隔符个数不限。 scanf( )的格式控制串也可以使用其他非空白字符,如本题中的逗号,但在输入时必须输入这些字符,以保证匹配,所以逗号必须输入。 【知识模块】 基本语句 27 【正确答案】 C 【试题解析】 输入数据的格式必须与 scanf( )的格式控制串完全匹配,所以输入时必须在 3和 5之间输入 “; ”。 【知识模块】 基本语句 28 【正确答案】 C 【试题解析】 本题重
24、点考查的知识点是标准输入函数 scanf( )。 scanf( )函数要求,除了第一个参数为格式化字符串以外,其余参数均为相应变量的地址值。本题中,只有 p是地址值,因此 C选项正确。 【知识模块】 基本语句 29 【正确答案】 A 【试题解析】 在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将 87赋给变量 a,把 6 0赋给 float型变量 b。 【知识模块】 基本语句 30 【正确答案】 A 【试题解析】 它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。在百分 号 ( )与格式码之间的整数用于限制从对应域读入的最大字符数。所以 j的值为 55, y的值为 566 0,字符数组 name为 7777abc。 【知识模块】 基本语句
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1