国家二级C语言机试(C语言基础知识)模拟试卷22
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
(分数:2.00)
A.c=('A'+c)%26-'a' √
B.c=C+32
C.c=C-'A'+'a'
D.c=(C-'A')%26+'a'
解析:解析:由题意可知,小写字符a和大写字符A的AsCII代码相差为32,所以选项C能将大
写字符c的ASCII代码转换为小写字符c的ASCⅡ代码:选项D和C)左侧的表达式都是大写字符C与大写字符A的差与'a'的ASCII代码的和就是小写字符c的ASCII代码。而选项A中应该是加上'a',而不是减去'a'。
2.以下选项中非法的C语言字符常量是
(分数:2.00)
A.'\b'
B.'\007'
C.'aa' √
D.'\xaa'
解析:解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。
3.以下选项中非法的C语言字符常量是
(分数:2.00)
A.'9'
B.'\09' √
C.'\x09'
D.'\x9d'
解析:解析:一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来。也可以为转移字符,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。其中反斜线后的八进制数可以不用0开头,但是不能有8和9字符出现。反斜线后的十六制数只可由小写字母x开头。
4.若有定义语句char c='\101';则变量c在内存中占
(分数:2.00)
A.2个字节
B.3个字节
C.1个字节 √
D.4个字节
解析:解析:每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。
5.若有以下程序,则程序的输出结果是 #include main(){char c1,c2; el='C'+'8'-'3'; c2='9'-'0'; printf("%c%d\n",c1,c2);}
(分数:2.00)
A.H 9 √
B.H '9'
C.F'9'
D.表达式不合法输出无定值
解析:解析:字符常量允许进行简单盼算术运算,则'C'+5表示H,而'9'-'0'则表示数值9。
6.下面选项中合法的字符常量是
(分数:2.00)
A.X
B.'abc'
C.'X' √
D.'\'
解析:解析:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字符“\”要用两个“\\”表示一个反斜杠。
7.以下叙述中正确的是
(分数:2.00)
A.字符常量在内存中占2个字节
B.转义字符要用双引号括起来,以便与普通的字符常量区分开
C.字符常量需要用单引号括起来 √
D.字符常量是不能进行关系运算的字符常量合法
解析:解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,甩来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。
8.以下叙述中正确的是
(分数:2.00)
A.字符变量在定义时不能赋初值
B.同一英文字母的大写和小写形式代表的是同一个字符常量
C.字符常量可以参与任何整数运算 √
D.转义字符用@符号开头
解析:解析:一个字符常量代表ASCⅡ字符集中的一个字符,在C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。
9.若有定义语句:char a='\82':则变量a
(分数:2.00)
A.包含1个字符
B.说明不合法 √
C.包含2个字符
D.包含3个字符
解析:解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用'\ddd'3位八进制数代表的一个ASCⅡ字符,也可以'\xhh'2位十六进制数代表的一个ASCII字符。选项A中的八进制表示出现字符8,非法。
10.有以下程序,程序的输出结果是 main(){char c1='A',c2='Y';printf("%d,%d\n",c1,c2);}
(分数:2.00)
A.输出格式不合法,输出出错信息
B.65,90
C.65,89 √
D.A,Y
解析:解析:C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。
11.C语言中char类型数据占字节数为
(分数:2.00)
A.2
B.3
C.1 √
D.4
解析:解析:C语言中char类型数据占字节数为1。
12.有以下程序,程序运行后的输出结果是 main(){char a='H'; a=(a>='A'&&a<='Z')?(a+32):a; printf("%c\n",a);}
(分数:2.00)
A.H
B.A
C.h √
D.a
解析:解析:表达式a=(a>='A'&&a<='Z')?(a+32):a,为条件表达式,如果a是大写字符,则转换为小写字符存放到a中,否则不变。
13.以下正确的字符串常量是
(分数:2.00)
A.'abc'
B.Olympic Games
C.\\\ √
解析:解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCⅡ字符。利用两个'\\'表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。
14.若x和y代表整型数,以下表达式中不能正确表示数学关系|x—y|<10的是
(分数:2.00)
A.abs(x-y)<10
B.x-y>-10&x-y<10
C.!(x-y)<-10‖!(y-x)>10 √
D.(x-y)*(x—y)<100
解析:解析:数学关系}x-y}<10表示x和y的差的绝对值小于10,选项A使用了abd求绝对值函
数,满足要求;选项B是x和y的差值在-10和10之间,满足要求;选项C是x和y的差值大于-10或者y和x的差值小于10,不满足要。
15.数字字符0的ASCII值为48,若有以下程序,程序运行后的输出结果是 main() {char a='1',b='2'; printf("%c,",b++);printf("%d\n",b-a);}
(分数:2.00)
A.3,2
B.50,2
C.2,2 √
D.2,50
解析:解析:本题主要考查ASCII码和自加运算。第一个p血仃语句中,是以字符形式输出b++的值,++放在变量的后面是先使用然后自增,因此第一个printf输出值是2,然后b的值变成'3'。在第二个printf语句中,b的值为'3',a的值为'1',所以b-a的值为2。
16.若有代数式 (其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是
(分数:2.00)
A.sqrt(fabs(pow(n,x)+pow(x,e)))
B.sqrt(abs(n^x+e^x))
C.sqrt(fabs(pow(n,x)+exp(x))) √
D.sqrt(fabs(pow(x,n)+exp(x)))
解析:解析:n和e的x幂次方,要分别调用C语言的数学库函数double pow(n,x)和double exp(x),因为这两个函数的返回值都为double型,对其两者的和计算绝对值,调用库函数double fabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数double sqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中算术表达式的值。
17.表达式:(int)((double)9/2)-9%2的值是
(分数:2.00)
A.0
B.4
C.3 √
D.5
解析:解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。
18.若有定义语句: int x=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为
(分数:2.00)
A.1.9
B.1 √
C.2
D.2.4
解析:解析:由于x,y,z都是整型数据,所以x除以y的值为整型数值1,1和0.9相加得到1.9,再转换为整型数1赋给整型变量z。
19.表达式3.6-5/2+1.2+5%2的值是
(分数:2.00)
A.4.8
B.3.3
C.3.8 √
D.4.3
解析:解析:表达式的计算过程为:3.6—5/2+1.2+5%2=3.6—2+1.2+1=3.8。此题
要注意5/2的结果是2,而不2.5,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。
20.有以下定义: int a; long b; double x,y; 则以下选项中正确的表达式是
(分数:2.00)
A.a%(int)(x-y) √
B.a=x<>y
C.(a*y)%b
D.y=x+y=x
解析:解析:选项B中<>运算符不存在,选项C中double类型不能进行取余(%)操作,要求两个运算数必须是整数,选项D中x+y=x错误。
21.若有以下程序,编译时出现错误,你认为出错的是 #include<stdio.h> main(){int a=0,
b=0,c=0,d; c=(a+=b,b+=a); /*第4行*/ d=c;;/*第5行*/ ; /*第6行*/ printf("%d,%d,%d\n",a,b,c);/*第7行*/ }
(分数:2.00)
A.第4行 √
B.第5行
C.第6行
D.第7行
解析:解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C语言的空语句,是编译程序可以识别并且编译的,因此第5、6行都是正确的。
22.不能正确表示数学式的表达式是
(分数:2.00)
A.a*b/c
B.a/c*b
C.a/b*c √
D.a*(b/c)
解析:解析:表达式的含义为a乘以b除以c,选项C正好曲解了这一个含义。
23.C语言程序中,运算对象必须是整型数的运算符是
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论