1、国家二级 C语言机试(选择题)模拟试卷 13及答案与解析 一、选择题 1 若有定义语句: int a=3,b=2,c=1; 以下选项中错误的赋值表达式是( )。 ( A) a=(b=4)=3; ( B) a=b=c+1; ( C) a=(b=4) +c; ( D) a=1+(b=c=4); 2 以下选项中不能用作 C程序合法常量的是( )。 ( A) 1,234 ( B) 123 ( C) 123 ( D) x7D 3 表达式 a+=a -= a=9 的值是( )。 ( A) 0 ( B) -9 ( C) 18 ( D) 9 4 若有定义语句: int x=12, y=8, z; 在其后执行语
2、句 z= 0.9+x/y; 则 z的值为( )。 ( A) 1 ( B) 1.9 ( C) 2 ( D) 2.4 5 阅读以下程序 #include main() int case ; float printF; printf(“请输入 2个数: “); scanf(“%d %f“, printf(“%d %fn“,case,printF ); 该程序在编译时产生错误,其 出错原因是( )。 ( A)定义语句出错, case是关键字,不能用作用户自定义标识符 ( B)定义语句出错, printF不能用作用户自定义标识符 ( C)定义语句无错, scanf不能作为输入函数使用 ( D)定义语句无
3、错, printf不能输出 case的值 6 以下选项中合法的标识符是( )。 ( A) _11 ( B) 1 1 ( C) 1_1 ( D) 1_ _ 7 表达式 3.6-5/2+1.2+5%2的值是( )。 ( A) 3.8 ( B) 4.8 ( C) 3.3 ( D) 4.3 8 有以下定义: int a; long b; double x, y; 则以下选项中正确的表达式是( )。 ( A) a%(int)(x-y) ( B) a=x ( B) sizeof ( C) ( ) ( D) printf(“%fn“, (int)(x*1000+0.5)/(double)1000 ); 则程
4、序段的输出结果是( )。 ( A) 5.169000 ( B) 5.175000 ( C) 5.170000 ( D) 5.168000 20 以下选项中合法的实型常量是( )。 ( A) .914 ( B) 3.13e-2.1 ( C) 0 ( D) 2.0*10 21 以下叙述中正确的是( )。 ( A)在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式 ( B) a是实型变量, a=10在 C语言中是允许的,因此可以说:实型变量中可以存放整型数 ( C)若有 int a=4,b=9; 执行了 a=b后, a的值已由原值改变为 b的值, b的值变为0 ( D)若有 int a=4,
5、b=9; 执行了 a=b;b=a;之后, a的值为 9, b的值为 4 22 以下选项中合法的变量是( )。 ( A) _10_ ( B) 5a ( C) A% ( D) sizeof 23 有以下程序 #include main() int a=3; printf(“%dn“, ( a+=a-=a*a ); 程序运行后的输出结果是( )。 ( A) -12 ( B) 9 ( C) 0 ( D) 3 24 C语言中 double 类型数据占字节数为( )。 ( A) 8 ( B) 4 ( C) 12 ( D) 16 25 以下叙述中正确的是( )。 ( A)标识符总是由字母、数字和下划线组成,
6、且第一个字符不得为数字 ( B)标识符的长度不能任意长,最多只能包含 16个字符 ( C)语言中的关键字不能作变量名,但可以作为函数名 ( D)用户自定义的标识符必须 “见名知义 “,如果随意定义,则会出编译错误 26 以下叙述中正确的是( )。 ( A)整型常量和实型常量都是数值型常量 ( B)常量的类型不能从字面形式上区分,需要根据类型名来决定 ( C)预定义的标识符是 C语言关键字的一种,不能另作它用 ( D)只能在函数体内定义变量,其他地方不允许定义变量 27 以下叙述中正确的是( )。 ( A)整型变量可以分为 int型、 short型、 long型和 unsigned型四种 ( B
7、)在 C程序中的八进制和十六进制,可以是浮点数 ( C)八进制数的开头要使用英文字母 o,否则不能与十进制区分开 ( D)英文大写字母 X和英文小写字母 x都可以作为二进制数字的开头字符 28 C语言程序中,运算对象 必须是整型数的运算符是( )。 ( A) % ( B) / ( C) sum = pad = 5; pAd = +sum, pAd+, +pad; printf(“%dn“, pad ); 程序的输出结果是( )。 ( A) 6 ( B) 5 ( C) 7 ( D) 8 30 有以下程序 #include main() int a=3; a+=a-=a*a; printf( “%
8、dn“, a ); 程序的输出结果是( )。 ( A) -12 ( B) 9 ( C) 3 ( D) 0 31 sizeof( double )是( )。 ( A)一个整型表达式 ( B)一个双精度型表达式 ( C)一个不合法的表达式 ( D)一种函数调用 32 C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是( )。 ( A)预定义标识符可用作用户标识符,但失去原有含义 ( B)关键字可用作用户标识符,但失去原有含义 ( C)在标识符中大 写字母和小写字母被认为是相同的字符 ( D)用户标识符可以由字母和数字任意顺序组成 33 以下选项中合法的常量是( )。 ( A)
9、0Xab ( B) 2.7e ( C) 9 9 9 ( D) 123E 0.2 34 以下叙述中错误的是( )。 ( A)定义符号常量必须用类型名来设定常量的类型 ( B)常量可以用一个符号名来代表 ( C)数值型常量有正值和负值的区分 ( D)常量是在程序运行过程中值不能被改变的量 35 C语言的常量包括数值型常量和符号常量,以下叙述正确的是( )。 ( A)数值型常量 1.0和 1所占内存的大小不同 ( B)不能用 sizeof求数值型常量所占内存的大小 ( C)不能用 sizeof求符号常量所占内存的大小 ( D)可以用 a = (int)(-1.53*3); printf(“%dn“,
10、 a); 程序的运行结果是( )。 ( A) -4 ( B) -3 ( C) -5 ( D)结果不确定 37 关于 C语言的变量名,以下叙述正确的是( )。 ( A)变 量名不可以与关键字同名 ( B)变量名不可以与预定义标识符同名 ( C)变量名必须以字母开头 ( D)变量名是没有长度限制的 38 有以下程序 #include main() int a; a = (int)1.99*3; printf(“%dn“, a); 程序的运行结果是( )。 ( A) 3 ( B) 5 ( C) 6 ( D)结果不确定 39 以下选项中可用作 C语言中合法用户标识符的是( )。 ( A) _123 (
11、 B) void ( C) -abc ( D) 2a 40 以下选项中合法的 C语言赋值语句是( )。 ( A) +i; ( B) a=b=34 ( C) a=3,b=9 ( D) k=int( a+b ); 国家二级 C语言机试(选择题)模拟试卷 13答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 赋值运算符的左侧必须为变量而不能是表达式或者常量,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 2 【正确答案】 A 【试题解析】 123表示用 3位八进制数字表示的字符,选项 B)正确; “x7D“表示用两位十六进制数表示的 字符串,选项 D)正确。而 C语言没有千分号,
12、选项A)错误,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 3 【正确答案】 A 【试题解析】 表达式 a+=a -= a=9,先计算表达式 a=9,即将 9赋值给 a,然后计算 a-=a,得 a=0,最后计算 a+=a,最后表达式的值为 0,答案选 A。 【知识模块】 数据类型、运算符与表达式 4 【正确答案】 A 【试题解析】 考查运算符与表达式。若除法运算符 “/“的参与量均为整型,则结果也为整型。所以 x/y的结果应为 1,如果赋值运算符 两边的数据类型不相同,系统将自动进行类型转换,把右边的类型转换成左边的类型,所以 z的值最终为 1,答案选 A。 【知识模块】 数据类
13、型、运算符与表达式 5 【正确答案】 A 【试题解析】 用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同,而 case为系统关键字,故而产生编译错误,答案选 A。 【知识模块】 数据类型、运算符与表达式 6 【正确答案】 A 【试题解析】 C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线,答案选 A。 【知识模块】 数据类型、运算符与表达式 7 【正确答案】 A 【试题解析】 考查运算符与表达式。运算符有优先级,优先级越高的先进行计算。所以该表达式中先计算除法和求余运算,再进行加减运算。如果除法运算符“/“
14、的参与量均为整型,则结果也为整型。所以表达式 “5/2“的结果为 2;求余运算符 “%“的参与量必须为整数,表达式 “5%2“的结果为 1,最后计算 3.6-2+1.2+1,结果为 3.8,答案选 A。 【知识模块】 数据类型、运算符与表达式 8 【正确答案】 A 【试题解析】 C语言中没有 “运算符,如果要判定两个变量不等,应使用运算符 “!=“,选项 B)错误;求余运算符 “%“两侧的参与量必须为整型,所以选项C)错误,选项 A)正确;赋值运算符的左侧只能为变量,不能为常量或者表达式,选项 D)错误;答案选 A)。 【知识模块】 数据类型、运算符与表达式 9 【正确答案】 A 【试题解析】
15、 表达式 “a %= b %= 4;“先计算表 达式 “b %= 4;“的值, b为 2,然后计算表达式 “a %= b“即 “a=a%b“得 a为 -1,所以输出结果为选项 A)。 【知识模块】 数据类型、运算符与表达式 10 【正确答案】 A 【试题解析】 C语言中,可以用一个用户自定义标识符来表示一个常量,称为符号常量,符号常量的标识符习惯大写,但是也可以用小写字符,选项 B)错误;宏定义可以放在程序中的任意位置,所以可以在程序中间重新定义相同符号常量的值,选项 C)错误;符号常量的符号名可以为一个常量或者字符串,选项 D)错误;由此答案选 A)。 【知识模块】 数据类型、运算符与表达式
16、 11 【正确答案】 A 【试题解析】 表达式 “a %= b %= 4;“先计算表达式 “b %= 4;“的值, b为 2,然后计算表达式 “a %= b“即 “a=a%b“得 a为 -1,所以输出结果为选项 A)。 【知识模块】 数据类型、运算符与表达式 12 【正确答案】 A 【试题解析】 表达式 “c= (a -= +a), (a+=b, b+=4)“中,先计算括号内的表达式:“(a -= +a)“得 a为 0;然后把该表达式的值赋值给 c,所以 c为 0; “(a+=b, b+=4)“为一个逗号表达式,整个逗号表达式的值为最后一个表达式的值,即为 4,其中 b的值为 4;所以答案为
17、A)。 【知识模块】 数据类型、运算符与表达式 13 【正确答案】 A 【试题解析】 逗号运算符连接的是两个表达式,不能连接空语句,答案选 A。 【知识模块】 数据类型、运算符与表达式 14 【正确答案】 A 【试题解析】 变量是指在程序运行过程中,其值发生变化的量,所有变量在使用前均需要先定义后使用,并且变量的命名规则需要符合标识符的命名规则:由字母、数字、下划 线组成并且第一个字符不能为数字,答案选 A。 【知识模块】 数据类型、运算符与表达式 15 【正确答案】 A 【试题解析】 考查运算符与表达式。若除法运算符 “/“的参与量均为整型,则结果也为整型,所以表达式 “a /= b /=
18、-4;“先计算表达式 “b /= -4;“的值, b为 -2,然后计算表达式 “a /= b“即 “a=a/b“得 a为 5,所以输出结果为选项 A)。 【知识模块】 数据类型、运算符与表达式 16 【正确答案】 A 【试题解析】 考查运算符与表达式。表达式 “c= (a+=+b, b+=4);“中 (a+=+b, b+=4)为逗号表达式,先计算 “a+=+b“得 b=1, a=1。然后计算 “b+=4“得 b=5,所以整个逗号表达式的值为 5,即 c=5.最终输出结果为 A)。 【知识模块】 数据类型、运算符与表达式 17 【正确答案】 A 【试题解析】 C语言中,标识符分为:关键字、预定义
19、标识符和用户标识符三种,答案选 A。 【知识模块】 数据类型、运算符与表达式 18 【正确答案】 A 【试题解析】 C语言中没有 “运算符,如果要判定两个变量不 等,应使用运算符 “!=“,答案选 A。 【知识模块】 数据类型、运算符与表达式 19 【正确答案】 A 【试题解析】 表达式 “(int)(x*1000+0.5)/(double)1000“先计算 “(x*1000+0.5)“,结果为 5169.44,将其转化为 int型,得表达式 “(int)(x*1000+0.5)“的值为 5169,所以整个表达式 “(int)(x*1000+0.5)/(double)1000“的值为 5.16
20、9,输出结果为 A)。 【知识模块】 数据类型、运算符与表达式 20 【正确答案】 A 【试题解析】 科学计数法中, e/E前后必须有数字并且后面的数字必须为整数,选项 B)错; 0为整型常量,不为实型常量,选项 C)错误;实型常量不是表达式,选项 D)错误;小数形式的实型常量,若整数部分为 0,则该整数部分可以省略,选项 A)正确,答案选 A)。 【知识模块】 数据类型、运算符与表达式 21 【正确答案】 A 【试题解析】 实型变量只能存放实型数据,把一个整型数据赋值给实型变量会将该整型转成实型,选项 B)错误;赋值语句 “a=b“是把 b的值赋值给 a,而 b的值不会发生改变 ,选项 C)
21、错误;赋值语句 “a=b;b=a;“先把 b的值指给 a,此时a=9, b=9,然后把 a的值赋值给 b, a、 b为 9,选项 D)错误;赋值运算符的左侧必须为变量,右侧可以是变量或者任意的表达式,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 22 【正确答案】 A 【试题解析】 C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线。变量为用户标识符,命名方法需要遵循标识符的命名规则,答案选 A。 【知识模块】 数据类型、 运算符与表达式 23 【正确答案】 A 【试题解析】 表达式 “( a+=a-=a*a )“
22、,先计算表达式 “a-=a*a“,即 “a=a-a*a“,结果为 “a=-6“然后计算 “a+=a“即 “a=a+a“,得 a=-12,所以输出结果为 A)。 【知识模块】 数据类型、运算符与表达式 24 【正确答案】 A 【试题解析】 实型数据中, float类型占用字节数为 4,而 double类型占用的字节数为 8,答案选 A。 【知识模块】 数据类型、运算符与表达式 25 【正确答案】 A 【 试题解析】 C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线,选项 A)正确;标识符的长度没有限制,选项 B)错误;用户标识符
23、不能与关键字相同,并且尽量避免和预定义标识符相同,而变量名和函数名都属于用户标识符,都不能与关键字相同,选项 C);只要符合用户标识符的命名规则就不会出现编译错误, “见名知义“只不过增加了程序的可读性,选项 D)错误。所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 26 【正确答案】 A 【试题解析】 数值型常量包括整型常量、实型常量和字符常量,选项 A)正确;变量的类型通过类型名区分,常量则是通过字面形式区分,如 3为整型常量, 3.14为实型常量, h即为符号常量,选项 B)错误; C语言标识符包括关键字、预定义标识符、用户标识符三种,预定义标识符和关键字不同,虽然可以作为用
24、户标识符使用,但是不建议另作他用,选项 C)错误;变量有全局变量和局部变量之分,局部变量在函数体内定义,全局变量可以在函数体外定义,选项 D)错误;答案选 A)。 【知识模块】 数据类型、运算符与表达式 27 【正确答案】 A 【试题解析】 八进制和十六进制是对整型常量的描述,不能为浮点数据,选项B)错误;八进制开头以数字 0开始,选项 C)错误; C语言中没有二进制, 0X和 0x是十六进制的前缀,选项 D)错误;答案选 A)。 【知识模块】 数据类型、运算符与表达式 28 【正确答案】 A 【试题解析】 求余运算符 “%“为求得两数相除后的余数,要求参与的两个运算量都必须为整型,答案选 A
25、。 【知识模块】 数据类型、运算符与表达式 29 【正确答案】 A 【试题解析】 C语言对字母大小写敏感, pAd与 pad不是 同一个变量,表达式“pAd = +sum, pAd+, +pad;“中牵扯到 pad的只有最后一个逗号后的表达式,pad=6,所以输出的最后结果为 A)。 【知识模块】 数据类型、运算符与表达式 30 【正确答案】 A 【试题解析】 表达式 “( a+=a-=a*a )“,先计算表达式 “a-=a*a“,即 “a=a-a*a“,结果为 “a=-6“然后计算 “a+=a“即 “a=a+a“,得 a=-12,所以输出结果为 A)。 【知识模块】 数据类型、运算符与表达式
26、 31 【正确答案】 A 【试题解析】 sizeof为求字节数的运算符,求得的是当前类型占用的字节数,计算的结果为一整型数据,答案选 A。 【知识模块】 数据类型、运算符与表达式 32 【正确答案】 A 【试题解析】 用户标识符不能与关键字相同,并且应尽量避免和预定义标识符相同。预定义标识符若作为用户标识符使用,则会失去其原有的含义,选项 A)正确,选项 B)错; C语言对大小写敏感,大小写不同的字母是不同的字符,选项C)错;用户标识符由字母、数字、下划线组成并且第一个字符不能为数字,而不是任意顺序,选项 D)错;答案选 A) 。 【知识模块】 数据类型、运算符与表达式 33 【正确答案】 A
27、 【试题解析】 科学计数法中, e/E前后必须有数字并且后面的数字必须为整数,选项 B)、 D)错;常量中不能有空格,选项 C)错;答案选 A)。 【知识模块】 数据类型、运算符与表达式 34 【正确答案】 A 【试题解析】 C语言中,用一个用户自定义标识符表示的一个常量,称为符号常量。符号常量没有类型;符号常量的值在其作用域内不能改变,也不能再次被赋值,答案选 A。 【知识模块】 数据类型、运算符与表达式 35 【正确答案】 A 【试题解析】 常量的类型通过字面形式区分, 1.0为实型常量, 1为整型常量,一个实型所占用的内存等于两个整型所占用的内存,选项 A)正确; sizeof为求字节数
28、的运算符,操作的对象可以是类型说明符、数组名或者表达式,所以既可以计算数值型常量所占内存也可以对符号常量计算内存,选项 B)、 C)错;符号常量在 C中不占用存储空间,所以就没有地址,不能用取地址运算符对其取地址,选项 D)错。答案选 A)。 【知识模块】 数据类型、运算符与表达式 36 【正确答案】 A 【试题解析】 考查数据类型之间的强制转换,程序中将表达式 (-1.53*3)的值 -4.59强制转换成 int型然后赋值给 a,处理方法是直接将小数部分舍去,保留带有符号的整数部分,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 37 【正确答案】 A 【试题解析】 变量名属于用户
29、标识符,需要符合用户标识符的命名规则,即由字母、数字、下划线组成并且第一个字符不能为数字。而且用户标识符不能与关键字相同,并且尽量避免和预定义标识符相同,不同的系统对变量名会有识别长度的限制。答案选 A。 【知识模块】 数据 类型、运算符与表达式 38 【正确答案】 A 【试题解析】 考查数据类型之间的强制转换,程序中将表达式 (int)1.99*3的值赋值给 a然后输出,表达式的计算流程是先用 int对 1.99取整然后与 3相乘,将float型数据强制转换成 int型的处理方法是直接将小数部分舍去,保留带有符号的整数部分,所以计算结果为 3,答案选 A。 【知识模块】 数据类型、运算符与表达式 39 【正确答案】 A 【试题解析】 用户标识符不能与关键字相同,尽量避免和预定义标识符相同,并且用户标识符的命名规则需符 合标识符的命名规则:由字母、数字、下划线组成并且第一个字符不能为数字。 void为 C语言关键字所以不能作为用户标识符,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 40 【正确答案】 A 【试题解析】 :考查赋值语句。 C语言语句在结尾必须有分号,没有分号则不合法,选项 B)、 C)错; C语言中强制转换类型需要将类型说明符给括起来,应该为 k=(int)(a+b),选项 D)错;答案选 A)。 【知识模块】 数据类型、运算符与表达式
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1