1、国家二级 C语言机试( C语言基础知识)模拟试卷 18及答案与解析 一、选择题 1 关于程序的编译执行和解释执行,以下叙述中正确的是 ( )。 ( A) C语言程序仅可以编译执行 ( B) C语言程序既可以编译执行又可以解释执行 ( C) C语言程序仅可以解释执行 ( D)以上说法都不对 2 关于 C语言程序的叙述中错误的是 ( )。 ( A)一个 C函数可以单独作为一个 C程序文件存在 ( B)一个 C语言程序只能实现一种算法 ( C) C语言程序可以由一个或多个函数组成 ( D) C语言程序可以由多个程序文件组成 3 关于 C语言程序及函数的叙述中正确的是 ( )。 ( A)程序可以包含多
2、个主函数,但总是从第一个主函数处开始执行 ( B)在 C程序中,模块化主要是通过函数来实现的 ( C)程序的主函数名除 main外,也可以使用 Main或 _main ( D)书写源程序时,必须注意缩进格式,否则程序会有编译错误 4 关于 C程序语句的叙述中正确的是 ( )。 ( A) C语句必须在一行内写完 ( B)简单 C语句必须以分号结束 ( C) C语言程序中的注释必须与语句写在同一行 ( D) C程序中的每一行只能写一条语句 5 非 法的用户标识符是 ( )。 ( A) Main ( B) _0 ( C) _int ( D) sizeof 6 合法的用户标识符是 ( )。 ( A)
3、_2007 ( B) y m d ( C) Dr Tom ( D) case 7 不合法的 C语言常量是 ( )。 ( A) 3, 141 ( B) 314 ( C) 314 ( D) x7G 8 以下表达式中,输出与其他三组不同的是 ( )。 ( A) m+; printf( d n, m); ( B) +m; printf( d n, m); ( C) n=x+; printf(” d n”, n); ( D) n=+x; printf( d n, n); 9 不合法的 C语言标识符是 ( )。 ( A) print ( B) &a ( C) while ( D) _00 10 不能出现在
4、 C语言标识符中的是 ( )。 ( A)连接符 ( B)小写字母 ( C)数字 ( D)下划线 11 会出错的 C语言表达式是 ( )。 ( A) double ; ( B) float int_; ( C) char For; ( D) int_int; 12 与 十进制数 200等值的十六进制数为 ( )。 ( A) A12 ( B) A8 ( C) C8 ( D) C4 13 C语言不能使用的数制是 ( )。 ( A)八进制 ( B)十进制 ( C)二进制 ( D)十六进制 14 合法的 C语言常量是 ( )。 ( A) 006 ( B) 2 5E2 0 ( C) ( D) 2, 345
5、 15 不合法的 C语言数值常量是 ( )。 ( A) lel ( B) 023 ( C) 0xabcd ( D) 1 0E0 2 16 以下程序段中不能统计出一行中输入字符个数 (不包含回车符 )的是 ( )。 ( A) for(n=0; getchar()! = n; n+); ( B) n=0; while(getchar()! = n)n+; ( C) n=0; while(ch=getchar()! = n)n+; ( D) n=0; for(ch=getchar(); ch! = n; n+); 17 正确的 C语言表达式是 ( )。 ( A) char A=65+1, b=b;
6、( B) int x=y=0; ( C) float a=1; int *p=&a, *q=&b; ( D) double a=0 0; b=1 1; 18 表达式: (int)(double)9 2)一 9 2的值是 ( )。 ( A) 5 ( B) 4 ( C) 3 ( D) 2 19 表达式 3 6 5 2+1 2+5 2的值是 ( )。 ( A) 1 8 ( B) 2 8 ( C) 3 8 ( D) 3 3 20 设 int k=l, m=2; float f=7;,则以下选项中错误的表达式是 ( )。 ( A)一 k+ ( B) k =(f=m) ( C) k (int)f ( D)
7、 2=k k 21 若有表达式 (w)? ( x): (+y),则其中与 w等价的表达式是 ( )。 ( A) w! =1 ( B) w=0 ( C) w=1 ( D) w! =0 22 以下程序的输出结果是 ( )。 #include main()int a=0, b=0, c=0; c=(a一 =+a), (a+=b, b+=4); printf( d, d, d n, a, b, c); ( A) 1, 4, 4 ( B) 1, 4, 0 ( C) 0, 4, 0 ( D) 0, 4, 4 23 以下程序的输出结果是 ( )。 main()int sum, pad, pad; sum=p
8、ad=5; pAd=+sum, pAd+, +pad; printf( d n, pad); ( A) 5 ( B) 7 ( C) 8 ( D) 6 24 关于逻辑表达式的叙述中正确的是 ( )。 ( A)关系运算符的结果有三种: 0, 1,一 1 ( B)对于逻辑表达式: a+ b+,设 a的值为 1,则求解表达式的值后, b的值会发生改变 ( C)对于逻辑表达式: a+&b+,设 a的值为 0,则求解表达式的值后, b的值会发生改变 ( D) else不是一条独立的语句,它只是 if语句的一部分 25 关于运算符的叙述中正确的是 ( )。 ( A)关系运算符两边的运算对象可以是 C语言中任
9、意合法的表达式 ( B)分支结构是根据算术表达式的结果来判断流程走向的 ( C)对于浮点变量 x和 y,表达式 x=y是非法的,会出编译错误 ( D)在 C语言中,逻辑真值和假值分别对应 1和 0 国家二级 C语言机试( C语言基础知识)模拟试卷 18答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 C语言属于编译型语言,只在编译链接后才能执行。 【知识模 块】 C语言基础知识 2 【正确答案】 B 【试题解析】 在一段 C语言程序中可以包含多个算法用来实现不同的任务,因为算法是指为解决某个特定问题而采取的确定且有限的步骤,它是通过函数来实现的。一个 C语言源程序由许多函数组成,这些
10、函数都是根据实际任务确定具体的算法,由用户自己编写。 C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个 C语言程序可以实现多种算法。 【知识模块】 C语言基础知识 3 【正确答案】 B 【试题解析】 C语言程序都有且只能有一个 main()函数,一个 C程序总是从main函数开始执行,到 main函数体执行完后结束,而不论 main函数在整个程序中的位置如何。而为了代码清晰容易看懂,最好加上注释,这是程序书写风格。与编译无关。 【知识模块】 C语言基础知识 4 【正确答案】 B 【试题解析】 C语言的源程序代码编写时的格式相对灵活,一行可写多条语句,一条语句
11、也可写在不同行上。 C语言注释也可以写在一行或者多行。 C语言规定每条语句和数据定义的最后必须有一个分号,分号是 C语句的必要组成部分。 【知识模块】 C语言基础知识 5 【正确答案】 D 【试题解析】 用户标识符只能由字母、下划线和数字组成,且必须以字母或者下划线开头,不能和 C语言的关键字相同。选项 A、 B和 C都符合要求,选项 D中的 sizeof是 C语言关键字,不能作为用户标识符。 【知识模块】 C语言基础知识 6 【正确答案】 A 【试题解析】 用户标识符只能由字母、下划线和数字组成,且必须以字母或者下划线开始。选项 A正确;选项 B中使用了一字符,选项 C使用了字符;选项 D中
12、的 case是 C语言关键字,不能作为用户标识符。 【知识模块】 C语言基础知识 7 【正确答案】 A 【试题解析】 选项 A错误,多了逗号;选项 B是字符常量;选项 C是整型常量;选项 D是字符常量。 【知识模块】 C语言基础知识 8 【正确答案】 C 【试题解析】 C语言中 +在前表示先自增然后使用, +在后面表示先使用然后自增。选项 A中首先执行 m+,执行完后 m自增 1,然后 printf输出的是 m自增后的值;选项 B首先执行 +m,脚的值增加 1,接着输出 m的值;选项 C中 +在x的后面,因此 n的值是 x自增前的值, printf输出的是 x自 增前的值;选项 D中+在 x的
13、前面,因此 x首先自增,然后再赋值给 n, n的值是 x自增后的值,输出的也是 x自增后的值。 【知识模块】 C语言基础知识 9 【正确答案】 B 【试题解析】 C语言合法的标识符要满足组成字符为 a z以及 A Z,数字字符0 9和下划线,其中数字不开头,不能是关键字。选项 B中, &不属于组成字符,是错误的。 【知识模块】 C语言基础知识 10 【正确答案】 A 【试题解析】 在 C语言中,标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。大写 字母和小写字母被认为是两个不同的字符。选项 A是连接符,不在 C语言规定的命名变量标识符的范围内。 【知识模块】 C语言基础知
14、识 11 【正确答案】 A 【试题解析】 C语言的变量名只能由字母、数字或下划线 3种字符组成,且首字符必须为字母或下划线。大写字母和小写字母被认为是两个不同的字符。选项 B定义的变量标识符 int_和选项 D定义的变量标识符 _int与 C语言的关键字 int是不同的是正确的变量标识。选项 C定义的变量标识符 For与 C语言中的关键字 for是两个不同的标识符,而在选项 A包含有特殊字符 ,因而 其不符合 C语言的变量命名规定。 【知识模块】 C语言基础知识 12 【正确答案】 C 【试题解析】 C语言中不同数制之间是可以转换的,十进制的数转换为十六进制规则:整数部分除以 16取余数,将余
15、数倒过来排列。 【知识模块】 C语言基础知识 13 【正确答案】 C 【试题解析】 在 C语言中的数值可以用十进制、八进制和十六进制来表示,但不用二进制来表不。 【知识模块】 C语言基础知识 14 【正确答案】 A 【试题解析】 选项 D中间不能有逗号。选项 B2 0错误,必须 为整数。选项 A要表示字符斜杠常量,应该在反斜杠的前面再加上一个反斜杠。选项 C为字符串常量,为正确选项。 【知识模块】 C语言基础知识 15 【正确答案】 D 【试题解析】 实型常量又称为实数或浮点数。在 C语言中,可以用两种形式表示一个实型常量。 小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必
16、须要有小数点。 指数形式用以 “e”或 “E”后跟一个整数来表示以 10为底的幂数。 C语言的语法规定,字母 e或 E之前必须要有数字,且 e或 E后面的指数必须为整数。因为选项 D中字母 E后面的指 数为小数形式,所以选项D这种表示方法不合法。 【知识模块】 C语言基础知识 16 【正确答案】 D 【试题解析】 本题主要考查循环的使用。选项 A中,使用 for循环, n的初值为0,每次循环 n增加 1,循环的结束条件是输入回车符;选项 B中,直接判断getchar函数的返回值是否是回车符,如果不足则 n增加,输入回车符循环结束;选项 C首先把输入的字符放到 ch变量中,然后判断 ch是否为回
17、车符,如果不是则 n增加,循环结束条件是输入的是同车符;选项 D中 for循环的初始条件 ch值为输入的字符,只有一次输入,不 能统计输入的字符数,如果第一次输入的不是回车符循环不能结束。 【知识模块】 C语言基础知识 17 【正确答案】 A 【试题解析】 C语言可以同时定义变量并赋值,选项 B中对变量声明类型且赋值的情况是不允许出现的。必须单独定义且赋值。选项 C中对于指针变量的赋值须为同型指针。选项 D中 C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号隔开,而不是用分号隔开;在计算机存储字符时将字符相应的 ASC 码以其对应的二进制进行存放,选项 A中的定义是合法的
18、。 【知识模块】 C语言基础知 识 18 【正确答案】 C 【试题解析】 C语言的计算过程与常规相似,这个表达式的计算过程为,首先求出 9除以 2的商等于 4,再把其强制转化为实型数据为 4 0,然后再强制转 4,减去 9对 2求余数 1,得到其结果等于 3。 【知识模块】 C语言基础知识 19 【正确答案】 C 【试题解析】 表达式的计算过程为: 3 65 2+1 2+5 2=3 62+1 2+1=3 8。此题要注意整数相除会丢掉小数位, 5 2的结果是 2,而不2 5,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也 被认定为整型。 【知识模块】 C语言基础知识 20 【正确答
19、案】 D 【试题解析】 在 C语言中的赋值表达式中,等号的左边必须是变量,等号右边可以是变量、表达式或者常量。选项 A是一个赋值表达式;选项 B是一个表达式;选项 C是计算余数表达式;选项 D错误,等号的左边不是变量。 【知识模块】 C语言基础知识 21 【正确答案】 D 【试题解析】 在 C语言问号表达式中 (w)? ( x): (+y)的含义是如果 w非 0那么表达式的值为 x,否则为 +y,因此只有选项 D和其等价。 【知 识模块】 C语言基础知识 22 【正确答案】 D 【试题解析】 表达式 c=(a =+a), (a+=b, b+=一 4)是一个逗号表达式, c的值为 a+=b, b
20、+=4的值,首先计算 c=(a =+a),其中 a =+a)等价于 a=a (+a),得到 a的值 0,在计算 (a+=b, b+=4)时, a和 b的初值为 0,计算以后, a为 0, b为 4,则 (a+=b, b+=4的值为 4), c的值也为 4。 【知识模块】 C语言基础知识 23 【正确答案】 D 【试题解析】 由逗号表达式构成的语句 “pAd=+sum, pAd+, +pad; ”主要从左到右连续运算,因此 pad的值为 6。 【知识模块】 C语言基础知识 24 【正确答案】 D 【试题解析】 在分支结构中 else不能单独使用,和 if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仅有 0和 1。 【知识模块】 C语言基础知识 25 【正确答案】 A 【试题解析】 C语言的分支结构根据表达式的值,不一定为算术表达式,选项 B错误;无法判断两个浮点变量是否相等,但是 x=y不会出现编译错误,选项 C错误; C语言中没有 逻辑类型,用非零表示逻辑真, 0表示逻辑假,选项 D错误。 【知识模块】 C语言基础知识