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
版权声明:本文标题:国家二级C语言机试C语言基础知识模拟试卷9_真题(含答案与解析)-交互 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1702715272a427846.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论