1、国家二级 C语言机试(数据类型、运算符与表达式)模拟试卷 1及答案与解析 一、选择题 1 设有两行定义语句: int scanf; float case; 则以下叙述正确的是( )。 ( A)第 2行语句不合法 ( B)两行定义语句都合法 ( C)第 1行语句不合法 ( D)两行定义语句都不合法 2 以下能正确表述算式 sin(2r+30)的 C语言表达式是( )。 ( A) sin(2*3.14*r+3.14*30/180.0) ( B) sin(2*r+ 30 ) ( C) sin(2*3.14*r+ 30 ) ( D) sin(2*3.14*r+30*3.14/360.0) 3 设有定义
2、: int x=11,y=12,z=0;,以下表达式值不等于 12的是( )。 ( A) z=(x=y) ( B) (z=x,y) ( C) z=(x,y) ( D) (z,x,y) 4 以下可以将任意一个两位整数 n的个位数与十位数对换的表达式为( )。 ( A) (n-n/10*10)*10+n/10 ( B) n-n/10*10+n/10 ( C) n/10+(n-n/10) ( D) (n-n/10)*10+(n/10) 5 设有以下程序段 int y; y=rand() % 30+1; 则变量 y的取值范围是( )。 ( A) 0 y30 ( B) 0y30 ( C) 1 y 30
3、( D) 1 y30 6 以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。 ( A)可以是任意合法的表达式 ( B)只能是整数 0或非 0整数 ( C)可以是结构体类型的数据 ( D)只能是整数 0或 1 7 有以下程序 #include main() char c1,c2; c1=A+8-4; c2=A+8-5; printf( “%c,%dn“,c1,c2); 已知字母 A的 ASCII码为 65,程序运行后的输出结果是( )。 ( A) E,68 ( B) D,69 ( C) E,D ( D)输出无定值 8 以下选项中,合法的一组 C语言数值常量是( )。 ( A) 12. 0Xa
4、23 4.5e0 ( B) 028 .5e-3 -0xf ( C) .177 4e1.5 0abc ( D) 0x8A 10,000 3.e5 9 以下选项中不合法的标识符是( )。 ( A) int i=0,k=18; 则不符合 C语言规定的赋值语句是( )。 ( A) i=a%11; ( B) i=(a+k) main() int s,t,A=10; double B=6; s=sizeof(A); t=sizeof(B); printf(“%d,%dn“,s,t); 在 VC6平台上编译 运行,程序运行后的输出结果是( )。 ( A) 4,8 ( B) 4,4 ( C) 2,4 ( D)
5、 10,6 12 以下选项中,能用作数据常量的是( )。 ( A) 115L ( B) 0118 ( C) 1.5e1.5 ( D) o115 13 按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。 ( A)连接符 ( B)大写字母 ( C)数字字符 ( D)下划线 14 设变量已正确定义并赋值,以下正确的表达式是( )。 ( A) x=y+z+5, +y ( B) int(15.8%5) ( C) x=y*5=x+z ( D) x=25%5.0 15 设有定义: int x=2; 以下表达式中,值不为 6的是( )。 ( A) 2*x, x+=2 ( B) x+,2*x
6、( C) x*=(1+x) ( D) x*=x+1 16 有以下程序 #include main() int x, y, z; x=y=1; z=x+,y+,+y; printf(“%d,%d,%dn“,x,y,z); 程序运行后的输出结果是( )。 ( A) 2,3,1 ( B) 2,3,2 ( C) 2,3,3 ( D) 2,2,1 17 C源程序中不能表示的数制是( )。 ( A)二进制 ( B)八进制 ( C)十进制 ( D)十六进制 18 以下选项中,能用作用户标识符的是( )。 ( A) _0_ ( B) 8_8 ( C) void ( D) unsigned 19 若有定义语句:
7、 int x=10; 则表达式 x-=x+x的值为( )。 ( A) -10 ( B) -20 ( C) 0 ( D) 10 20 以下选项中能表示合法常量的是( )。 ( A) 007 ( B) 1.5E2.0 ( C) ( D) 1,200 21 以下定义语句中正确的是( )。 ( A) char A=65+1,b=b; ( B) int a=b=0; ( C) float a=1,*b= ( D) double a=0.0; b=1.1; 22 若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是( )。 ( A) +x,y=x- ( B) x+1=y ( C) x=x+10
8、=x+y ( D) double(x)/10 23 以下选项中可用作 C程序合法实数的是( )。 ( A) .1e0 ( B) 3.0e0.2 ( C) E9 ( D) 9.12E 24 下列定义变量的语句中错误的是( )。 ( A) float US$; ( B) double int_; ( C) char For; ( D) int _int; 25 表达式: (int)(double)9/2)- 9%2 的值是( )。 ( A) 3 ( B) 0 ( C) 4 ( D) 5 26 以下选项中关于 C语言常量的叙述错误的是( )。 ( A)经常被使用的变量可以定义成常量 ( B)常量分为
9、整型常量、实型常量、字符常量和字符串常量 ( C)常量可分为数值型常量和非数值型常量 ( D)所谓常量,是指在程序运行过程中,其值不能被改变的量 27 以下选项中,不合法的 C语言用户标识符是( )。 ( A) a-b ( B) AaBc ( C) a_b ( D) _1 28 若变量均已正确定义并赋值,以下合法的 C语言赋值语句是( )。 ( A) x=y=5; ( B) x=n%2.5; ( C) x+n=i; ( D) x=5=4+1; 29 以下不合法的数值常量是( )。 ( A) 8.0E0.5 ( B) 1e1 ( C) 011 ( D) 0xabcd 30 以下关于 C语言数据类
10、型使用的叙述中错误的是( )。 ( A)若只处理 “真 “和 “假 “两种逻辑值,应使用逻辑类型 ( B)若要保存带有多位小数的数据,可使用双精度类型 ( C)若要处理如 “人员信息 “等含有不同类型的相关数据,应自定义结构体类型 ( D)整数类型表示的自然数是准确无误差的 31 设有定义: int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是( )。 ( A) k+ ( B) k+=1 ( C) +k ( D) k+1 32 以下叙述中错误的是( )。 ( A) C程序在运行过程中所有计算都以十进制方式进行 ( B) C程序在运行过程中所有计算都以二进制方式进行 ( C)所
11、有 C程序都需要编译链接无误后才能运行 ( D) C程序中字符变量存放的是字符的 ASCII值 33 以下关于 C语言的叙述中正确的是( )。 ( A) C语言中的注释不可以夹在变量名或关键字的中间 ( B) C语言中的变量可以在使用之前的任何位置进行定义 ( C)在 C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 ( D) C语言的数值常量中夹带空格不影响常量值的正确表示 国家二级 C语言机试(数 据类型、运算符与表达式)模拟试卷 1答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同。
12、本题中 scanf为预定义标识符,可以作为用户标识符 ;case为关键字,不能作为用户标识符,故而答案选 A。 【知识模块】 数据类型、运算符与表达式 2 【正确答案】 A 【试题解析】 考查算术表达式的写法, C中没有 ,需要用数值 3.14代替, C中sin函数的参数为弧度,角度 30转成弧度应为 3.14*30/180。故而选 A。 【知识模块】 数据类型、运算符与表达式 3 【正确答案】 A 【试题解析】 考查运算符与表达式, A)中先计算 (x=y),为 0,将 0赋值给 z,表达式值为 0, A)错;选项 B)、 C)、 D)均涉及到逗号表达式,整个逗号表达式的值为最后一个表达式的
13、值,所以均为 12。选 A)。 【知识模块】 数据类型、运算符与表达式 4 【正确答案】 A 【试题解析】 考查运算符与表达式,方法是想办法得到个位数字和十位数字,然后个位数字 *10+十位数字即可将个位数和十位数对换。 A) 中, n/10*10将整数中的十位部分提取出来,然后用 n-n/10*10即得该整数的个位数字, n/10得到十位数字, (n-n/10*10)*10+n/10即完成对换, A)正确。同时易得选项 B)、 C)、 D)三个选项都不正确,答案选 A)。 【知识模块】 数据类型、运算符与表达式 5 【正确答案】 A 【试题解析】 考查运算符与表达式, rand()%30求得
14、范围在 0-29之间的数据,+1后的取值范围为 1-30( 1、 30也包括在内),答案选 A。 【知识模块】 数据类型、运算符与表达式 6 【 正确答案】 A 【试题解析】 逻辑运算符两侧的运算对象可以任意合法的表达式,最终会根据两侧表达式计算出的数值来判定该逻辑表达式为真( 1)或假( 0)。答案选 A。 【知识模块】 数据类型、运算符与表达式 7 【正确答案】 A 【试题解析】 考查字符型数据。字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者 ASCII码。本题中, 8- 4结果为 4, A+4的结果
15、为 69即 E,所以 c1=E,对应 ASCII码为 69。 8- 5为 3, A+3的结果为 68,即 D,所以c2=D,对应 ASCII码为 68。故而输出结果为 A)。 【知识模块】 数据类型、运算符与表达式 8 【正确答案】 A 【试题解析】 考查整型常量 、实型常量。选项 B)的 “028“错,以 0开头表示为八进制整常数,不能出现数字 8;选项 C)的 “4e1.5“错, e后面应为整数, “0abc“错,八进制整常数只能由 07构成;选项 D)的 “10,000“错, C语言没有千分号,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 9 【正确答案】 A 【试题解析】
16、 考查标识符的概念。 C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线。符号 ?将 x、 y初始化为1,逗号表达式 z=x+,y+,+y;中先计算 z=x+,得到 x=2, z=1,计算 y+,得y=2,再计算 +y,得 y=3。所以最终结果为 x=2, y=3, z=1,答案选 A。 【知识模块】 数据类型、运算符与表达式 17 【正确答案】 A 【试题解析】 C语言中,能表示的数制有八进制、十六进制和十进制三种,没有二进制,答案选 A。 【知识模块】 数据类型、运算符与表达式 18 【正确 答案】 A 【试题解析】 考查用
17、户标识符。 C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线。用户自定义的标识符不能与关键字相同,而且尽量避免与预定义标识符相同。选项B)不能以数字开始;选项 C)、 D)为 C语言关键字,不能作为用户标识符。答案选 A)。 【知识模块】 数据类型、运算符与表达式 19 【正确答案】 A 【试题解析】 考查复合赋值运算符。 x-=x+x与 x=x-(x+x)等价,所以输出结果为A)。 【知识模块】 数据类型、运算符与表达式 20 【正确答案】 A 【试题解析】 考查常量。科学计数法中 E后应为整数,选项 B)错;要表示反斜杠,
18、应写作 ,选项 C)错; C语言没有千分号,选项 D)错。选项 A)表示的是八进制数 007所代表的字符串。答案选 A)。 【知识模块】 数据类型、运算符与表达式 21 【正确答案】 A 【试题解析】 定义变量时不能连续赋值,选项 B)错;保存指针变量的地址应使用指向指针的指针,选项 C)变量 c应为指向指针的指针,写作 *c; C语言中,分号为一个语句的结束标记,语句 到 a=0.0;遇到分号该语句已经结束,所以变量 b定义时没有类型说明符,可以改作 double a=0.0,b=1.1;或者 double a=0.0;double b=1.1;选项 D)错;每个字符常量都有唯一一个 ASC
19、II码与其对应,计算时,可以使用该字符常量也可以使用该字符常量对应的 ASCII码,选项 A)正确。 【知识模块】 数据类型、运算符与表达式 22 【正确答案】 A 【试题解析】 考查运算符与表达式。赋值运算符左侧只能为变量,不能为表达式,所以选项 B)、 C)错。强制类型转换时,数据类 型两侧的圆括号不能省,选项 D)错,应写作 (double)x/10。选项 A)为逗号表达式,符合 C语言语法。答案选 A)。 【知识模块】 数据类型、运算符与表达式 23 【正确答案】 A 【试题解析】 考查实型常量的科学计数法。科学计数法中, e/E前后必须有数字并且后面的数字必须为整数,所以答案选 A。
20、 【知识模块】 数据类型、运算符与表达式 24 【正确答案】 A 【试题解析】 考查标识符。定义的变量名要符合表示符的命名规则: C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线,由此答案选 A。 【知识模块】 数据类型、运算符与表达式 25 【正确答案】 A 【试题解析】 考查运算符与表达式。表达式 (int)(double)9/2)- 9%2先计算(double)9/2,结果为 4.5。然后被强制转换成 int型,结果为 4。接着计算 9%2,结果为 1,最后计算 4-1,结果为 3,。所以答案选 A。 【知识模块】 数据
21、类型、运算符与表达式 26 【正确答案】 A 【试题解析】 常量是指在程序运行过程中其 值不发生改变的量,和使用次数无关,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 27 【正确答案】 A 【试题解析】 考查用户标识符的命名规则。合法的标识符由字母、数字、下划线组成并且第一个字符不能为数字,由此选项 A)不合法。答案选 A)。 【知识模块】 数据类型、运算符与表达式 28 【正确答案】 A 【试题解析】 考查运算符与表达式。求余运算符 “% “要求参与运算的量均为整型,所以选项 B)错误;赋值运算符的左侧必须为变量而不能是表达式或者常量,选项 C)、 D)错;选 项 A)中的语句
22、 x=y=5;先判定关系表达式 y=5的值,然后把计算得到的值赋值给 x所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 29 【正确答案】 A 【试题解析】 科学计数法中, e/E前后必须有数字并且后面的数字必须为整数,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 30 【正确答案】 A 【试题解析】 C语言数据类型中没有逻辑类型,选项 A)叙述错误,所以答案选A)。 【知识模块】 数据类型、运算符与表达式 31 【正确答案】 A 【试题解析】 表达式 “k+“表示先取得变量 k的值作为整个表达式的值,然后变量 k再自加。所以除了选项 A)的表达式的值为 0外,其他几个
23、选项的表达式的值均为 1,故而答案选 A)。 【知识模块】 数据类型、运算符与表达式 32 【正确答案】 A 【试题解析】 C语言中可以用八进制、十进制和十六进制表示整型数据,但是在编译时会将每条可执行语句都转换为二进制的机器指令,所以 C程序运行过程中的所有计算都是以二进制的方式进行的。 C程序经过编译链接成功后才能生成可执行程序,选项 C)表述正确;字符变量是字符数据 在内存中的存储形式,存放的是字符的 ASCII值,选项 D)表述正确。故而答案选 A)。 【知识模块】 数据类型、运算符与表达式 33 【正确答案】 A 【试题解析】 2 2 C语言中的注释 “/*/“或者 “/“可以放在程序中的任何位置,但是不可以加在变量名或者关键字中间,会导致该变量名和关键字不被 C语言识别,选项 A)正确; C语言中变量的定义必须在变量使用之前,而且定义时该变量的作用域一定要能涵盖该变量的使用,所以定义的位置不是任意的,选项 B)错误;算术运算符两侧的运算数类型可以不一致,如加减乘 除运算符都没有对运算数类型进行限制,如果不一致,系统会对其进行相应的数据类型转换,选项C)错误;空格一般作为分隔符使用,数值常量中夹带空格就会把该数值常量分作两部分: 123和 12 3是不一样的,选项 D)错误;答案选 A)。 【知识模块】 数据类型、运算符与表达式