admin 管理员组

文章数量: 1086019


2023年12月16日发(作者:js特效代码怎么弄)

国家二级C语言机试(C语言基础知识)模拟试卷9

(总分60, 做题时间90分钟)

1. 选择题

1.

C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是

A 关键字可用作用户标识符,但失去原有含义

B 在标识符中大写字母和小写字母被认为是相同的字符

C 用户标识符可以由字母和数字任意顺序组成

D 预定义标识符可用作用户标识符,但失去原有含义

分值: 2

答案:D

解析:预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin等和编译预处理命令名(如define和include)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。

2.

以下叙述中错误的是

A 常量可以用一个符号名来代表

B 数值型常量有正值和负值的区分

C 常量是在程序运行过程中值不能被改变的量

D 定义符号常量必须用类型名来设定常量的类型

分值: 2

答案:D

解析:C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式:#define<符号常量名>(常量) 其中,<符号常量名)用标识符,习惯上用大写字母,<常量>可以是数字常量,也可以是字符。

3.

与十进制数200等值的十六进制数为

SSS_SINGLE_SELSSS_SINGLE_SELSSS_SINGLE_SELA A8

B A4

C C8

D C4

分值: 2

答案:C

解析:本题考察了进制转换,十进制的数转换为十六进制规则:整数部分除以16取余数,将余数倒过来排列。

4.

以下选项中,合法的一组C语言数值常量是

SSS_SINGLE_SEL

A 12.0Xa23 4.5e0

B 028.5e-3-0xf

C .177 4e1.5 0abc

D 0x8A 10,000 3.e5

分值: 2

答案:A

解析:八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B)中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C)中4e1.5是错误的。在选项D)中,整型数据10,000的表示形式是错误的。

5.

C源程序中不能表示的数制是

SSS_SINGLE_SEL

A 八进制

B 十进制

C 二进制

D 十六进制

分值: 2

答案:C

解析:在C语言的源程序中,数值可以用十进制、八进制和十六进制来表示。不用二进制来表示。

6.

以下叙述中正确的是

A 在C程序中的八进制和十六进制,可以是浮点数

B 八进制数的开头要使用英文字母o,否则不能与十进制区分开

C 整型变量可以分为int型、short型、long型和unsigned型四种

D 英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符

分值: 2

答案:C

解析:整型变量分为以下4种类型: ①基本型:以int表示。②短整型:以short int表示,或以short表示。③长整型:以long int表示,或以long表示。④无符号型:以unsigned int表示,选项c)正确,实型常量仅有十进制表示形式,八进制以数字0开头,十六进制开头为0x或者0X,不是二进制。

7.

以下选项中合法的常量是

SSS_SINGLE_SELSSS_SINGLE_SEL

A 2.7e

B 999

C 123E0.2

D 0Xab

分值: 2

答案:D

解析:0xab是十六进制表示的常量。

8.

以下选项中能表示合法常量的是

SSS_SINGLE_SEL

A \007

B 1.5E2.0

C '\'

D 1,200

分值: 2

答案:A

解析:选项D),1200中间不能有逗号,否则编译时会认为是1或出错。选项B),2.0错误,必须为整数。选项C),要表示字符斜杠常量'\',应该在反斜杠的前面再加上一个反斜杠。选项A)为字符串常量,为正确选项。

9.

以下选项中可用作C程序合法实数的是

SSS_SINGLE_SELA 3.0e0.2

B E9

C .1e0

D 9.12E

分值: 2

答案:C

解析:C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数。

10.

以下不合法的数值常量是

SSS_SINGLE_SEL

A 1e1

B 011

C 0xabcd

D 8.0E0.5

分值: 2

答案:D

解析:实型常量又称为实数或浮点数。在C语言中,可以用两种形式表示一个实型常量。①小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必须要有小数点。②指数形式用以“e”或“E”后跟一个整数来表示以10为底的幂数。C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。因为选项D)中字母E后面的指数为小数形式,所以选项D)这种表示方法不合法。

11.

以下选项中正确的定义语句是

SSS_SINGLE_SEL

A double a=b=7;

B double a;b;

C double,a,b;

D double a=7,b=7;

分值: 2

答案:D

解析:在C语言中,可以用一条语句同时定义几个同类型的变量,变量之间用逗号隔开。

12.

若有以下程序段 double x=5.16894;printf("%f\n",(int)(x*1000+0.5)/(double)1000);则程序段的输出结果是

SSS_SINGLE_SEL

A 5.175000

B 5.169000

C 5.170000

D 5.168000

分值: 2

答案:B

