1、国家二级 C语言( C语言基础知识)机试模拟试卷 7及答案与解析 一、选择题 1 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是 ( A) C语言程序仅可以编译执行 ( B) C语言程序仅可以解释执行 ( C) C语言程序既可以编译执行又可以解释执行 ( D)以上说法都不对 2 以下选项中关于程序模块化的叙述错误的是 ( A)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块 ( B)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 ( C)把程序分成若 干相对独立的模块,可便于编码和调试 ( D)可采用自顶向下、逐步细化的设计方法把若干
2、独立模块组装成所要求的程序 3 以下叙述中正确的是 ( A)在 C语言程序设计中,所有函数必须保存在一个源文件中 ( B)在算法设计时,可以把复杂任务分解成一些简单的子任务 ( C)只要包含了三种基本结构的算法就是结构化程序 ( D)结构化程序必须包含所有的三种基本结构,缺一不可 4 以下叙述中正确的是 ( A)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 ( B) C语言程序将从源程序中第一个函数开 始执行 ( C) main的各种大小写拼写形式都可以作为主函数名,如: MAIN, Main等 ( D) C语言规定必须用 main作为主函数名,程序将从此开始执行 5 以下
3、叙述中正确的是 ( A)程序的主函数名除 main外,也可以使用 Main或 main ( B)在 C程序中,模块化主要是通过函数来实现的 ( C)程序可以包含多个主函数,但总是从第一个主函数处开始执行 ( D)书写源程序时,必须注意缩进格式,否则程序会有编译错误 6 以下叙述中正确的是 ( A) C程序中的每一行只能写一条语句 ( B)简单 C语句 必须以分号结束 ( C) C语言程序中的注释必须与语句写在同一行 ( D) C语句必须在一行内写完 7 以下选项中不属于 C语言程序运算符的是 ( A) sizeof ( B) () ( C) ( D) & 8 以下不能定义为用户标识符是 ( A
4、) Main ( B) _0 ( C) _int ( D) sizeof 9 关于 C语言中数的表示,以下叙述正确的是 ( A)只要允许范围内整型数和实型数都能精确的表示 ( B)只有整型数在允许范围内能精确无误的表示,实型数会有误差 ( C)只有实型数在允许范围内能精 确无误的表示,整型数会有误差 ( D)只有用八进制表示的数才不会有误差 10 按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是 ( A)连接符 ( B)大写字母 ( C)数字字符 ( D)下划线 11 以下关于 C语言数据类型使用的叙述中错误的是 ( A)若要保存带有多位小数的数据,可使用双精度类型 ( B)若要处
5、理如 “人员信息、 ”等含有不同类型的相关数据,应自定义结构体类型 ( C)若只处理 “真 ”和 “假 ”两种逻辑值,应使用逻辑类型 ( D)整数类型表示的自然数是准确无误差的 12 关于 C语言的变量,以下叙述中错误的是 ( A)所谓变量是指在程序运行过程中其值可以被改变的量 ( B)变量所占的存储单元地址可以随时改变 ( C)程序中用到的所有变量都必须先定义后才能使用 ( D)由三条下划线构成的符号名是合法的变量名 13 以下叙述中错误的是 ( A)常量可以用一个符号名来代表 ( B)数值型常量有正值和负值的区分 ( C)常量是在程序运行过程中值不能被改变的量 ( D)定义符号常量必须用类
6、型名来设定常量的类型 14 以下选项中合法的常量是 ( A) 2 7e ( B) 9 9 9 ( C) 123E0 2 ( D) 0Xab 15 若有以下程序段 double x=5 16894; printf(“ f n“, (int)(x*1000+0 5) (double)1000): 则程序段的输出结果是 ( A) 5 175000 ( B) 5 169000 ( C) 5 170000 ( D) 5 168000 16 以下选项中,值为 1的表达式是 ( A) 1 -0 ( B) 1-0 ( C) 1- 0 ( D) 0-0 17 设变量已正确定义,以下不能统计出一行中输入字符个数
7、(不包含回车符 )0的程序段是 ( A) n=0; while(ch=getchar()!= n)n+; ( B) n=0; while(getchar()1= n)n+; ( C) for(n=0; getchar()i=n; n+); ( D) n=0; for(ch=getchar0; ch!=ha; n+); 18 以下不能输出字符 A的语句是 (注:字符 A的 ASCII码值为 65,字符 a的ASCII码值为 97) ( A) printf(“ c n“, a-32); ( B) printf(“ d n“, A); ( C) printf(“ c n“, 65); ( D) pr
8、intf(“ c n“, B-1); 19 以下选项中非法的 C语言字符常量是 ( A) b ( B) 007 ( C) aa ( D) xaa 20 以下叙述中正确的是 ( A)字符常量在内存中占 2个字节 ( B)转义字符要用双引号括起来,以便与普通的字符常量区分开 ( C)字符常量需要用单引号括起来 ( D)字符常量是不能进行关系运算的 21 有以下程序,程序运行后的输出结果是 main()char a=H; a=(a =A&a =Z)?(a+321): a; printf(“ c n“, a); ( A) H ( B) A ( C) h ( D) a 22 表达式: (int)(dou
9、ble)9 2)-9 2的值是 ( A) 0 ( B) 4 ( C) 3 ( D) 5 23 不能正确表示数学式的 表达式是 ( A) a*b c ( B) a c*b ( C) a b*c ( D) a*(b c) 24 若有定义: double a=22; int i=0, k=18; 则不符合 C语言规定的赋值语句是 ( A) i=(a+k) =(i+k); ( B) a: a+, i+; ( C) i=a 11; ( D) i=!a; 25 若有定义语句: int a=3, b=2, c=1;以下选项中错误的赋值表达式是 ( A) a=b=c+1; ( B) a=(b=4)=3; (
10、C) a=(b=4)+c; ( D) a=1+(b=c=4); 26 若有定义和语句: int a, b; scanf(“ d, d, “, &a, &b): 以下选项中的输入数据,不能把值 3赋给变量 a、 5赋给变量 b的是 ( A) 3, 5 ( B) 3, 5, ( C) 3, 5 ( D) 3, 5, 4 27 若变量 x、 y己正确定义并贼值,以下符合 C语言语法的表达式是 ( A) +x, y=x- ( B) x+1=y ( C) x=x+10=x+y ( D) double(x) 10 28 若有定义 “int x, y; ”并已正确给变量赋值,则以下选项中与表达式 “(x-y
11、)?(x+): (y+)”中的条件表达式 (x-y)等价的是 ( A) (x-y 0) ( B) (x-y 0) ( C) (x-y 0|x-y 0) ( D) (x-y=0) 29 若 a是数值类型,则逻辑表达式 (a=1)|(a!=1)的值是 ( A) 0 ( B) 2 ( C) 1 ( D)不知道 a的值,不能确定 30 与数学表达式 xyz对应的 C语言表达式是 ( A) (x =y =z) ( B) (x =y)&(y =z) ( C) (x =y)!(y =z) ( D) (x =y)|(y =x) 国家二级 C语言( C语言基础知识)机试模拟试卷 7答案与解析 一、选择题 1 【
12、正确答案】 A 【试题解析】 C语言是编译型语言,只在编译链接后才能执行。 【知识模块】 C语言基础知识 2 【正确答案】 B 【试题解析】 如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设计方法把若干独立模块组装成所要求的程序, 【知识模块】 C语言基础知识 3 【正确答案】 B 【试题解析】 模块化设计思想,就是把复杂的任务分成简单的子任务,用函数或者过程描述子任务, C语言中一个程序可以包括多个源文件,每个源文件可以有若干个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一定全要包括这三种结构,而算法不等于程序。 【知识模块】 C语言基础知识 4
13、【正确 答案】 D 【试题解析】 C语言规定必须以 main作为主函数名。程序中的 main()是主函数的起始行,也是 C程序执行的起始行。每一个可执行的 C程序都必须有一个且只能有一个主函数。一个 C程序中可以包含任意多个不同的函数,但只能有一个主函数。程序要从 main()函数开始执行,最后在 main()函数中结束。 【知识模块】 C语言基础知识 5 【正确答案】 B 【试题解析】 C语言中任何一个有效的程序都有且只能有一个 main()函数,不能写成其他形式,一个 C程序总是从主函数开始执行,到 main函数体执行完后结束,而不论 main函数在整个程序中的位置如何。而为了代码清晰容易
14、看懂,最好加上注释,这是程序书写风格,与编译无关。 【知识模块】 C语言基础知识 6 【正确答案】 B 【试题解析】 C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。 C语言注释是比较自由的,可以写在一行或者多行。 C语言规定每条语句和数据定义的最后必须有一个分号 ,分号是 c语句的必要组成部分。 【知识模块】 C语言基础知识 7 【正确答案】 C 【试题解析】 sizeof为测试内存的运算符, ()为算 *运算符, &为逻辑运算符。而不是 C语言的运算符, C语言中 !=表示不等于。 【知识模块】 C语言基础知识 8 【正确答案】 D 【试题解析】 本题考查用户标识符。 C
15、语言中用户标识符只能由字母和数字组成,且必须以字母开头,不能和 C语言的关键字相同。选项 A)、 B)和 C)都符合要求,选项 D)中的 sizeof是 C语言关键字,不能作为用户标识符。 【知识模块】 C语言基础知识 9 【正确答案】 C 【试题解析】 本题考查 C语言基本数据类型,整型数是有范围的,只在允许的范围内才能精确无误的表示,实型数由于存储长度限制存在误差。 【知识模块】 C语言基础知识 10 【正确答案】 A 【试题解析】 在 C语言中,合法标识符的命令规则是:标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。在 C语言的标识符中,大写字母和小写字母被认为是两
16、个不同的字符。选项 A)是连字符,不在 C语言规定的命名变量标识符的范围内。 【知识模块】 C语言基础知识 11 【正确答案】 C 【试题解析】 在 C语言中没有定义逻辑类型,而是用 0代表假,用非零代表真。 【知识模块】 C语言基础知识 12 【正确答案】 B 【试题解析】 变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标示符的规定,其中下划线是标识的组成字符。程序中所有变量都必须先定义 后使用。 【知识模块】 C语言基础知
17、识 13 【正确答案】 D 【试题解析】 C语言中,常常用一个标识符来代表一个常量。称为符号常量。符号常量在使用之前要先定义,定义格式: #define符号常量名 (常量 )其中,符号常量名 )用标识符,习惯上用大写字母常量可以是数字常量,也可以是字符。 【知识模块】 C语言基础知识 14 【正确答案】 D 【试题解析】 0xab是十六进制表示的常量。 【知识模块】 C语言基础知识 15 【正确答案】 B 【试题解析】 (int)(x*1000+0 5) (double)1000表达式功能,保存数据 x的后三位小数,把第四位四舍五入。 【知识模块】 C语言基础知识 16 【正确答案】 C 【试
18、题解析】 在 C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为其对应的 ASCII码值再参与整数运算。字符 “1”对应的 ASCII码值是 49,字符 0对应的 ASCII码值是 48,字符 “ 0”是字符串结束标识符NuLL,其对应的 ASCII码值是 0。 【知识模块】 C语言基础知识 17 【 正确答案】 D 【试题解析】 本题主要考查循环的使用。选项 A)中,首先把输入的字符放到 ch变量中,然后判断 ch是否为回车符,如果不是则 n增加,循环结束条件是输入的是回车符;选项 B)中,直接判断 getchar函数的返回值是否是回车符,如果不是则 n增加,输入回车符循
19、环结束:选项 C)使用 for循环, n的初值为 0,每次循环 n增加 1,循环的结束条件是输入回车符;选项 D)中 for循环的初始条件 ch值为输入的字符,只有一次输入,不能统计输入的字符数。如果第一次输入的不是回车符循环不能结束。 【知识模块】 C语 言基础知识 18 【正确答案】 B 【试题解析】 在选项 B)的输出函数中,大写字符 A以整型数据的形式输出。 【知识模块】 C语言基础知识 19 【正确答案】 C 【试题解析】 一个宁符常量代表 ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。 【知识模块】 C语言基础知识 20 【正确答案】 C 【试题解析】
20、 在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的 AscIl字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。 【知识模块】 C语言基础知识 21 【正确答案】 C 【试题解析】 表达式 a=(a =A&a Z)?(a+32): a,为条件表达式,如果 a是大写字符,则转换为小写字符存放到 a中,否则不变。 【知识模块】 C语言基础知识 22 【正确答案】 C 【试题解析】 这个表达式的计算过程为,首先求出 9除以 2的商等于 4,再把其强制转化为实型数据为 4
21、 0,然后再强制转 4,减去 9对 2求余数 1,得到其结果等于 3。 【知识模块】 C语言基础知识 23 【正确答案】 C 【试题解析】 表达式的含义为 a乘以 b除以 c,选项 C)正好曲解了这一个含义。 【知识模块】 C语言基础知识 24 【正确答案】 C 【试题解析】 在 C语言中,求余运算符的运算对象只能是整型,在题目中,变量 a是一个双精型实型变量。 【知识模块】 C语言基础知识 25 【正确答案】 B 【试题解析】 本题主要考查赋值表达式,对于赋值表达式来说,赋值号 “=”的左边一定为变 量名,右边为一个 C语言合法的表达式。 【知识模块】 C语言基础知识 26 【正确答案】 C
22、 【试题解析】 在格式控制字符串中插入其他字符。则在输入的时候应该据实加入到输入流中,不能随意加入空格等。否则无法得到正确的输入结果。 【知识模块】 C语言基础知识 27 【正确答案】 A 【试题解析】 用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式 1,表达式 2, ,表达式 n。最后一个表达式的值就是此逗号表达式的值。所以选项 A)为 C语言中的逗号表达式。赋值表达 式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为: (类型名 )(表达式 ),其中 (类型名 )称为强制类型转换运算符,数据类型两边的圆括号不能省略。 【知识模块】 C语言基础知识
23、28 【正确答案】 D 【试题解析】 条传表达式的形式如下:表达式 1?表达式 2:表达式 3。其含义为当 “表达式 1”的值为非零时,求出 “表达式 2”的值,此时 “表达式 2”的值就是整个条件表达式的值;当 “表达式 1”的值为零时,则求 “表达式 3”的值,这时 “表达式3”的值就是整个表达式的值。本题条件表达式的执行顺序是 先求解表达式 “x-y”的值,若其值为非 0(可以是正数,也可以是负数 ),则再求表达式 “x+”的值,其值就是条件表达式的值:若表达式 “x-y”的值为 0,则再求表达式 “y+”的值,其值就是条件表达式的值。 【知识模块】 C语言基础知识 29 【正确答案】 C 【试题解析】 在逻辑表达式中, a|b,只有在 a跟 b都为 0时,表达式的结果才为 0。在题中所给的表达式中 a要么等于 1,要么不等于 1,肯定会有一方的值不为真,表达式值为 1。 【知识模块】 C语言基础知识 30 【正确答案】 B 【试题解析】 若要表示 x大于等于 y,同时 y大于等于 z,需要用逻辑与表达式连接。 【知识模块】 C语言基础知识