国家二级C语言(C语言基础知识)机试模拟试卷18
选择题
1.若有以下程序
#include <stdio.h>
main() {
char c1, c2;
c1=’C’+’8’-’3’;
c2=’9’-’0’;
printf(\\(A)
A. H 9
B. H ’9’
C. F ’9’
D. 表达式不合法输出无定值
解析:字符常量允许进行简单的算术运算,则’C’+ 5表示H,而’9’-’0’则表示数值9。
2.下面选项中合法的字符常量是(C)
A. X
B. ’abc’
C. ’X’
D. ’\\\\’
解析:在程序中用单引号把一个字符括起来作为字符常量。但是为了表示字符“\\\\”要用两个“\\\\\\\\”表示一个反斜杠。
3.以下叙述中正确的是(C)
A. 字符常量在内存中占2个字节
B. 转义字符要用双引号括起来,以便与普通的字符常量区分开
C. 字符常量需要用单引号括起来
D. 字符常量是不能进行关系运算的
解析:在程序中用单引号把一个字符括起来作为字符常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。
4.以下叙述中正确的是(C)
A. 字符变量在定义时不能赋初值
B. 同一英文字母的大写和小写形式代表的是同一个字符常量
C. 字符常量可以参与任何整数运算
D. 转义字符用@符号开头
解析:一个字符常量代表ASCII字符集中的一个字符,在C程序中,字符常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。
5.若有定义语句:char a=’\\\\82’; 则变量a(B)
A. 包含1个字符
B. 说明不合法
C. 包含2个字符
D. 包含3个字符
解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用’\\\\ddd’3位八进制数代表的一个ASCII字符,也可以’\\\\xhh’2位十六进制数代表的一个ASCII字符。选项A中的八进制表示出现字符8,非法。
6.有以下程序
main() {
char c1=’A’, c2=’Y’;
printf( \\(C)
A. 输出格式不合法,输出出错信息
B. 65,90
C. 65,89
D. A,Y
解析:C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。
7.C语言中char类型数据占字节数为(C)
A. 2
B. 3
C. 1
D. 4
解析:C语言中char类型数据占字节数为1。
8.有以下程序
main() {
char a=’H’;
a = ( a>=’A’ && a<=’Z’ ) ? (a+32) : a;
printf(\\(C)
A. H
B. A
C. h
D. a
解析:表达式a = ( a>=’A’ && a<=’Z’ ) ? (a+32) : a,为条件表达式,如果a是大写字符,则转换为小写字符存放到a中,否则不变。
9.以下正确的字符串常量是(C)
A. ’abc’
B. Olympic Games
C.
D. \\\\\\\\\\\\
解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCⅡ字符。利用两个’\\\\\\\\’表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。
10.若有代数式(C)
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))),这样计算出的结果就是题干中算术表达式的值。
11.表达式:(int)((double)9/2)- 9%2 的值是(C)
A. 0
B. 4
C. 3
D. 5
解析:这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。
12.若有定义语句: int x=12, y=8, z; 在其后执行语句 z= 0.9+x/y; 则z的值为(B)
A. 1.9
B. 1
C. 2
D. 2.4
解析:由于x,y,z都是整型数据,所以x除以y的值为整型数值1,1和0.9相加得到1.9,再转换为整型数1赋给整型变量z。
13.表达式3.6-5/2+1.2+5%2的值是(C)
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,因为除法运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。
14.有以下定义:
int a;
long b;
double x, y;
则以下选项中正确的表达式是(A)
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错误。
15.若有以下程序
#include <stdio.h>
main() {
int a=0,b=0,c=0,d;
c= (a+=b, , b+=a); /*第4行*/
d=c; ; /*第5行*/
; /*第6行*/
printf(\\(A)
A. 第4行
B. 第5行
C. 第6行
D. 第7行
解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C语言的空语句,是编译程序可以识别并且编译的,因此第5、6行都是正确的。
16.不能正确表示数学式的本文档预览:3600字符,共5714字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载