解析:fint)(x*1000+0.5)/(double)1000表达式功能,保存数据x的后三位小数,把第四位四舍五入。

13.

以下选项中合法的实型常量是

SSS_SINGLE_SELA .914

B 3.13e-2.1

C 0

D 2.0*10

分值: 2

答案:A

解析:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。实型常量分为以下两种形式: ①小数形式:小数形式是由数字和小数点组成的一种实数表示形式。例如0.345、.123、0.0等是合法的实数。这种表示形式必须要有小数点;②指数形式:在C语言中,用“e”或“E”后跟一个整数来表示以10为底的幂数。注意:字母“e”或“E”之前必须要有数字,后面的指数必须为整数。选项B)中e后必须为整数,选项C)没有小数点,而选项D)则出现非法字符*。

14.

C语言中double类型数据占字节数为

SSS_SINGLE_SEL

A 4

B 12

C 8

D 16

分值: 2

答案:C

解析:double类型所占字节为8。

15.

以下叙述中正确的是

A 整型常量和实型常量都是数值型常量

B 常量的类型不能从字面形式上区分,需要根据类型名来决定

C 预定义的标识符是C语言关键字的一种,不能另作它用

D 只能在函数体内定义变量,其他地方不允许定义变量

分值: 2

答案:A

解析:整型常量和实型常量都是数值型常量,选项A)正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B)错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的变量,选项D)错误。

16.

sizeof(double)是

SSS_SINGLE_SELSSS_SINGLE_SEL

A 一个双精度型表达式

B 一个整型表达式

C 一个不合法的表达式

D 一种函数调用

分值: 2

答案:B

解析:sizeof关键字为C语言的运算符,用于测试()内类型其变量所占内存,表达式结果返回十进制整数,因此为整型表达式,表明变量所占的内存字节数。

17.

以下选项中,值为1的表达式是

SSS_SINGLE_SELA 1一'0'

B '1'一0

C 1一'\0'

D '\0'一'0'

分值: 2

答案:C

解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为其对应的ASCII码值再参与整数运算。字符“'1'”对应的ASCII码值是49,字符'0'对应的ASCII码值是48,字符“'\0'”是字符串结束标识符NULL,其对应的ASCII码值是0。

18.

有以下说明和定义语句struct student{int age;char num[8];}; struct

student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};

struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是

SSS_SINGLE_SEL

A (p++)->num

B P->num

C (*p).num

D stu[3].age

分值: 2

答案:D

解析:本题考查结构体和结构体指针,stu是一个结构体数组,p是结构体指针,且p指向stu数组,即p指向了stu数组的首元素地址。选项A)中p++表示先引用p指针,然后p指向下一个元素,(p++)->num表示取出stu首元素的num值,然后p指向stu[1]元素地址;选项B)是通过结构体指针访问结构体元素,使用“->”运算符;选项C)中*p代表stu[0]元素,因此(*p).num表示stu[0].num;选项D)中,stu数组的长度为3,stu[3]已经超出数组范围,错误。

19.

以下合法的字符型常量是

SSS_SINGLE_SEL

A '\x13'

B '\081'

C '65'

D '/n'

分值: 2

答案:A

解析:本题考查字符型常量。选项A)正确,使用了转义字符“\ ”,x13表示16进制的13;选项B)同样使用了转义字符,但081错误,以0开始表示8进制,8进制数字的范围是0.7,没有8;选项C)错误,65是一个字符串,不是字符;选项D)错误,换行符是“\n”。

20.

已有定义:char c;,程序前面已在命令中包含ctype.h文件。不能用于判断c中的字符是否为大写字母的表达式是

SSS_SINGLE_SEL

A isupper(c)

B 'A'<=c<='Z' ,

C 'A'<=c&c<='Z'

D c<=('z'-32)&('a'-32)<=c

分值: 2

答案:D

解析:本题考查字符变量和逻辑运算。选项A)通过调用函数isupper来判断字符c是否是大小字母,满足要求;选项B)是逻辑表达式,不管c为何值,'A'<=c为真或者假,然后再和'z'比较结果必然为真(0和1都小于'Z'的ASCII值);选项C)是通过与运算来判断c是否是大小字母;选项D)中'z'-32和大小字母'Z'相等,同样'a'-32和大小字母'A'相等。

21.

以下选项中不属于字符常量的是

SSS_SINGLE_SEL

A 'C'

B C

C '\xCC'

D '\072'

分值: 2

答案:B

解析:本题考查字符型常量。选项A)正确,是大小字母C;选项B)错误,使用双引号括起来的是字符串,不是字符;选项C)正确,使用了转义字符“\”

