1、国家二级 C语言机试( C语言程序设计)模拟试卷 9及答案与解析 一、选择题 1 C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是 ( A)关键字可用作用户标识符,但失去原有含义 ( B)在标识符中大写字母和小写字母被认为是相同的字符 ( C)用户标识符可以由字母和数字任意顺序组成 ( D)预定义标识符可用作用户标识符,但失去原有含义 2 以下叙述中错误的是 ( A)常量可以用一个符号名来代表 ( B)数值型常量有正值和负值的区分 ( C)常量是在程序运行过程中值不能被改变的量 ( D)定义符号常量必须用类型名来设定常量的类型 3 与十进制数 200等值的十六进制数为 (
2、 A) A8 ( B) A4 ( C) C8 ( D) C4 4 以下选项中,合法的一组 C语言数值常量是 ( A) 12 0Xa23 4 5e0 ( B) 028 5e 3 0xf ( C) 177 4e1 5 0abC ( D) 0x8A 10, 000 3 e5 5 C源程序中不能表示的数制是 ( A)八进制 ( B)十进制 ( C)二进制 ( D)十六进制 6 以下叙述中正确的是 ( A)在 C程序中的八进制和十六 进制,可以是浮点数 ( B)八进制数的开头要使用英文字母 o,否则不能与十进制区分开 ( C)整型变量可以分为 int型、 short型、 long型和 unsigned型
3、四种 ( D)英文大写字母 X和英文小写字母 x都可以作为二进制数字的开头字符 7 以下选项中合法的常量是 ( A) 2 7e ( B) 999 ( C) 123E0 2 ( D) 0Xab 8 以下选项中能表示合法常量的是 ( A) 007 ( B) 1 5E2 0 ( C) “ ( D) 1200 9 以下选项中可用作 C程序合法实数的是 ( A) 3 0e0 2 ( B) E9 ( C) 1e0 ( D) 9 12E 10 以下不合法的数值常量是 ( A) 1e1 ( B) 011 ( C) 0xabcd ( D) 8 0E0 5 11 以下选项中正确的定义语句是 ( A) double
4、 a b 7; ( B) double a; b; ( C) double, a, b; ( D) double a 7, b 7; 12 若有以下程序段 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 13 以下选项中合法的实型常量是 ( A) .914 ( B) 3.13e 2.1 ( C) 0 ( D) 2.0*10 14 C语言中 double类型数据占字节数为 ( A)
5、 4 ( B) 12 ( C) 8 ( D) 16 15 以下叙述中正确的是 ( A)整型常量和实型常量都是数值型常量 ( B)常量的类型不能从字面形式上区分,需要根据类型名来决定 ( C)预定义的标识符是 C语言 关键字的一种,不能另作它用 ( D)只能在函数体内定义变量,其他地方不允许定义变量 16 sizeof(double)是 ( A)一个双精度型表达式 ( B)一个整型表达式 ( C)一个不合法的表达式 ( D)一种函数调用 17 以下选项中,值为 1的表达式是 ( A) 1 0 ( B) 1 0 ( C) 1 0 ( D) 0 0 18 有以下说明和定义语句 struct stud
6、ent int age; char nurn8; ; street student stu3 20,“200401“), 21, “200402“), 19, “200403“); struct student *p stu; 以下选项中引用结构体变量成员的表达式错误的是 ( A) (p*) nurn ( B) P nurn ( C) (*p).nurn ( D) stu3.age 19 以下合法的字符型常量是 ( A) X13 ( B) 081 ( C) 65 ( D) n 20 已有定义: char c;,程序前面已在命令中包含 ctype h文件。不能用于判断 C中的字 符是否为大写字母
7、的表达式是 ( A) isupper(C) ( B) A c Z ( C) A c&c Z ( D) c (z 32)&(a 32) c 21 以下选项中不属于字符常量的是 ( A) C ( B) C ( C) xCC ( D) 072 22 设变量已正确定义,以下不能统计出一行中输入字符个数 (不包含回车符 )0的程序段是 ( A) n 0; while(ch getchar()! n)n*; ( B) n 0; while(getchar()! n)n*; ( C) for(n 0; getchar()! n; n*); ( D) n 0; for(ch getchar(); ch! n;
8、 n*); 23 以下选项中非法的字符常量是 ( A) 019 ( B) 65 ( C) xff ( D) 101 24 以下定义语句中正确的是 ( A) char A 65 1, b b; ( B) int a b 0; ( C) float a 1, *b a, *c b; ( D) double a 0 0; b 1 1; 25 以下 不合法的字符常量是 ( A) “ ( B) ( C) 018 ( D) xcc 26 有以下程序,已知字母 A的 ASCII码为 65,程序运行后的输出结果是 main() char c1, c2; c1 A 8 4; c2 A 8 5; printf(“
9、 c, d n“, c1, c2); ( A) D, 69 ( B) E, 68 ( C) E, D ( D)输出无定值 27 以下不能输出字符 A的语句是 (注:字符 A的 ASCII码值为 65,字符 a的ASCII码值为 97) ( A) printf(“ c n“, a 32); ( B) printf(“ d n“, A); ( C) printf(“ c n“, 65); ( D) printf(“ c n“, B 1); 28 以下选项中不能作为 C语言合法常量的是 ( A) cd ( B) 0 1e 6 ( C) a ( D) 011 29 有以下定义语句,编译时会出现编译错误
10、的是 ( A) char a n; ( B) char a “aa“; ( C) char a a; ( D) char a x2d; 30 已知字符 A的 ASCII代码值是 65,字符变量 c1的值是 A, c2的值是 D。则执行语句 printf(“ d, d“, c1, c2 2);的输出结果是 ( A) A, 68 ( B) A, B ( C) 65, 66 ( D) 65, 68 国家二级 C语言机试( C语言程序设计)模拟试卷 9答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 预定义标识符是 c语言中的标识符,在 C语言中也有特定的含义,如函数 printf、 sca
11、nf、 sin等和编译预处理命令名 (如 define和 include)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。 【知识模块】 C语言程序设计 2 【正确答案】 D 【试题解析】 C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式: #define(常量 )其中, 可以是数字常量,也可以是字符。 【知识模块】 C语言程序设计 3 【正确答案】 C 【试题解析】 本题考察了进制转换,十进制的数转换为十六进制规则:整数部 分除以 16取余数,将余数倒过来排列。 【知识模块】 C语言程序设计 4 【正确答案】 A 【试题解析】
12、八进制数其开头必须是数字 “0”,其数字包括 0 7,而在选项 B中, 028是错误的。浮点数据的指数形式表示常量中, C语言规定字母 e或 E之前必须要有数字,且 e或 E之后的指数必须为整数,而选项 C中 4e1 5是错误的。在选项 D中,整型数据 10, 000的表示形式是错误的。 【知识模块】 C语言程序设计 5 【正确答案】 C 【试题解析】 在 C语言的源程序中,数值可以用十进制、八进制和十 六进制来表示。不用二进制来表示。 【知识模块】 C语言程序设计 6 【正确答案】 C 【试题解析】 整型变量分为以下 4种类型: 基本型:以 int表示。 短整型:以 short int表示,
13、或以 short表示。 长整型:以 long int表示,或以 long表示。 无符号型:以 unsigned int表示, 选项 C正确,实型常量仅有十进制表示形式,八进制以数字 0开头,十六进制开头为 0x或者 0X,不是二进制。 【知识模块】 C语言程序设计 7 【正确答案】 D 【试题解析】 0xab是十六进制表示的常量。 【知识模块】 C语言程序设计 8 【正确答案】 A 【试题解析】 选项 D, 1200中间不能有逗号,否则编译时会认为是 1或出错。选项 B, 2 0错误,必须为整数。选项 C,要表示字符斜杠常量 ,应该在反斜杠的前面再加上一个反斜杠。选项 A为字符串常量,为正确选
14、项。 【知识模块】 C语言程序设计 9 【正确答案】 C 【试题解析】 C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母 e或 E之前必须要有数字,且字母 e或 E后面的指数必须为整数。 【知识模块】 C语言程序设计 10 【正确答案】 D 【试题解析】 实型常量又称为实数或浮点数。在 C语言中,可以用两种形式表示一个实型常量。 小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必须要有小数点。 指数形式用以 “e”或 “E”后跟一个整数来表示以 10为底的幂数。 C语言的语法 规定,字母 e或 E之前必须要有数字
15、,且 e或 E后面的指数必须为整数。因为选项 D中字母 E后面的指数为小数形式,所以选项 D这种表示方法不合法。 【知识模块】 C语言程序设计 11 【正确答案】 D 【试题解析】 在 C语言中,可以用一条语句同时定义几个同类型的变量,变量之间用逗号隔开。 【知识模块】 C语言程序设计 12 【正确答案】 B 【试题解析】 (int)(x*1000 0 5) (double)1000表达式功能,保存数据 x的后三位小数,把第四位四舍五入。 【知识模块】 C语言程序设计 13 【正确答案】 A 【试题解析】 实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式: 小
16、数形式:小数形式是由数字和小数点组成的一种实数表示形式。例如0 345、 123、 0 0等是合法的实数。这种表示形式必须要有小数点。 指数形式:在 C语言中,用 “e”或 “E”后跟一个整数来表示以 10为底的幂数。注意:字母 “e”或 “E”之前必须要有数字,后面的指数必须为整数。选项 B中 e后必须为整数,选项 C没有小数点,而选项 D则出现非法字符 *。 【 知识模块】 C语言程序设计 14 【正确答案】 C 【试题解析】 double类型所占字节为 8。 【知识模块】 C语言程序设计 15 【正确答案】 A 【试题解析】 整型常量和实型常量都是数值型常量,选项 A正确;常量的类型可以
17、从字面上区分,比如整型常量不能有小数点,组成字符为 0 9等,选项 B错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项 C错误;变量可以定义在程序中任何的地方,属于不同的变量,选项 D错误。 【知识模块】 C语言程序 设计 16 【正确答案】 B 【试题解析】 sizcof关键字为 C语言的运算符,用于测试 ()内类型其变量所占内存,表达式结果返回十进制整数,因此为整型表达式,表明变量所占的内存字节数。 【知识模块】 C语言程序设计 17 【正确答案】 C 【试题解析】 在 C程序中,字符量可参与任何整数运算。字符参与运算时。首先要将字符转换为其对
18、应的 ASCII码值再参与整数运算。字符 1对应的 ASCII码值是 49,字符 0对应的 ASCII码值是 48,字符 0是字符串结束标识符NULL,其对 应的 ASCII码值是 0。 【知识模块】 C语言程序设计 18 【正确答案】 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语言程序设计 19 【正确答案】 A 【试题解析】 本题考查字符型常量。选项 A正确,使用了转义字符, x13表示16进制的 13;选项 B同样使用了转义字符,但 081错误,以 0开始表示 8进制,8进制数字的范围是 0 7,没有 8;选项 C错误, 65是一个字符串,不是字符;选项 D错误,换行符是 n。 【知识模块】 C语言程序设计 20 【正确答案】 D 【试题解析】 本题考查字符变量和逻辑运算。选项 A通过调 用函数 is
20、upper来判断字符 c是否是大小字母,满足要求;选项 B是逻辑表达式,不管 c为何值, A c为真或者假,然后再和 Z比较结果必然为真 (0和 1都小于, Z的 ASCII值 );选项 C是通过与运算来判断 c是否是大小字母;选项 D中 z 32和大小字母 Z相等,同样 a 32和大小字母 A相等。 【知识模块】 C语言程序设计 21 【正确答案】 B 【试题解析】 本题考查字符型常量。选项 A正确,是大小字母 C;选项 B错误,使用双引号括起来的是字符串,不是字符;选项 C正确,使用了转义 字符, xCC表示 16进制的 CC;选项 D正确,使用了转义字符、, 072表示 8进制的 72。
21、 【知识模块】 C语言程序设计 22 【正确答案】 D 【试题解析】 本题主要考查循环的使用。选项 A中,首先把输入的字符放到 ch变量中,然后判断 ch是否为回车符,如果不是则 n增加,循环结束条件是输入的是回车符;选项 B中,直接判断 getchar函数的返回值是否是回车符,如果不是则n增加,输入回车符循环结束;选项 C使用 for循环, n的初值为 0,每次循环 n增加 1,循环的结束条件是输入回车符;选项 D中 for循环的 初始条件 ch值为输入的字符,只有一次输入,不能统计输入的字符数,如果第一次输入的不是回车符循环不能结束。 【知识模块】 C语言程序设计 23 【正确答案】 A
22、【试题解析】 本题考查字符型常量。选项 A错误,使用了转义字符, 019以 0开始表示 8进制, 8进制数字的范围是 0 7,没有 9;选项 B、 C和 D正确。 【知识模块】 C语言程序设计 24 【正确答案】 A 【试题解析】 本题考查的是数据类型的定义并赋值,选项 B中对变量声明类型且赋值的情况是不允许出现的,必须单独定义且赋值。选 项 C中对于指针变量 c的赋值须为同型指针,而 &b为二级指针。选项 D中 C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号 (, )隔开,而不是用分号 (; )隔开;在计算机存储字符时将字符相应的 ASCII码以其对应的二进制进行存放
23、,选项 A中的定义是合法的。 【知识模块】 C语言程序设计 25 【正确答案】 C 【试题解析】 在 C语言中,一个字符常量代表 ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。转义字符常量也是必须括在一对单引号内,以一个反斜线开头后跟 一个特定的字符,用来代表某一个特定的ASCII字符。在选项 C中, 018是用八进制数来代表一个字符常量,所以其中的数字只能小于 8,并不包括 8。 【知识模块】 C语言程序设计 26 【正确答案】 B 【试题解析】 字符变量 c1的 ASCII值等于 69,而字符变量 c2的 ASCII值等于68,当分别以字符和整型输出 c1和
24、c2的 ASCII码值时,其结果为 E, 68。 【知识模块】 C语言程序设计 27 【正确答案】 B 【试题解析】 在选项 B的输出函数中,大写字符 A以整型数据的形 式输出。 【知识模块】 C语言程序设计 28 【正确答案】 A 【试题解析】 常量指的是在程序的运行过程中,其值不能被改变的量。在 C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项 B0 1e 6是用指数形式表示的实型常量。在 C语言中,用以 “e”或 “E”后一个整数来表示以10为底的幂数。以用这种形式表示实型常量时要注意 C语言的语法规定,字母 e或 E之前必须要有数字,且 e或 E后面的指数必须为整数,
25、并且在字母 e或 E的前后以及数字之间不得插入空格。选项 C中用双引号括起来表示的字符串 a。选项 D中 011表示用单引号括起来的转义字符八制进数 011。选项 A表示的字符常量是非法的,在用单引号表示的字符常量中,只能包含一个字符,而选项 A中包含两个字符。 【知识模块】 C语言程序设计 29 【正确答案】 B 【试题解析】 在选项 B中,由两个字符 aa组成一个字符串赋给一个字符变量 a时会出错。 【知识模块】 C语言程序设计 30 【正确答案】 C 【试题解析】 在 C语言中,字符常量在内存中占一个字节,存放的是字符的ASCII码值。所有的字符常量都作为整型量来处理。在 本题中输出语句用整型格式输出字符时,输出的是其 ASCII码值。因为字符 A和 D的 ASCII码值分别为65和 68,所以 c2 2 68 2 66。 【知识模块】 C语言程序设计