国家二级C语言(C语言基础知识)机试模拟试卷22(题后含答案及解析)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家二级C语言(C语言基础知识)机试模拟试卷22(题后含答案及
解析)
题型有:1. 选择题
选择题
1.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是
A.关键字可用作用户标识符,但失去原有含义
B.在标识符中大写字母和小写字母被认为是相同的字符
C.用户标识符可以由字母和数字任意顺序组成
D.预定义标识符可用作用户标识符,但失去原有含义
正确答案:D
解析:预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin等和编译预处理命令名(如define和include)。
预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。
知识模块:C语言基础知识
2.以下叙述中错误的是
A.常量可以用一个符号名来代表
B.数值型常量有正值和负值的区分
C.常量是在程序运行过程中值不能被改变的量
D.定义符号常量必须用类型名来设定常量的类型
正确答案:D
解析:C语言中,常常用一个标识符来代表一个常量,称为符号常量。
符号常量在使用之前要先定义,定义格式:#define<符号常量名>(常量)其中,<符号常量名>用标识符,习惯上用大写字母,<常量>可以是数字常量,也可以是字符。
知识模块:C语言基础知识
3.与十进制数200等值的十六进制数为
A.A8
B.A4
C.C8
D.C4
正确答案:C
解析:本题考察了进制转换,十进制的数转换为十六进制规则:整数部分除以16取余数,将余数倒过来排列。
知识模块:C语言基础知识
4.以下选项中,合法的一组C语言数值常量是
A.12.0Xa234.5e0
B.028.5e-3-0xf
C..1774e1.50abc
D.0x8A10,0003.e5
正确答案:A
解析:八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B)中,028是错误的。
浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C)中4e1.5是错误的。
在选项D)中,整型数据10,000的表示形式是错误的。
知识模块:C语言基础知识
5.C源程序中不能表示的数制是
A.八进制
B.十进制
C.二进制
D.十六进制
正确答案:C
解析:在C语言的源程序中,数值可以用十进制、八进制和十六进制来表示。
不用二进制来表示。
知识模块:C语言基础知识
6.以下叙述中正确的是
A.在C程序中的八进制和十六进制,可以是浮点数
B.八进制数的开头要使用英文字母o,否则不能与十进制区分开
C.整型变量可以分为int型、short型、long型和unsigned型四种
D.英文大写字母x和英文小写字母x都可以作为二二进制数字的开头字符
正确答案:C
解析:整型变量分为以下4种类型:①基本型:以int表示。
②短整型:以shortint表示,或以short表示。
③长整型:以long int表示,或以long表示。
④无符号型:以unsigned int表示,选项C)正确,实型常量仅有十进制表示形式,八进制以数字0开头,十六进制开头为0x或者0X,不是二进制。
知识模块:C语言基础知识
7.以下选项中合法的常量是
A.2.7e
B.9 9 9
C.123E0.2
D.OXab
正确答案:D
解析:0xab是十六进制表示的常量。
知识模块:C语言基础知识
8.以下选项中能表示合法常量的是
A.\007
B.1.5E2.0
C.’\’
D.1,200
正确答案:A
解析:选项D),1200中间不能有逗号,否则编译时会认为是1或出错。
选项B),2.0错误,必须为整数。
选项C),要表示字符斜杠常量’\’,应该在反斜杠的前面再加上一个反斜杠。
选项A)为字符串常量,为正确选项。
知识模块:C语言基础知识
9.以下选项中可用作C程序合法实数的是
A.3.0e0.2
B.E9
C..1e0
D.9.12E
正确答案:C
解析:C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数。
知识模块:C语言基础知识
10.以下不合法的数值常量是
A.1e1
B.011
C.0xabcd
D.8.0E0.5
正确答案:D
解析:实型常量又称为实数或浮点数。
在C语言中,可以用两种形式表示一个实型常量。
①小数形式是由数字和小数点组成的一种实数表示形式,这种表示形式的常量必须要有小数点。
②指数形式用以“e”或“E”后跟一个整数来表示以10为底的幂数。
C语言的语法规定,字母e或E之前必须要有数字,且e 或E后面的指数必须为整数。
因为选项D)中字母E后面的指数为小数形式,所以选项D)这种表示方法不合法。
知识模块:C语言基础知识
11.以下选项中正确的定义语句是
A.double a=b=7;
B.double a:b;
C.double,a,b;
D.double a=7,b=7;
正确答案:D
解析:在C语言中,可以用一条语句同时定义几个同类型的变量,变量之间用逗号隔开。
知识模块:C语言基础知识
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
正确答案:B
解析:(int)(x*1000+0.5)/(double)1000表达式功能,保存数据x的后三位小数,把第四位四舍五入。
知识模块:C语言基础知识
13.以下选项中合法的实型常量是
A..914
B.3.13e-2.1
C.0
D.2.0*10
正确答案:A
解析:实型常量又称实数或浮点数,一般用小数形式或指数形式来表示。
实型常量分为以下两种形式:①小数形式:小数形式是由数字和小数点组成的一种实数表示形式。
例如0.345、.123、0.0等是合法的实数。
这种表示形式必须要有小数点;②指数形式:在C语言中,用”e”或“E”后跟一个整数来表示以10为底的幂数。
注意:字母“e”或“E”之前必须要有数字,后面的指数必须为整数。
选项B)中e后必须为整数,选项C)没有小数点,而选项D)则出现非法字符+。
知识模块:C语言基础知识
14.C语言中double类型数据占字节数为
A.4
B.12
C.8
D.16
正确答案:C
解析:double类型所占字节为8。
知识模块:C语言基础知识
15.以下叙述中正确的是
A.整型常量和实型常量都是数值型常量
B.常量的类型不能从字面形式上区分,需要根据类型名来决定
C.预定义的标识符是C语言关键字的一种,不能另作它用
D.只能在函数体内定义变量,其他地方不允许定义变量
正确答案:A
解析:整型常量和实型常量都是数值型常量,选项A)正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B)错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的变量,选项D)错误。
知识模块:C语言基础知识
16.sizeof(double)是
A.一个双精度型表达式
B.一个整型表达式
C.一个不合法的表达式
D.一种函数调用
正确答案:B
解析:sizeof关键字为C语言的运算符,用于测试( )内类型其变量所占内存,表达式结果返回十进制整数,因此为整型表达式,表明变量所占的内存字节数。
知识模块:C语言基础知识
17.以下选项中,值为1的表达式是
A.1-’0’
B.1’-0
C.1-’\0’
D.\0’-’0’
正确答案:C
解析:在C程序中,字符量可参与任何整数运算。
字符参与运算时,首先要将字符转换为其对应的.ASCII码值再参与整数运算。
字符“‘1’”对应的ASCII 码值是49,字符10’对应的ASCII码值是48,字符“‘\0’”是字符串结束标识符NULL,其对应的ASCII码值是0。
知识模块:C语言基础知识
18.有以下说明和定义语句struct student{int age;char num[8];};struct student stu[3]={{20,”200401”},{21,”200402”},{19,”200403”}};struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是
A.(p++)->num
B.p->num
C.(*p).num
D.stu[3].age
正确答案: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]已经超出数组范围,错误。
知识模块:C 语言基础知识
19.以下合法的字符型常量是
A.’\x13’
B.’\081’
C.’65’
D.’/n’
正确答案:A
解析:本题考查字符型常量。
选项A)正确,使用了转义字符“\”,x13表示16进制的13;选项B)同样使用了转义字符,但081错误,以0开始表示8进制,8进制数字的范围是0-7,没有8:选项C)错误,65是一个字符串,不是字符;选项D)错误,换行符是“\n”。
知识模块:C语言基础知识
20.已有定义:char c;,程序前面己在命令中包含ctype.h文件。
不能用于判断c中的字符是否为大写字母的表达式是
A.isupper(c)
B.’A’<=c<=‘Z’
C.’A’<=c&c<=‘Z’
D.c<=(‘z’-32)&(‘a’-32)<=c
正确答案:B
解析:本题考查字符变量和逻辑运算。
选项A)通过调用函数isupper来判断字符c是否是大小字母,满足要求;选项B)是逻辑表达式,不管c为何值,’A’<=c为真或者假,然后再和’Z’比较结果必然为真(0和1都小于’Z’的ASCII值);选项C)是通过与运算来判断c是否是大小字母:选项D)中’z’-32和大小字母’Z’相等,同样’a’-32和大小字母’A’相等。
知识模块:C语言基础知识
21.以下选项中不属于字符常量的是
A.’C’
B.C
C.’\xCC’
D.’\072’
正确答案:B
解析:本题考查字符型常量。
选项A)正确,是大小字母C:选项B)错误,使用双引号括起来的是字符串,不是字符;选项C)正确,使用了转义字符“\”,xCC表示16进制的CC:选项D)正确,使用了转义字符“\”,072表示8进制的72。
知识模块:C语言基础知识
22.设变量己正确定义,以下不能统计出一行中输入字符个数(不包含回车符)0的程序段是
A.n=0;while((ch=getchar( ))!=‘\n’)n++;
B.n=0;while(getchar0( )!=‘\n’)n++;
C.for(n=0;getchar( )!=‘\n’;n++);
D.n=0;for(ch=getchar( );ch!=‘\n’;n++);
正确答案:D
解析:本题主要考查循环的使用。
选项A)中,首先把输入的字符放到ch变量中,然后判断ch是否为回车符,如果不是则n增加,循环结束条件是输入的是回车符:选项B)中,直接判断getchar函数的返回值是否是回车符,如果不是则n增加,输入回车符循环结束;选项C)使用for循环,n的初值为0,每次循环n增加1,循环的结束条件是输入回车符;选项D)中for循环的初始条件ch 值为输入的字符,只有一次输入,不能统计输入的字符数,如果第一次输入的不是回车符循环不能结束。
知识模块:C语言基础知识
23.以下选项中非法的字符常量是
A.’\019’
B.’\65’
C.’\Xff’
D.’\101’
正确答案:A
解析:本题考查字符型常量。
选项A)错误,使用了转义字符“\”,019以0开始表示8进制,8进制数字的范围是0-7,没有9;选项B)、C)和D)正确。
知识模块:C语言基础知识
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;
正确答案:A
解析:本题考查的是数据类型的定义并赋值,选项B)中对变量声明类型且赋值的情况是不允许出现的,必须单独定义且赋值。
选项C)中对于指针变量c 的赋值须为同型指针,而&b为二级指针。
选项D)中C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号(,)隔开,而不是用分号(;)隔开;在计算机存储字符时将字符相应的ASCII码以其对应的二进制进行存放,选项A)中的定义是合法的。
知识模块:C语言基础知识
25.以下不合法的字符常量是
A.’\”‘
B.’\\’
C.’\018’
D.’\xcc’
正确答案:C
解析:在C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。
转义字符常量也是必须括在一对单引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符。
在选项C)中,’\018’是用八进制数来代表一个字符常量,所以其中的数字只能小于8,并不包括8。
知识模块:C语言基础知识
26.有以下程序,已知字母A的ASCII码为65,程序运行后的输出结果是main( ){char c1,c2;c1=‘A’+’8’-’4’;c2=‘A’+’8’-’5’;printf(“%c,%d\n”,c1,c2);}
A.D6,9
B.E,68
C.E,D
D.输出无定值
正确答案:B
解析:字符变量c1的ASCII值等于69,而字符变量c2的ASCII值等于68,当分别以字符和整型输出c1和c2的ASCII码值时,其结果为E,68。
知识模块:C语言基础知识
27.以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII吗值为97)
A.printf(t”%c\n”,’a’-32)
B.printf(“%d\n”,’A’);
C.printf(“%c\n”,65);
D.printf(“%c\n”,’B’-1);
正确答案:B
解析:在选项B)的输出函数中,大写字符’A’以整型数据的形式输出。
知识模块:C语言基础知识
28.以下选项中不能作为C语言合法常量的是
A.’cd’
B.0.1e+6
C.\a
D.’\011’
正确答案:A
解析:常量指的是在程序的运行过程中,其值不能被改变的量。
在C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。
选项B)O.1e+6是用指数形式表示的实型常量。
在C语言中,用以“e”或“E”后一个整数来表示以10为底的幂数。
以用这种形式表示实型常量时要注意C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数,并且在字母e
或E的前后以及数字之间不得插入空格。
选项C)中用双引号括起来表示的字符串“\a”。
选项D)中’\011’表示用单引号括起来的转义字符八制进数011。
选项A)表示的字符常量是非法的,在用单引号表示的字符常量中,只能包含一个字符,而选项A)中包含两个字符。
知识模块:C语言基础知识
29.有以下定义语句,编译时会出现编译错误的是
A.char a=‘\n’;
B.char a=“aa”;
C.char a=‘a’;
D.char a=‘\x2d’;
正确答案:B
解析:在选项B)中,由两个字符aa组成一个字符串赋给一个字符变量a时会出错。
知识模块:C语言基础知识
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语言中,字符常量在内存中占一个字节,存放的是字符的ASCII 码值。
所有的字符常量都作为整型量来处理。
在本题中输出语句用整型格式输出字符时,输出的是其ASCII码值。
因为字符’A’和’D’的ASCII码值分别为65和68,所以c2-2=68-2=66。
知识模块:C语言基础知识。