xCC表示16进制的CC;选项D)正确,使用了转义字符“\” ,072表示8进制的72。

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';n++);

分值: 2

答案:D

解析:本题主要考查循环的使用。选项A)中,首先把输入的字符放到ch变量中,然后判断ch是否为回车符,如果不是则n增加,循环结束条件是输入的是回车符;选项B)中,直接判断getchar函数的返回值是否是回车符,如果不是则n增加,输入回车符循环结束;选项C)使用for循环,n的初值为0,每次循环n增加1,循环的结束条件是输入回车符;选项D)中for循环的初始条件ch值为输入的字符,只有一次输入,不能统计输入的字符数,如果第一次输入的不是回车符循环不能结束。

23.

以下选项中非法的字符常量是

SSS_SINGLE_SELSSS_SINGLE_SEL

A '\019'

B '\65'

C '\xff'

D '\101'

分值: 2

答案:A

解析:本题考查字符型常量。选项A)错误,使用了转义字符“\”,019以0开始表示8进制,8进制数字的范围是0-7,没有9;选项B)、C)和D)正确。

24.

以下定义语句中正确的是

SSS_SINGLE_SEL

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;

分值: 2

答案:A

解析:本题考查的是数据类型的定义并赋值,选项B)中对变量声明类型且赋值的情况是不允许出现的,必须单独定义且赋值。选项C)中对于指针变量c的赋值须为同型指针,而&b为二级指针。选项D)中C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号(,)隔开,而不是用分号(;)隔开;在计算机存储字符时将字符相应的ASCII码以其对应的二进制进行存放,选项A)中的定义是合法的。

25.

以下不合法的字符常量是

SSS_SINGLE_SEL

A '\"'

B '\\'

C '\018'

D '\xcc'

分值: 2

答案:C

解析:在C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。转义字符常量也是必须括在一对单引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符。在选项C)中,'\018'是用八进制数来代表一个字符常量,所以其中的数字只能小于8,并不包括8。

26.

有以下程序,己知字母A的ASCII码为65,程序运行后的输出结果是main(){char c1,c2; c1='A'+'8'-'4': c2='A'+'8'一'5';

printf("%c,%\n",c1,c2);}

SSS_SINGLE_SELA D,69

B E,68

C E,D

D 输出无定值

分值: 2

答案:B

解析:字符变量c1的AsCII值等于69,而字符变量c2的AsCII值等于68,当分别以字符和整型输出c1和c2的ASCII码值时,其结果为E,68。

27.

以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)

A printf("%c\n",'a'-32);

B printf("%d\n",'A');

C printf("%c\n",65);

SSS_SINGLE_SEL

D printf("%c\n",'B'-1);

分值: 2

答案:B

解析:在选项B)的输出函数中,大写字符'A'以整型数据的形式输出。

28.

以下选项中不能作为c语言合法常量的是

SSS_SINGLE_SEL

A 'cd'

B 0.1e+6

C \a

D '\011'

分值: 2

答案:A

解析:常量指的是在程序的运行过程中,其值不能被改变的量。在C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项B)0.1e+6是用指数形式表示的实型常量。在C语言中,用以“e”或“E”后一个整数来表示以10为底的幂数。以用这种形式表示实型常量时要注意C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数,并且在字母e或E的前后以及数字之间不得插入空格。选项C)中用双引号括起来表示的字符串“\a”。选项D)中'\011'表示用单引号括起来的转义字符八制进数011。选项A)表示的字符常量是非法的,在用单引号表示的字符常量中,只能包含一个字符,而选项A)中包含两个字符。

29.

有以下定义语句,编译时会出现编译错误的是

SSS_SINGLE_SEL

A char a='\n';

B char a="aa";

C char a='a';

D char a='\x2d';

分值: 2

答案:B

解析:在选项B)中,由两个字符aa组成一个字符串赋给一个字符变量a时会出错。

30.

已知字符'A'的ASCII代码值是65,字符变量c1的值是'A',c2的值是'D'。则执行语句printf("%d,%d",c1,c2-2);的输出结果是

SSS_SINGLE_SEL

A A,68

B A,B

C 65,66

D 65,68

分值: 2

答案:C

解析:在C语言中,字符常量在内存中占一个字节,存放的是字符的ASCII码值。所有的字符常量都作为整型量来处理。在本题中输出语句用整型格式输出字符时,输出的是其ASCII码值。因为字符'A'和'D'的ASCII码倩分别为65和68,所以c2-2=68-2=66。

1


本文标签: 常量 字符 选项 表示 形式