1、国家二级 C语言机试( C语言基础知识)模拟试卷 5及答案与解析 一、选择题 1 下列叙述中错误的是 ( A) C程序可以由多个程序文件组成 ( B)一个 C语言程序只能实现一种算法 ( C) C程序可以由一个或多个函数组成 ( D)一个 C函数可以单独作为一个 C程序文件存在 2 以下选项中关于程序模块化的叙述错误的是 ( A)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块 ( B)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 ( C)把程序分成若干相对独立的模块,可便于编 码和调试 ( D)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的
2、程序 3 以下不能用于描述算法的是 ( A)程序语句 ( B) E-R图 ( C)伪代码和流程图 ( D)文字叙述 4 以下叙述中正确的是 ( A)每个后缀为 c的 C语言源程序都应该包含一个 main函数 ( B)在 C语言程序中, ma in函数必须放在其他函数的最前面 ( C)每个后缀为 c的 C语言源程序都可以单独进行编译 ( D)在 C语言程序中,只有 main函数才可单独进行编译 5 对于一个正常运行的 C程序,以下叙述中 正确的是 ( A)程序的执行总是从程序的第一个函数开始,在 main函数结束 ( B)程序的执行总是从 main函数开始,在程序的最后一个函数中结束 ( C)程
3、序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 ( D)程序的执行总是从 main函数开始 6 以下叙述中错误的是 ( A) C程序在运行过程中所有计算都以二进制方式进行 ( B)所有 C程序都需要编译链接无误后才能运行 ( C) C程序在运行过程中所有计算都以十进制方式进行 ( D) C程序中字符变量存放的是字符的 ASC 值 7 C语言程 序的模块化通过以下哪个选项来实现 ( A)变量 ( B)程序行 ( C)函数 ( D)语句 8 C语言主要是借助以下哪种手段来实现程序模块化 ( A)定义常量和外部变量 ( B)使用丰富的数据类型 ( C)使用三种基本结构语句 ( D)定
4、义函数 9 以下关于结构化程序设计的叙述中正确的是 ( A)结构化程序使用 goto语句会很便捷 ( B)一个结构化程序必须同时由顺序、分支、循环三种结构组成 ( C)由三种基本结构构成的程序只能解决小规模的问题 ( D)在 C语言中,程序的模块化是利用函数实现的 10 以下关于 C语言的叙述中正确的是 ( A) C语言中的变量可以在使用之前的任何位置进行定义 ( B)在 C语言算 *表达式的书写中,运算符两侧的运算数类型必须一致 ( C) C语言的数值常量中夹带空格不影响常量值的正确表示 ( D) C语言中的注释不可以夹在变量名或关键字的中间 11 以下选项中不属于 C语言程序运算符的是 (
5、 A) sizeof ( B) ( ) ( C) ( D) 12 按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是 ( A)连接符 ( B)大写字 * ( C)数字字 符 ( D)下划线 13 以下选项中关于 C语言常量的叙述错误的是 ( A)常量分为整型常量、实型常量、字符常量和字符串常量 ( B)经常被使用的变量可以定义成常量 ( C)常量可分为数值型常量和非数值型常量 ( D)所谓常量,是指在程序运行过程中,其值不能被改变的量 14 以下选项中不能用作 C程序合法常量的是 ( A) 123 ( B) 1, 234 ( C) 123 ( D) x7D 15 关于 C语言的符号常
6、量,以下叙述中正确的是 ( A)符号常量的符号名是标识符,但必须大写 ( B)符号 常量在整个程序中其值都不能再被重新定义 ( C)符号常量是指在程序中通过宏定义用一个符号名来代表一个常量 ( D)符号常量的符号名必须是常量 16 以下选项中合法的变量是 ( A) 5a ( B) A ( C) 10 ( D) sizeof 17 以下叙述中错误的是 ( A)常量可以用一个符号名来代表 ( B)数值型常量有正值和负值的区分 ( C)常量是在程序运行过程中值不能被改变的量 ( D)定义符号常量必须用类型名来设定常量的类型 18 C源程序中不能表示的数制是 ( A)八进制 ( B)十进 制 ( C)
7、二进制 ( D)十六进制 19 以下不合法的数值常量是 ( A) 1e1 ( B) 011 ( C) 0xabcd ( D) 8 0E0 5 20 以下选项中合法的实型常量是 ( A) 914 ( B) 3 13e-2 1 ( C) 0 ( D) 2 0*10 21 sizeoffdotLble)是 ( A)一个双精度型表达式 ( B)一个整型表达式 ( C)一个不合法的表达式 ( D)一种函数调用 22 以下定义语句中正确的是 ( A) charA=65+1, b=b; ( B) inta=b=0; ( C) floata=1, *b a, *c= b; ( D) doublea=0 0;
8、b=1 1; 23 以下不能输出字符 A的语句是 (注:字符 A的 ASC 码值为 65,字符 a的ASC 码值为 97) ( A) printf( cn, a-32); ( B) printf( dn, A); ( C) printf( c11, 65); ( D) printf( cin, B-1); 24 已知字符 A的 ASC 代码值是 65,字符变量 c1的值是 A, c2的值是 D。则执行语句 printf( d, d, c1, c2-2);的输出结果是 ( A) A, 68 ( B) A, B ( C) 65, 66 ( D) 65.68 25 以下选项中非法的 C语言字符常量是
9、 ( A) 9 ( B) 09 ( C) x09 ( D) x9d 26 下面选项中合法的字符常量是 ( A) x ( B) abc ( C) x ( D) 27 若有定义语句: chara=82:则变量 a ( A)包含 1个字符 ( B)说明不合法 ( C)包含 2个字符 ( D) 包含 3个字符 28 有以下程序 main( ) chara=H; a: (a =A a =Z)?(a+32); a; printf( cn, a); ) 程序运行后的输出结果是 ( A) H ( B) A ( C) h ( D) a 29 若有代数式 (其中 e仅代表自然对数的底数,不是变量 ),则以下能够正
10、确表示该代数式的 C语言表达式是 ( A) sqrt(fabs(pow(n, x)+pow(x, e) ( B) sqrt(abs(nx+ex) ( C) sqrt(fabs(pow(n, x)+exp(x) ( D) sqrt(fabs(pow(x, n)+exp(x) 30 有以下定义: inta; longb; doublex, y; 则以下选项中正确的表达式是 ( A) 4 8 ( B) 3 3 ( C) 3 8 ( D) 4.3 31 不能正确表示数学式的 表达式是 ( A) a*b/c ( B) a/c*b ( C) a/b*C ( D) c) 32 若有定义: doublea=2
11、2; inti=0, k=18;则不符合 C语言规定的赋值语句是 ( A) i=(a+k) =(i+k); ( B) a=a+, i+; ( C) i=a l1; ( D) i=!a; 33 有以下程序 #include stdio h main( ) inta=1, b=0; printf( d, , b=a+b); printf( dn, a=2 ); 程序运行后的输出结果是 ( A) 1 0 ( B) 3, 2 ( C) 1, 2 ( D) 0, 0 34 表达式 a+=a-=a=9的值是 ( A) -9 ( B) 0 ( C) 18 ( D) 9 35 有以下程序 #include s
12、tdio h main( ) inta=3; printf( dn, (a+=a-=a*a); 程序运行后的输出结果是 ( A) 9 ( B) 0 ( C) 3 ( D) -12 36 设有定义: intx=2;以下表达式中,值不为 6的是 ( A) 2*x x+=2 ( B) x+, 2*x ( C) x*=(1+x) ( D) x*=x+1 37 设有定义: intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是 ( A) k+ ( B) k+=1 ( C) +k ( D) k+1 38 有以下程序 main( ) intsum, pad, pAd; sum=pad=5; pA
13、d=+sum, pAd+, +pad; printf( dha, pad); ) 程序的输出结果是 ( A) 5 ( B) 7 ( C) 8 ( D) 6 39 以下选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( A) x/2 ( B) x 2=0 ( C) x 21=0 ( D) x 2=1 40 以下叙述中正确的是 ( A) a表示一个字符常量 ( B) 0表示字符 0 ( C)表达式: a b的结果是 假 ( D) 是非法的 1 12逻辑运算符和逻辑表达式 41 当变量 c的值不为 2、 4、 6时,值也为 真 的表达式是 ( A) (c 2)(c 4)(c 6) ( B) (
14、c =2 c =6) !(c 2) ( C) (c =2 c =6) (c 21=1) ( D) (c =2 c =6)(c!=3)(c!=5) 42 有以下程序 main( ) intx=35, B; charz=B; B=(x) (z b); printf( dkn, B); ) 程序 运行后的输出结果是 ( A) 0 ( B) 35 ( C) 1 ( D) 66 43 以下叙述中正确的是 ( A)由构成的逻辑表达式与由 Il构成的逻辑表达式都有 短路 现象 ( B) C语言的关系表达式: 0 x ( C)逻辑 非 (即运算符 !)的运算级别是最低的 ( D)逻辑 或 (即运算符 )的运算
15、级别比算 *运算要高 国家二级 C语言机试( C语言基础知识)模拟试卷 5答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 算法是指为解决某个特定问题而采取的确定且有限的步骤。在 C语言 中一个算法是用函数来实现的。一个 C语言源程序由许多函数组成,这些函数都是根据实际任务,确定具体的算法,由用户自己编写。 C语言源程序可以放在不同的文件中,同一个源程序中的函数也可放在不同的文件中,所以一个 C语言程序可以实现多种算法。 【知识模块】 C语言基础知识 2 【正确答案】 B 【试题解析】 如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设计方法把若干独立模块组装成所要
16、求的程序。 【知识模块】 C语言基础知识 3 【正确答案】 B 【试题解析】 E R图为实体联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。描述算法的有流程图,盒图,伪代码,文字描述以及程序代码描述。 【知识模块】 C语言基础知识 4 【正确答案】 C 【试题解析】 每一个 C语言的文件或函数都可以单独编译,但只有 main函数的才可以执行。 【知识模块】 C语言基础知识 5 【正确答案】 D 【试题解析】 一个 C语言源程序无论包括了多少函数,在正常情况下总是从main函数开始执行,从 main函数结束。 【知识模块】 C语言基础知 识 6 【正确答案】 C 【试题解
17、析】 计算机程序都是编译为二进制的代码,计算机才会执行。 【知识模块】 C语言基础知识 7 【正确答案】 C 【试题解析】 用函数作为程序模块以实现 C程序的模块化,程序有多个函数构成,每个函数可以实现一个具体的功能,实现程序的模块化设计。 【知识模块】 C语言基础知识 8 【正确答案】 D 【试题解析】 C语言用函数实现软件的模块化设计。 【知识模块】 C语言基础知识 9 【正确答案】 D 【试题解析】 C语言是结构 化程序设计语言,顺序结构、选择结构、循环结构是结构化程序设计的三种基本结构,研究证明任何程序都可以由这三种基本结构组成。但是程序叮以包含一种或者几种结构,不是必须包含全部三种结
18、构。自从提倡结构化设计以来, goto就成了有争议的语句。首先,由于 goto语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次, goto语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重 要的计算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避免使用。由三种基本结构构成的程序几乎能解决大部分问题。 【知识模块】 C语言基础知识 10 【正确答案】 D 【试题解析】 C语言中的注释可以出现在程序中的任何位置,但是不能夹在变量或者关键字之间; C语言的变量在函数开始位置进行定义,也可以在变量使用前位置定义;一个浮点数可以和一个整数相加,运算
19、符两侧的运算类型也可以不一致;数值常量中不允许夹带空格。 【知识模块】 C语言基础知识 11 【正确答案】 C 【试题解析】 sizeof为测试内存的运算符, ( )为算 *运算符,为逻辑运算符。而不是 C语言的运算符, C语言中 !=表示不等于。 【知识模块】 C语言基础知识 12 【正确答案】 A 【试题解析】 在 C语言中,合法标识符的命令规则是:标识符可以由字 *、数字或下划线组成,并且第一个字符必须为字 *或下划线。在 C语言 的标识符中,大写字 *和小写字 *被认为是两个不同的字符。选项 A是连字符,不在 C语言规定的命名变量标识符的范围内。 【知识模块】 C语言基础知识 13 【
20、正确 答案】 B 【试题解析】 常量指在程序运行过程中,其值不能被改变的量。常量分为整型常量 (即整常数 )、实型常量、字符型常量和字符串常量。常量也可以按数据类型分为为数据常量和非数据常量。变量是指在程序运行过程中,其值能被改变的量。 【知识模块】 C语言基础知识 14 【正确答案】 B 【试题解析】 选项 B中的 1, 234在两侧加双引号才是 C程序的合法字符串常量。 【知识模块】 C语言基础知识 15 【正确答案】 C 【试题解析】 存 C语言程序中,用一个符号名来代表一个常量,称 为符号常量。注意:这个符号名必须在程序中进行特别的 ”指定 ”,并符合标识符的命名规则。一般在程序中都是
21、利用宏定义来定义符号常量的,在代码中可以利用 undef来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用人写。 【知识模块】 C语言基础知识 16 【正确答案】 C 【试题解析】 对于变量的命名要利用标识符命名,所谓标识符就是 C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成如下: 标识符由字 *、数字和下划线组成; 第一个字符必 须为字 *或下划线:因此选项 A中数字开头,选项 B出现了非法字符,而选项 D中 sizeof为关键字,不能为变量命名。 【知识模块】 C语言基础知识 17 【正确答案】 D 【试题解析】 C语言
22、中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式如下: #define符号常量名 (常量 )其中,符号常量名用标识符,习惯上用大写字 *,常量可以是数字常量,也可以是字符。 【知识模块】 C语言基础知识 18 【正确答案】 C 【试题解析】 在 C语言 的源程序中,数值可以用十进制、八进制和十六进制来表示。不用二进制来表示。 【知识模块】 C语言基础知识 19 【正确答案】 D 【试题解析】 实型常量又称为吱数或浮点数。在 C语言中,可以用两种形式表示一个实型常量。 小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必须要有小数点。 指数形
23、式用以 ”e”或 ”E”后跟一个整数来表示以 10为底的幂数。 C语言的语法规定,字 *e或 E之前必须要有数字,且 e或 E后面的指数必须为整数。因为选项 D中字 *E后面的指数为小数形式,所以选项 D这种表示 方法不合法。 【知识模块】 C语言基础知识 20 【正确答案】 A 【试题解析】 实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实犁常量分为以下两种形式: 小数形式:小数形式是由数字和小数点组成的一种实数表示形式。例如 0 345、 123、 0 0等是合法的实数。这种表示形式必须要有小数点。 指数形式:在 C语言中,用 ”e”或 ”E”后跟一个整数来表示以 10为底的幂
24、数。注意:字 *”e”或 ”E”之前必须要有数字,后而的指数必须为整数。选项B中 e后必须为整数,选项 C没有小数点,而选项 D则出现 非法字符 *。 【知识模块】 C语言基础知识 21 【正确答案】 B 【试题解析】 sizeof关键字为 C语言的运算符,用于测试 ( )内类型其变量所占内存,表达式结果返回十进制整数,因此为整犁表达式,表明变量所占的内存字节数。 【知识模块】 C语言基础知识 22 【正确答案】 A 【试题解析】 本题考查的是数据类型的定义并赋值,选项 B中对变量声明类型且赋值的情况是不允许出现的,必须单独定义且赋值。选项 C中对于指针变量 c的赋值须为同型指针,而 b为二级
25、指针。选项 D中 C语言允 许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号 ( )隔开,而不是用分号 (; )隔开;在计算机存储字符时将字符相应的 Asc 码以其对应的二进制进行存放,选项 A中的定义是合法的。 【知识模块】 C语言基础知识 23 【正确答案】 B 【试题解析】 在选项 B的输出函数中,大写字符 A以整型数据的形式输出。 【知识模块】 C语言基础知识 24 【正确答案】 C 【试题解析】 在 c语中,字符常量在内存中占一个字节,存放的是字符的 Asc码值。所有的字符常量都作为整 型量来处理。在本题中,输出语句用整型格式输出字符时,输出的是其 ASC 码值。囚为字
26、符 A和 D的 ASC 码值分别为 65和68,所以 c2 2=68 2=66。 【知识模块】 C语言基础知识 25 【正确答案】 B 【试题解析】 一个字符常量代表 ASc 字符集中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的 ASC 字符,这些字符常量也必须括存一对单引号内。其中反斜线后的八进制数可 以不用 0开头,但是不能有 8和 9字符出现。反斜线后的十六制数只可由小写字 *x开头。 【知识模块】 C语言基础知识 26 【正确答案】 C 【试题解析】 在程序中用单引号把一
27、个字符括起来作为字符常量。但是为了表示字符 ”要用两个 ”表示一个反斜杠。 【知识模块】 C语言基础知识 27 【正确答案】 B 【试题解析】 转义字符以一个反斜线开头后跟一个特定的字符,可以利用 ddd3位八进制数代表的一个 ASC 字符,也可以 xhh2位十六进制数代表的一个ASC 字符。选项 A中的八进制表示出现字符 8,非法。 【知识模块】 C语言基础知识 28 【正确答案】 C 【试题解析】 表达式 a=(a =A a =z)?(a+32): a,为条件表达式,如果 a是大写字符,则转换为小写字符存放到 a中,否则不变。 【知识模块】 C语言基础知识 29 【正确答案】 C 【试题解
28、析】 n和 e的 x幂次方,要分别调用 C语言的数学库函数doublepow(n,x)和 doubleexp(x),因为这两个函数的返回值都为 double型,对其两者的和计算绝对值,调用库 函数 doublefabs(pow(n,x)+exp(x),求出和的绝对值,再调用开平方函数 double sqrt(1abs(pow(n, x)+exp(x),这样计算出的结果就是题干中算 *表达式的值。 【知识模块】 C语言基础知识 30 【正确答案】 C 【试题解析】 表达式的计算过程为: 3 6 5/2+1 2+52=3 6 2+1 2+1=3 8。此题要注意 5/2的结果是 2,而不 2 5,因
29、为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。 【知识模块】 C语言基础知识 31 【正确答案】 C 【试题解析】 表达式的含义为 a乘以 b除以 c,选项 C正好曲解了这一个含义。 【知识模块】 C语言基础知识 32 【正确答案】 C 【试题解析】 在 C语言中,求余运算符的运算对象只能是整型,在题目中,变量 a是一个双精型实型变量。 【知识模块】 C语言基础知识 33 【正确答案】 C 【试题解析】 在主函数中定义了两个整型变量 a和 b,并把它们的初值分别设置为 1和 0;在第二条语句中,首先计算出 a和 b的和等于 1,把此值赋给变量 b,并在 屏幕上输出此时
30、变量 b的值 1;在第三条语句中,计算出 2乘以 1的积等于2,把 2赋给变量 a,再把变量 a的值在屏幕上输出。 【知识模块】 C语言基础知识 34 【正确答案】 B 【试题解析】 第一步 a=9,然后计算 a-a的值,并将此值赋给 a,因此此时a=0,最后计算 a+a,并将此值赋给 a,因此最终结果为 0。 【知识模块】 C语言基础知识 35 【正确答案】 D 【试题解析】 对于表达式 a+=a-=a*a相当于 a=a (a*a),然后计算 a=a+a, a的初值为 3,则表达式的值为 -12。 【知识模块】 C语言基础知识 36 【正确答案】 A 【试题解析】 在程序中,整型变量 x、
31、v的初值都为 1,赋值语句 z=x+, y+,+y右边的 ”x+, y+, +y”是一个逗号表达式,所以逗号表达式的值为 +y的值。执行逗号表达式 ”x+, y+, +y”后, x的值为 2, y的值为 3, z取逗号表达式的值,为 1。 【知识模块】 C语言基础知识 37 【正确答案】 A 【试题解析】 表达式 c=(a-=+a), (a+=b, b+=4)相当于逗号表达式,首先计算c=(a-=+a),其中 a-+a)等价于 a=a (+a),得到 a的值 0, c的值为 0,在计算(a+=b, b+=4)时, a和 b的初值为 0,计算以后, a为 0, b为 4。 【知识模块】 C语言基
32、础知识 38 【正确答案】 D 【试题解析】 条件表达式的形式如下:表达式!?表达式 2;表达式 3。其含义为当 ”表达式 1”的值为非零时,求出 ”表达式 2”的值,此时 ”表达式 2”的值就是整个条件表达式的值:当 ”表达式 1”的值为零时,则求 ”表达式 3”的值,这时 ”表达式 3”的值就是整个表达式的值。本题条件表达式的执行顺序是先求解表 达式 ”x v”的值,若其值为非 0(可以是正数,也 ”丁以是负数 ),则再求表达式 ”x+”的值,其值就是条件表达式的值;若表达式 ”x y”的值为 0,则再求表达式 ”y+”的值,其值就是条件表达式的值。 【知识模块】 C语言基础知识 39 【
33、正确答案】 B 【试题解析】 因为 x的值为大于 1的奇数,所以 x除以 2的余数等于 1。所以选项 B等于关系表达式的结果为假,即等于 0。 【知识模块】 C语言基础知识 40 【正确答案】 C 【试题解析】 字符常量可以参加关系运算,按照其存储的 Asc 码值进行比较,a b不成立,值为假。而 0表示 NULL, ASc 码值为 0。 【知识模块】 C语言基础知识 41 【正确答案】 D 【试题解析】 逻辑或运算中,只要有一项为真,表达式的值就为真,故选项 D中 c的值不为 2、 4、 6时,那么表达式 (c =2 c =6)以及 (c! =3)、 (c! =5)必有一个成立,表达式的值也为真。 【知识模块】 C语言基础知识 42 【正确答案】 C 【试题解析】 表达式 (x) (z b), x为 35非零,考虑表达式 z b,成立 ,则 B的值为 1。 【知识模块】 C语言基础知识 43 【正确答案】 A 【试题解析】 逻辑表达式的运算比较复杂,有短路现象,也就是首先计算 ”逻辑与 ”或者 ”逻辑或 ”运算的第 个运算量的值,根据表达式的值决定是否进行第二个量的值的计算。 ”逻辑与 ”和 ”逻辑或 ”运算低于关系运算和算 *运算。但是 ”逻辑非 ”运算却高于算 *运算。 【知识模块】 C语言基础知识