1、国家二级 C语言机试( C语言基础知识)模拟试卷 3及答案与解析 一、选择题 1 以下叙述中错误的是 ( A)结构化程序由顺序、分支、循环三种基本结构组成 ( B) C语言是一种结构化程序设计语言 ( C)使用三种基本结构构成的程序只能解决简单问题 ( D)结构化程序设计提倡模块化的设计方法 2 C语言源程序名的后缀是 ( A) exe ( B) obj ( C) c ( D) cp 3 以下叙述中正确的是 ( A)程序的算法只能使用流程图来描述 ( B) NS流程图只能描述简单的顺序结构的程序 ( C)计算机可以直接处理 C语言程序,不必进行任何转换 ( D)结构化程序的三种基本结构是循环结
2、构、选择结构、顺序结构 4 有以下程序 #include stdio h main() int s, t, A=10; double B=6: s=sizeof(A); t=sizeof(B); printf(“ d, d n“, s, t); 在 VC6平台上编译运行,程序运行后的输出结果是 ( A) 4, 4 ( B) 2, 4 ( C) 4, 8 ( D) 10, 6 5 以下叙述中正确的是 ( A)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 ( B) C语言程序将从源程序中第一个函数开始执行 ( C) main的各种大小写拼写形式都可以作为主函数名,如: MAIN
3、, Main等 ( D) C语言规定必须用 main作为主函数名,程序将从此开始执行 6 以下叙述正确的是 ( A) C语言程序是由过程和函数组成的 ( B) C语言函数可以嵌套调用,例如: fun(fun(x) ( C) C语言函数不可以单独编译 ( D) C语言 中除了 main函数,其他函数不可作为单独文件形式存在 7 C语言主要是借助以下哪种手段来实现程序模块化 ( A)定义常量和外部变量 ( B)使用丰富的数据类型 ( C)使用三种基本结构语句 ( D)定义函数 8 以下叙述中正确的是 ( A) C程序中的每一行只能写一条语句 ( B)简单 C语句必须以分号结束 ( C) C语言程序
4、中的注释必须与语句写在同一行 ( D) C语句必须在一行内写完 9 有以下程序 include , main() int a=0, b=0; *给 a赋值 a=10; b=20;给 b赋值木 * printf(“a+b= d n“, a+b); *输出计算结果 * ) 程序运行后的输出结果是 ( A) a+b=30 ( B) a+b=10 ( C)出错 ( D) a+b=0 10 若变量已正确定义并赋值,以下不能构成 C语句的选项是 ( A) A=a+b; ( B) B+; ( C) a=a+b ( D) A?a: b; 11 以下选项中,能用作数据常量的是 ( A) 115L ( B) 01
5、18 ( C) 1 5e1 5 ( D) o115 12 下列定义变量的语句中错误的是 ( A) float US$; ( B) double int_; ( C) char For; ( D) im_int; 13 以下选项中不能用作 C程序合法常量的是 ( A) 123 ( B) 1, 234 ( C) 123 ( D) X7D 14 关于 C语言的符号常量,以下叙述中正确的是 ( A)符号常量的符号名是标识符,但必须大写 ( B)符号常量在整个程序中其值都不能再被重新定义 ( C)符号常量是指在程序中通过宏定义朋一个符号名来代表一个常量 ( D)符号常量的 符号名必须是常量 15 以下选
6、项中合法的变量是 ( A) 5a ( B) A ( C) _10_ ( D) sizeof 16 以下叙述中错误的是 ( A)常量可以用一个符号名来代表 ( B)数值型常量有正值和负值的区分 ( C)常量是在程序运行过程中值不能被改变的量 ( D)定义符号常量必须用类型名来设定常量的类型 17 以下叙述中正确的是 ( A)在 C程序中的八进制和十六进制,可以是浮点数 ( B)八进制数的开头要使用英文字母 o,否则不能与十进制区分开 ( C)整型变量可以分为 int犁、 short型、 long型和 unsigned型四种 ( D)英文大写字母 X和英文小写字母 x都可以作为二进制数字的开头字符
7、 18 以下选项中可用作 C程序合法实数的是 ( A) 3 0e0 2 ( B) E9 ( C) 1e0 ( D) 9 12E 19 以下选项中合法的实型常量是 ( A) 914 ( B) 3 13e-2 1 ( C) 0 ( D) 2 0*10 20 sizeof(double)是 ( A)一个双精度型表达式 ( B)一个整型表达式 ( C)一个不合法的表达式 ( D)一种函数调用 21 以下不合法 的字符常量是 ( A) ( B) ( C) 018 ( D) xcc 22 以下选项中不能作为 C语言合法常量的是 ( A) cd ( B) 0 1e+6 ( C) a ( D) 011 23
8、已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。以下不能将变量 c中的大写字母转换为对应小写字母的语句是 ( A) c=(A+c) 26-a ( B) c=C+32 ( C) c=C-A+a ( D) c=(C-A) 26+a 24 若有定义语 句 char c= 101;则变量 c在内存中占 ( A) 2个字节 ( B) 3个字节 ( C) 1个字节 ( D) 4个字节 25 以下叙述中正确的是 ( A)字符变量在定义时不能赋初值 ( B)同一英文字母的大写和小写形式代表的是同一个字符常量 ( C)字符常量可以参与任何整数运算 ( D)转义字符用符号开头 26
9、 C语言中 char类型数据占字节数为 ( A) 2 ( B) 3 ( C) 1 ( D) 4 27 若有代数式 (其中 e仅代表自然对数的底数,不是变量 ),则以下能够正确表示该代数式的 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) 28 表达式 3 6 5 2+1 2+5 2的值是 ( A) 4 8 ( B) 3 3 ( C) 3 8 ( D) 4 3 29 不能正确表示数学式的 表
10、达式是 ( A) a*b c ( B) a c*b ( C) a b*c ( D) a*(b c) 30 设变量已正确定义 并赋值,以下正确的表达式是 ( A) x=y+z+5, +y ( B) int(15 8 5) ( C) x=y*5=X+Z ( D) x=25 5 0 31 若变量均已正确定义并赋值,以下合法的 C语言赋值语句是 ( A) x=n 2 5; ( B) x+n: i; ( C) x=5=4+1; ( D) x=y=5; 32 若有以下程序 #include main() int a=-11, b=10; a =b =-4: printf(“ d d n“, a, b);
11、则程序的输出结果是 ( A) -1 2 ( B) 5-2 ( C) 4-3 ( D) 5-3 33 若有定义和语句: 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 34 若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是 ( A) +x, y=x- ( B) x+1=y ( C) x=x+10=x+y ( D) double(x) 10 35 若有以下程序 #include stdio h main
12、() int a=0, b=0, c=0 c: (a+=+b, b+=4); printf(“ d, d, d n“, a, b, c); 则程序的输出结果是 ( A) 1, 5, 1 ( B) -1, 4, 4 ( C) 1, 5, 5 ( D) -1, 4, -1 36 以下选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( A) x 2 ( B) x 2=0 ( C) x 2!=0 ( D) x 2=1 37 以下叙述中正确的是 ( A) a表示一个字符常量 ( B) 0表示字符 0 ( C)表达式: a b的结果是 “假 ” ( D) 是非法的 38 当变量 C的值不为 2、 4
13、、 6时,值也为 “真 “的表达式是 ( A) (c=2)(c=4)(c=6) ( B) (c =2 c =6)&!(c 2) ( C) (c =2&c =6)&(c 2!=1) ( D) (c =2 &c =6)(c!=3)(c!=5) 39 有以下程序 main() int x=35, B; char z=B: B=(x)&(z b); printf(“ d n“, B); ) 程序运行后的输出结果是 ( A) 0 ( B) 35 ( C) 1 ( D) 66 40 以下叙述中正确的是 ( A)由 &构成的逻辑表达式与由 构成的逻辑表达式都有 “短路 ”现象 ( B) C语言的关系表达式:
14、 0 x ( C)逻辑 “非 ”(即运算符 !)的运算级别是最低的 ( D)逻辑 “或 ”(即运算符 )的运算级别比算术运算要高 41 下列关系表达 式中,结果为 “假 ”的是 ( A) (3 4)=1 ( B) (3+4) 6 ( C) (3!=4) 2 ( D) 3 =4 国家二级 C语言机试( C语言基础知识)模拟试卷 3答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 结构化程序由顺序结构、选择结构和循环结构 3种基本结构组成。已经证明,由 3种基本结构组成的算法可以解决任何复杂的问题。由 3种基本结构所构成的算法称为结构化算法:由 3种基本结构所构成的程序称为结构化程序。
15、【知识模块】 C语言基础知识 2 【正确答案】 C 【试题 解析】 由 C语言构成的指令序列称为 C源程序,源程序文件的后缀为“ c”。源程序经过 C编译程序编译生成后缀为 “ obj”的二进制文件 (称为目标文件 ),然后由称为 “连接程序 ”(Link)的软件把目标文件与 C语言提供的各种库函数连接起来,生成后缀为 “ exe”的可执行文件。 【知识模块】 C语言基础知识 3 【正确答案】 D 【试题解析】 结构化程序有三种基本结构循环结构、选择结构、顺序结构,描述算法常见的有文字描述,流程图,盒图,伪代码等。 N S图为盒图,可以描述比较复杂的程序结构,而计算机不能 直接处理 C程序,只
16、能处理二进制代码。 【知识模块】 C语言基础知识 4 【正确答案】 C 【试题解析】 关键字 sizeof用于测试不同类型变量所占的内存空间,返回所占的字节数。在 VC编译系统中,整型变量占用 4个字节的内存空间,而双精度型变量占用 8个字节的内存空间。 【知识模块】 C语言基础知识 5 【正确答案】 D 【试题解析】 C语言规定必须以 main作为主函数名。程序中的 main()是主函数的起始行,也是 C程序执行的起始行。每一个可执行的 C程序都必须有一个且只能有一个主函 数。一个 C程序中可以包含任意多个不同的函数,但只能有一个主函数。程序要从 main()函数开始执行,最后在 main(
17、)函数中结束。 【知识模块】 C语言基础知识 6 【正确答案】 B 【试题解析】 在 C语言中,允许函数的嵌套调用,即递归调用。在 C语言中不存在过程的概念,在 C语言中函数允许单独编译,可以作为单独的文件形式存在。 【知识模块】 C语言基础知识 7 【正确答案】 D 【试题解析】 C语言用函数实现软件的模块化设计。 【知识模块】 C语言基础知识 8 【正确答案】 B 【试题解析】 C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。 C语言注释是比较自由的,可以写在一行或者多行。 c语言规定每条语句和数据定义的最后必须有一个分号,分号是 C语句的必要组成部分。 【知识模块】 C
18、语言基础知识 9 【正确答案】 D 【试题解析】 C语言规定,在字符 “ *”和其后紧跟的第一个字符 “* ”中间的部分是注释内容,且注释部分的内容不参与程序的编译和运行,因此,本题中程序语句 “a=10; b=20; ”没有执行。 【知识模块】 C语言基础知识 10 【正确答案】 C 【试题解析】 C语言语句的表示为分号,不加分号的表达式不能看成 C语句。 【知识模块】 C语言基础知识 11 【正确答案】 A 【试题解析】 本题考查常量定义。数据常量可有 10进制、 8进制、 16进制、指数法等, 8进制数字为 0 7,第一个字符为 0,而不是 0。指数法表示时,指数部分须为整型,选项 A)
19、中数字后加入 L是说明此变量为长整型,是正确的常量表示形式。 【知识模块】 C语言基础知识 12 【正确答案】 A 【试题解析】 C语言规 定,变量的标识符只能由字母、数字或下划线 3种字符组成,且首字符必须为字母或下划线。在 C语言中大写字母和小写字母被认为是两个不同的字符。选项 B)定义的变量标识符 int和选项 D)定义的变量标识符 int与 C语言的关键字 int是不同的,是正确的变量标识。选项 C)定义的变量标识符 For与 C语言中的关键字 for是两个不同的标识符,而在选项 A)包含有特殊字符 $,因而其不符合 C语言的变量命名规定。 【知识模块】 C语言基础知识 13 【正确答
20、案】 B 【试题解析】 选项 B)中的 1, 234在两侧加双引号才是 C程序的合法字符串常量。 【知识模块】 C语言基础知识 14 【正确答案】 C 【试题解析】 在 C语言程序中,用一个符号名来代表一个常量,称为符号常量。注意:这个符号名必须在程序中进行特别的 “指定 ”,并符合标识符的命名规则。一般在程序中都是利用宏定义来定义符号常量的,在代码中可以利用 undef来结束符号常量的定义,然后进行重新定义,符号常量的大小写并没有特别的规定,一般时候为了和变量区分利用大写。 【知识模块】 C语言基础知识 15 【正确答案】 C 【试题解析】 对于变量的命 名要利用标识符命名,所谓标识符就是
21、C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成如下: 标识符由字母、数字和下划线组成; 第一个字符必须为字母或下划线; 因此选项 A)中数字开头,选项 B)出现了非法字符,而选项 D)中 sizeof为关键字,不能为变量命名。 【知识模块】 C语言基础知识 16 【正确答案】 D 【试题解析】 C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式如下: #define(常量 ) 其中, 可以是数字常量,也可以是字符。 【知识模块】 C语言基础知识 17 【正确答案】 C 【试题解析】 整型变量分为以下 4种类型: 基本型:以 int表
22、示。 短整型:以 short int表示,或以 short表示。 长整型:以 longinl表示,或以 long表示。 无符号型:以 unsigned int表示,选项 C)正确,实型常量仅有十进制表示形式,八进制以数字 0开头,十六进制开头为 0x或者 0X,不是二进制。 【知识模块】 C语言基础知识 18 【正确答案】 C 【试题解析】 C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母 e或 E之前必须要有数字,且字母 e或 E后面的指数必须为褴数。 【知识模块】 C语言基础知识 19 【正确答案】 A 【试题解析】 实型常量
23、又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式: 小数形式:小数形式是由数字和小数点组成的一种实数表示形式。例如0 345、 123、 0 0等是合法的实数。这种表示形式必须要有小数点。 指数形式:在 C语言中,用 “e”或 “E”后跟一个整数来表示以 10为底的幂数。注意:字母 “e”或 “E”之前必须要有数字,后面的指数必须为整数。选项 B)中 e后必须为整数,选项 C)没有小数点,而选项 D)则出现非法字符 *。 【知识模块】 C语言基础知识 20 【正确答案】 B 【试题解析】 sizeof关键字为 C语言的运算符,用于测试 ()内类型其变量所占内存,表达式
24、结果返回十进制整数,因此为整型表达式,表明变量所占的内存字节数。 【 知识模块】 C语言基础知识 21 【正确答案】 C 【试题解析】 在 C语言中,一个字符常量代表 ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。转义字符常量也是必须括在一对单引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符。在选项 C)中, 018是用八进制数来代表一个字符常量,所以其中的数字只能小于 8,并不包括 8。 【知识模块】 C语言基础知识 22 【正确答案】 A 【试题解析】 常量指的是在程序的运行过程中,其值不能被 改变的量。在 C语言中,包括整型常量
25、、实型常量、字符常量和字符串常量等类型。选项 B)0 1e+6是用指数形式表示的实型常量。在 C语言中,用以 “e”或 “E”后一个整数来表示以10为底的幂数。以用这种形式表示实型常量时要注意 C语言的语法规定,字母 e或 E之前必须要有数字,且 e或 E后面的指数必须为整数,并且在字母 e或 E的前后以及数字之间不得插入空格。选项 C)中用双引号括起来表示的字符串 a。选项 D)中 011表示用单引号括起来的转义字符八制进数 011。选项 A)表示的字符常量是非法的,在用单引号表示的字符常量中,只 能包含一个字符,而选项 A)中包含两个字符。 【知识模块】 C语言基础知识 23 【正确答案】
26、 A 【试题解析】 由题意可知,小写字符 a和大写字符 A的 ASC 代码相差为 32,所以选项 C)能将大写字符 C的 ASC 代码转换为小写字符 c的 ASC 代码;选项 D)和 C)左侧的表达式都是大写字符 C与大写字符 A的差与 a的 ASC 代码的和就是小写字符 c的 ASC 代码。而选项 A)中应该是加上 a,而不是减去 a。 【知识模块】 C语言基础知识 24 【正确答案】 C 【试题解析】 每个字 符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以 ASC 码的形式存放在变量的内存单元之中的。 【知识模块】 C语言基础知识 25 【正确答案】 C 【试题解析】 一
27、个字符常量代表 ASC 字符集中的一个字符,在 C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。 【知识模块】 C语言基础知识 26 【正确答案】 C 【试题解析】 C语言中 char类型数据占字节数为 1。 【知识模块】 C语言基础知识 27 【正确答案】 C 【试题解析】 n和 e的 x幂次方,要分别调用 C语言的数学库函数 double pow(n,x)和 double exp(x),因为这两个函数的返回值都为 double型,对其两者的和计算绝对值,调用库函数 doublefabs(pow(n,x)+exp(x),求出和的绝对值,再调用开平方函数 do
28、uble sqrt(fabs(pOW(n,x)+exp(x),这样计算出的结果就是题干中算术表达式的值。 【知识模块】 C语言基础知识 28 【正确答案】 C 【试题解析】 表达式的计算过程为: 3 6 5 2+1 2+52=3 6 2+1 2+1=3 8。此题要注意 5 2的结果是 2,而不 2 5,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。 【知识模块】 C语言基础知识 29 【正确答案】 C 【试题解析】 表达式的含义为 a乘以 b除以 c,选项 C)正好曲解了这一个含义。 【知识模块】 C语言基础知识 30 【正确答案】 A 【试题解析】 在赋值表达式中
29、,赋值符号 “=”的左边只能为赋值的变量,不能为表达式,右边可以为常量或者是表达式,故选项 C)错误;在取余运算中,运算符“ ”两边都必须是整型数据,所以选项 B)、 D)错误,选项 A)是 C语言中的逗号表达式。 【知识模块】 C语言基础知识 31 【正确答案】 D 【试题解析】 选项 D)的含义是把关系表达式 v=5的值赋给变量 x。所以这是一条正确的赋值语句。因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量。因为求余运算符 “ ”两侧的运算对象都应当是整型数据。 【知识模块】 C语言基础知识 32 【正确答案】 B 【试题解析】 对于语句 a =b =-4;相当于 a=a
30、 (b=b -4): a初值为 -11, b的初值为 10,则运算以后 10 -4值为 -2, -11 -2值为 5。 【知识模块】 C语言基础知识 33 【正确答案】 C 【试题解析】 在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到输入流中,不能随意加入空格等,否则无法得到正确的输入结果。 【知识模块】 C语言基础知识 34 【正确答案】 A 【试题解析】 用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式 1,表达式 2, ,表达式 n。最后一个表达 式的值就是此逗号表达式的值。所以选项 A)为 C语言中的逗号表达式。赋值表达式的左侧只能是变量,不能是常
31、量或表达式。强制类型转换表达式的形式为: (类型名 )(表达式 ),其中 (类型名 )称为强制类型转换运算符,数据类型两边的圆括号不能省略。 【知识模块】 C语言基础知识 35 【正确答案】 C 【试题解析】 对于语句 c=(a+=+b, b+=4);首先计算 a=a+(+b), a,b初值为0,则计算以后 a为 1, b为 1,然后计算 b+=4,得到 b的值为 5,此时表达式b+=4的值为整个逗号表达式的值,因此 c的 值为 5。 【知识模块】 C语言基础知识 36 【正确答案】 B 【试题解析】 因为 x的值为大于 1的奇数,所以 x除以 2的余数等于 1。所以选项 B)等于关系表达式的
32、结果为假,即等于 0。 【知识模块】 C语言基础知识 37 【正确答案】 C 【试题解析】 字符常量可以参加关系运算,按照其存储的 ASCII码值进行比较, a b不成立,值为假。而 0表示 NULL, ASCII码值为 0。 【知识模块】 C语言基础知识 38 【正确答案】 D 【试题解析】 逻辑或 运算中,只要有一项为真,表达式的值就为真,故选项 D)中 c的值不为 2、 4、 6时,那么表达式 (c =2&c =6)以及 (c!=3)、 (c!=5)必有一个成立,表达式的值也为真。 【知识模块】 C语言基础知识 39 【正确答案】 C 【试题解析】 表达式 (x)&(z b), x为 35非零,考虑表达式 z b,成立,则 B的值为 1。 【知识模块】 C语言基础知识 40 【正确答案】 A 【试题解析】 逻辑表达式的运算比较复杂,有短路现象,也就是首先计算 “逻辑与 ”或者 “逻辑或 ”运算的第一个运算量的值,根据表达式的值决定是否进行第二个量的值的计算。 “逻辑与 ”和 “逻辑或 ”运算低于关系运算和算术运算。但是 “逻辑非 ”运算却高于算术运算。 【知识模块】 C语言基础知识 41 【正确答案】 C 【试题解析】 关系表达式和逻辑表达式的结果为非零或者 0,其中 0表示假,而非零表示真,由于 3!=4的结果为 1,而 1 2的结果为假。 【知识模块】 C语言基础知识