1、国家二级 C语言( C语言基础知识)机试模拟试卷 8及答案与解析 一、选择题 1 以下叙述中错误的是 ( A) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 ( B)用 C语言编写的程序称为源程序,它以 ASCII代码形式存放在一个文本文件中 ( C) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 ( D) C语言源程序经编译后生成后缀为 obi的目标程序 2 C语言源程序名的后缀是 ( A) exe ( B) obj ( C) c ( D) cp 3 以下叙 述中正确的是 ( A)每个后缀为 c的 C语言源程序都应该包含一个 main函数 (
2、 B)在 C语言程序中, main函数必须放在其他函数的最前面 ( C)每个后缀为 c的 C语言源程序都可以单独进行编译 ( D)在 C语言程序中,只有 main函数才可单独进行编译 4 以下叙述中错误的是 ( A) C程序在运行过程中所有计算都以二进制方式进行 ( B)所有 C程序都需要编译链接无误后才能运行 ( C) C程序在运行过程中所有计算都以十进制方式进行 ( D) C程序中字符变量存放的是字符的 ASCII值 5 以下叙述中正确 的是 ( A) C语言程序总是从最前面的函数开始执行 ( B) C语言程序总是从 main函数开始执行 ( C) C语言程序中 main函数必须放在程序的
3、开始位置 ( D) C语言程序所调用的函数必须放在 main函数的前面 6 以下叙述中正确的是 ( A) C程序书写格式严格,要求一行内只能写一个语句 ( B) C程序书写格式自由,一个语句可以写在多行上 ( C) C程序中的注释只能出现在程序的开始位置和语句的后面 ( D)用 C语言编写的程序只能放在一个程序文件中 7 若变量己正确定义并赋值,以下不能构成 C语句的选项 是 ( A) A=a+b: ( B) B+: ( C) a=a+b ( D) A?a: b; 8 以下选项中,不能作为合法常量的是 ( A) 1 234e04 ( B) 1 234e0 4 ( C) 1 234e-4 ( D
4、) 1 234e0 9 设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是 ( A) x+; printf(” d n”, x); ( B) +x; printf(” d n”, x); ( C) n=x+; printf(” d n”, n); ( D) n=+x; printf(” )d n”, n); 10 以下选项中,能用作用户标识符的是 ( A) _0_ ( B) 8_8 ( C) void ( D) unsigned 11 以下选项中不能用作 C程序合法常量的是 ( A) 123 ( B) 1, 234 ( C) 123 ( D) x7D 12 以下选项中不属于 C语
5、言标识符的是 ( A)用户标识符 ( B)关键字 ( C)常量 ( D)预定义标识符 13 与十进制数 200等值的十六进制数为 ( A) A8 ( B) A4 ( C) C8 ( D) C4 14 以下选项中能表示合法常量的是 ( A) “007“ ( B) 1 5E2 0 ( C) ( D) 1 200 15 以下选项中合法的实型常量是 ( A) 914 ( B) 3 13e-2 1 ( C) 0 ( D) 2 0*10 16 有以下说明和定义语句 struct student int age; char num8; ; struct student stu3=20, “200401“,
6、21, “200402“, 19, “200403“; struct student *p=stu; 以下选项中引用结构体变 量成员的表达式错误的是 ( A) (p+)- num ( B) P- num ( C) (*p) num ( D) stu3 age 17 以下选项中非法的字符常量是 ( A) 019 ( B) 65 ( C) xff ( D) 101 18 以下选项中不能作为 C语言合法常量的是 ( A) cd ( B) 0 1e+6 ( C) “ia“ ( D) “ 011“ 19 以下选项中非法的 C语言字符常量是 ( A) ( B) 09 ( C) x09 ( D) x9d 2
7、0 以下 叙述中正确的是 ( A)字符变量在定义时不能赋初值 ( B)同一英文字母的大写和小写形式代表的是同一个字符常量 ( C)字符常量可以参与任何整数运算 ( D)转义字符用 ( E)符号开头 21 以下正确的字符串常量是 ( A) abc ( B) Olympic Games ( C) “ ( D) “ “ 22 若有定义语句: int x=12, y=8, z;在其后执行语句 z=0 9+x y;则 z的值为 ( A) 1 9 ( B) 1 ( C) 2 ( D) 2 4 23 C语言程序中,运算对象必须是整型数的 运算符是 ( A) ( B) ( C) & ( D) * 24 设变量
8、己正确定义并赋值,以下正确的表达式是 ( A) x=y+z+5, +y ( B) int(15 8 5) ( C) x=y*5=x+z ( D) x=25 5 0 25 表达式 a+=a-=a=9的值是 ( A) -9 ( B) 0 ( C) 18 ( D) 9 26 有以下程序,程序运行后的输出结果是 main() int m=12, n=34; printf(“ d d“, m+, +n); printf(“ d d n“, n+, +m); ( A) 12353514 ( B) 12353513 ( C) 12343514 ( D) 12343513 27 设有定义: int k=0;以
9、下选项的四个表达式中与其他三个表达式的值不相同的是 ( A) k+ ( B) k+=1 ( C) +k ( D) k+1 28 以下选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( A) x 2 ( B) x 2!=0 ( C) x 2=0 ( D) x 2=1 29 当变量 c的值不为 2、 4、 6时,值也为 “真 ”的表达式是 ( A) (c=2)|(c=4)|(c=6) ( B) (c =2&c =6)&!(c 2) ( C) (c =2&c =6)&(c 21=1) ( D) (c =2&c =6)|(c!=3)|(c!=5) 30 以下叙述中正确的是 ( A)对于逻辑表达式
10、: a+&b+,设 a的值为 0,则求解表达式的值后, b的值会发生改变 ( B)对于逻辑表达式: a+|b+,设 a的值为 1,则求解表达式的值后, b的值会发生改变 ( C)关系运算符的结果有三种: 0, 1, -1 ( D) else不是一条独立的语句,它只是 if语句的一部分 国家二级 C语言( C语言基础知识)机试模拟试卷 8答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 C语言中的非执行语句例如宏定义命令,在预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。由高级语言编写的程序称为 “源程序 ”,把由二进制代码表示的程序称为 “目标程序 ”,
11、C语言编写的源程序就是一 ASCII的形式存放在文本文件中的。 C源程序经过 C编译程序编译之后生成一个后缀为 obj的二进制文件 (称为目标文件 ),然后由称为 “连接程序 ”(Link)的软件,把此 obj文件 与 C语言提供的各种库函数连接起来生成一个后缀为 EXE的可执行文件。 【知识模块】 C语言基础知识 2 【正确答案】 C 【试题解析】 由 C语言构成的指令序列称为 C源程序,源程序文件的后缀为“ c”。源程序经过 C编译程序编译生成后缀为 “ obj”的二进制文件 (称为目标文件 ),然后由称为 “连接程序 ”(Link)的软件把目标文件与 C语言提供的各种库函数连接起来,生成
12、后缀为 “ exe”的可执行文件。 【知识模块】 C语言基础知识 3 【正确答案】 C 【试题解析】 每一个 C语言的文 件或函数都可以单独编译,但只有 main函数的才可以执行。 【知识模块】 C语言基础知识 4 【正确答案】 C 【试题解析】 计算机程序都是编译为二进制的代码,计算机才会执行。 【知识模块】 C语言基础知识 5 【正确答案】 B 【试题解析】 C语言中一个源程序都有一个且只能有一个 main函数,即主函数; C语言规定必须用 main作为主函数名。其后的一对圆括号中可以是空的,但不能省略。程序中的 main()是主函数的起始行,也是 C程序执行的起始行。每一个程序都必须有一
13、个且只能有一个 主函数。一个 C程序总是从主函数开始执行,到 main函数体执行完后结束,而不论 main函数在整个程序中的位置如何。而调用函数的定义位置和调用没有直接关系。 【知识模块】 C语言基础知识 6 【正确答案】 B 【试题解析】 本题主要考查的是 C语言结构中的源程序书写格式这个知识点,在 C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置: C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上:由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。 【知识模块】 C语言基础知识 7 【正确答案】 C 【试题解析】 C语言语句的表示为分号,不加分号的
14、表达式不能看成 c语句。 【知识模块】 C语言基础知识 8 【正确答案】 B 【试题解析】 本题考查 C语言中的常量, C语言中字母 e或 E之前必须有数字,且 e或 E后面的指数必须为整数。选项 B)中字母 e后面是浮点数,错误,其他选项都是正确的常量。 【知识模块】 C语言基础知识 9 【正确答案】 C 【试题解析】 本题考查自增运算符。 +在前表示先自增然后使用, +在后面表示先使用然后自增。选项 A)中首先执行 x+,执行完后 x自增 1,然后 printf输出的是 x自增后的值:选项 B)首先执行 +, x的值增加 1,接着输出 x的值;选项 C)中 +在 x的后面,因此 n的值是
15、x自增前的值, printf输出韵是 x自增前的值,选项 D)中 +在 x的前面,因此 x首先自增,然后再赋值给 n, n的值是 x自增后的值,输出的也是 x自增后的值。 【知识模块】 C语言基础知识 10 【正确答案】 A 【试题解析】 在 C语言中,用户的标识符只能由字母或下划线开始。一般强调文见其义的命名方法。但是 C语 言中的保留字不能用作用户的标识符。而选项C)和 D)全部为保留字,选项 B)中以数字开头,这些都不正确。 【知识模块】 C语言基础知识 11 【正确答案】 B 【试题解析】 选项 B)中的 1, 234在两测加双引号才是 C程序的合法字符串常量。 【知识模块】 C语言基
16、础知识 12 【正确答案】 C 【试题解析】 C语言的标识符可分为以下 3类: 关键字。 C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如, int、 double、 if、 else、 while、 for等。 预定义标识符。即预先定义并具有特定含义的标识待。 用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数维等命名。 【知识模块】 C语言基础知识 13 【正确答案】 C 【试题解析】 本题考察了进制转换,十进制的数转换为十六进制规则:整数部分除以 16取余数,将余数倒过来排列。 【知识模块】
17、C语言基础知识 14 【正确答案】 A 【试题解析】 选项 D), 1200中间不能有逗号,否则编译时会认为是 1或出错 。选项 B), 2 0错误,必须为整数。选项 C),要表示字符斜杠常量 应该在反斜杠的前面再加上一个反斜杠。选项 A)为字符串常量,为正确选项。 【知识模块】 C语言基础知识 15 【正确答案】 A 【试题解析】 实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式: 小数形式:小数形式是由数字和小数点组成的一种实数表示形式。例如0 345、 123、 0 0等是合法的实数。这种表示形式必须要有小数点。 指数形式:在 C语言中,用 “e”或 “
18、E”后跟一个整数来表示以 10为底的幂数。注意:字母 “e”或 “E”之前必须要有数字,后面的指数必须为整数。 选项 B)中 e后必须为整数,选项 C)没有小数点,而选项 D)则出现非法字符。 【知识模块】 C语言基础知识 16 【正确答案】 D 【试题解析】 本题考查结构体和结构体指针, stu是一个结构体数组, p是结构体指针,且 p指向 stu数组,即 p指向了 stu数组的首元素地址。选项 A)中 p+表示先引用 p指针,然后 p指向下一个元素, (p+)- num表示取出 stu首元素的num值,然后 p指向 stu1元素地址;选项 B)是通 过结构体指针访问结构体元素,使用 “-
19、”运算符;选项 C)中 *p代表 stu0元素,因此 (*p)num表示stu0 num;选项 D)中, stu数组的长度为 3, stu3已经超出数组范围,错误。 【知识模块】 C语言基础知识 17 【正确答案】 A 【试题解析】 本题考查字符型常量。选项 A)错误,使用了转义字符 “ ”, 019以0开始表示 8进制, 8进制数字的范围是 0-7,没有 9;选项 B)、 C)和 D)正确。 【知识模块】 C语言基础知识 18 【正确答案】 A 【试题解析】 常量指的是在程序的运行过程中,其值不能被改变的量。在 C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项 B)0 1e
20、+6是用指数形式表示的实型常量。在 C语言中,用以 “e”或 “E”后一个整数来表示以10为底的幂数,以用这种形式表示实型常量时要注意 C语言的语法规定,字母 e或 E之前必须要有数字,且 e或 E后面的指数必须为整数,并且在字母 e或 E的前后以及数字之间不得插入空格。选项 C)中用双引号括起来表示的字符串 “a”。选项 D)中 011表示用单引号括起来的转义字符八制进数 011。选项 A)表示的字符 常量是非法的,在用单引号表示的字符常量中,只能包含一个字符,而选项 A)中包含两个字符。 【知识模块】 C语言基础知识 19 【正确答案】 B 【试题解析】 一个字符常量代表 ASCII字符集
21、中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的 ASCII字符,这些字符常量也必须括在一对单引号内。其中反斜线后的八进制数可以不用 0开头,但是不能有 8和 9字符出现。反斜线后的十六制数只可由小写字 母 x开头。 【知识模块】 C语言基础知识 20 【正确答案】 C 【试题解析】 一个字符常量代表 ASCII字符集中的一个字符,在 C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。 【知识模块】 C语言基础知识 21 【正确答案】 C 【试题解析
22、】 字符串常量是由双引号括起来的一串字符。在 C语言中。以一个反斜线开头后跟一个特定的字符,用来代表一个特定的 ASCII字符。利用两个 表示一个反斜杠,因此选项 D)的表示无法确认表示几个反斜杠。 【知识模块】 C语言基础知识 22 【正确答案】 B 【试题解析】 由于 x, y, z都是整型数据,所以 x除以 y的值为整型数值 1 1和 0 9相加得到 1 9,再转换为整型数 1赋给整型变量 z。 【知识模块】 C语言基础知识 23 【正确答案】 B 【试题解析】 要求参与运算的运算量为整型,其他三个运算符对于参与运算的运算量没有直接要求。 【知识模块】 C语言基础知识 24 【正确答案】
23、 A 【试题解析】 在赋值表达式中,赋值符号 “=”的左边只能为赋值的变量,不能为表达式 ,右边可以为常量或者是表达式,故选项 C)错误;在取余运算中,运算符 “ ”两边都必须是整型数据,所以选项 B)、 D)错误,选项 A)是 C语言中的逗号表达式。 【知识模块】 C语言基础知识 25 【正确答案】 B 【试题解析】 第一步 a=9然后计算 a-a的值并将此值赋给 a,因此此时a=0,最后计算 a+a,并将此值赋给 a,因此最终结果为 0。 【知识模块】 C语言基础知识 26 【正确答案】 A 【试题解析】 本题主要考查自加运算符,自加运算符 +在变量前表示先增加然后再使用, +在 变量后表
24、示先使用然再增加。本题中,第一个 printf语句 m+表示先输出 m的值,然后 m增加 1,因此首先输出的是 12,然后 m的值变成 13,+n表示 n首先增加 1变成 35然后输出,因此输出的是 35;在第二个 printf语句中, n+是先输出 n的值然后增加即输出 35, n的值变为 36, +m表示先增加m的值再输出, m的值由 13变成 14,故最后输出的是 14。 【知识模块】 C语言基础知识 27 【正确答案】 A 【试题解析】 因为题中有语句 “int k=0; ”,所以选项 B)、 C)、 D)都是对 k的值加 1。选项 A)的语句 k+表示先利用 k的值进行运算,然后 k
25、值才加 1。 【知识模块】 C语言基础知识 28 【正确答案】 C 【试题解析】 由于 x为大于 1的奇数,因此 x 2取余的值为 1,和 0不相等。 【知识模块】 C语言基础知识 29 【正确答案】 D 【试题解析】 逻辑或运算中,只要有一项为真,表达式的值就为真,故选项 D)中 c的值不为 2、 4、 6时,那么表达式 (c =2&c =6)以及 (c!=3)、 (c!=5)必有一个成立,表达式的值也为真。 【知识模块】 C语言基础知识 30 【正确答案】 D 【试题解析】 else不能单独使用,和 if匹配使用,要注意逻辑与运算和逻辑或运算出现的短路现象,关系运算结果仅有 0和 1。 【知识模块】 C语言基础知识