国家二级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.若有代数式表达式是 (分数: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))),这样计算出的结果就是题干中算术表达式的值。
(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言