1、国家二级 C语言机试(数据类型、运算符与表达式)模拟试卷 4及答案与解析 一、选择题 1 已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97。以下不能将变量 c中的大写字母转换为对应小写字母的语句是( )。 ( A) c=(A+c)%26-a ( B) c=c+32 ( C) c=c-A+a ( D) c=(c-A)%26 +a 2 以下选项中,当 x为大于 1的奇数时,值为 0的表达式是( )。 ( A) x%2=0 ( B) x/2 ( C) x%2!=0 ( D) x%2=1 3 以下选项中,值为 1的表达式是( )。 ( A) 1 - 0 ( B) 1 0
2、( C) 1 -0 ( D) 0 - 0 4 当变量 c的值不为 2、 4、 6时,值为 “真 “的表达式是( )。 ( A) (c=2 c1=C+8-3; c2=9-0; printf(“%c %dn“, c1, c2); 则程序的输出结果是( )。 ( A) H 9 ( B)表达式不合法输出无定值 ( C) F 9 ( D) H 9 9 表示关系式 xyz的 C语言表达式的是( )。 ( A) (x main() int x=35, B; char z=B ; B = ( x ) 则变量 a( )。 ( A)说明不合法 ( B)包含 1个字符 ( C)包含 2个字符 ( D)包含 3个字符
3、 20 有以下程序 #include main() char c1=A, c2=Y; printf( “%d, %dn“, c1,c2 ); 程序的输出结果是( )。 ( A) 65,89 ( B)输出格式不合法,输出出错信息 ( C) 65,90 ( D) A,Y 21 C语言中 char类型数据占字节数为( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 22 下列关系表达式中,结果为 “假 “的是( )。 ( A) (3 != 4) 2 ( B) (3 6 ( D) 3 main() int a=0,b=0,c=0,d=0; (a+ printf(“%d,%d,%d,%dn
4、“, a,b,c,d); 程序的运行结果是 ( )。 ( A) 1,0,0,1 ( B) 1,1,0,1 ( C) 1,0,1,0 ( D) 1,1,1,0 25 以下选项中非法的 C语言字符常量是( )。 ( A) 128 ( B) 127 ( C) x01 ( D) x08 26 有以下程序 #include main() int a=0,b=0,c=0,d=0; (+a | +b) ? +c : +d; printf(“%d,%d,%d,%dn“, a,b,c,d); 程序的运行结果是( ) 。 ( A) 1,0,1,0 ( B) 1,1,0,1 ( C) 1,0,0,1 ( D) 1,
5、1,1,0 27 有以下程序 (字母 A的 ASCII代码为 65) #include main() char c1 = A, c2 = Y; printf(“%d, %dn“, c1, c2 ); 程序运行后的输出结果是( )。 ( A) 65, 89 ( B) A, Y ( C) 65, 90 ( D)输出格式不合法 ,输出出错信息 28 若有说明语句: char c = 72 ; 则变量 c中存放的是( )。 ( A) 1个字符 ( B) 2个字符 ( C) 3个字符 ( D)说明语句不合法 29 有以下程序 #include main() int a, b, c=241; a = c/
6、100 % 9; b = ( -1 ) printf(“%d, %dn“, a, b ); 程序运行后的输出结果是( )。 ( A) 2,1 ( B) 6,1 ( C) 6,0 ( D) 2,0 30 已知 a=5,b=6,c=7,d=8,m=2,n=2,执行 (m=ab) while( ( c=getchar() )!= n ) switch( c-2 ) case 0 : case 1 : putchar( c+4 ); case 2 : putchar( c+4 ); break; case 3 : putchar( c+3 ); default : putchar( c+2 ); br
7、eak; printf( “n“ ); 程序运行后从第一列开始输入以下数据 2473 程序的输出结果是( )。 ( A) 668977 ( B) 4444 ( C) 6677877 ( D) 68766 32 有如下程序 #include main() if (0 = 0) putchar(X); if (0 = 0) putchar(Y); if (a b) putchar(Z); printf(“n“); 程序运行后的输出结果是( )。 ( A) X ( B) XYZ ( C) YZ ( D) Y 33 有以下程序 #include main() printf(“%dn“, NULL );
8、 程序运行后的输出结果是( )。 ( A) 0 ( B)变量无定义,输出不确定 ( C) -1 ( D) 1 国家二级 C语言机试(数据类型、运算符与表达式)模拟试卷 4答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 字符常量与其 ASCII码值一一对应,一个字符对应小写字 母的ASCII码要比对应大写字母的 ASCII码值大 32。所以将大写字母转换成小写字母,只需要将对应字符加上 32即可,只有选项 A)不是在原来字符的基础上加32,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 2 【正确答案】 A 【试题解析】 题中 x为大于 1的奇数, “%“为取余运算符,
9、x对 2取余,即“x%2“的值肯定为 1,答案选 A。 【知识模块】 数据类型、运算符与表达式 3 【正确答案】 A 【试题解析】 字符型数据参与运算时使用其对应的 ASCII码值, 0的 ASCII码值为 0, 0的为 48, 1的为 49,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 4 【正确答案】 A 【试题解析】 逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才为真。选项 A)中,只要 c的值不为 3或者不为 5或者在 2和 6之间,这个表达式就为真,所以答案选 A)。 【知识模块】 数据
10、类型、运算符与表达式 5 【正确答案】 A 【试题解析】 字符常量是由单引号括起来的单个字符,选项 A)错误,而选项B)是转义字符,选项 C)是由 3位八进制数所代表的字符,选项 D)是由 2位十六进制数所代表的字符,答案选 A)。 【知识模块】 数据类型、运算符与表达式 6 【正确答案】 A 【试题解析】 选项 B)由单个字符构成的字符常量,选项 C)、 D)为由 2位十六进制数所代表的字符,没有用两个十进制数代表的字符,答案选 A)。 【知识模块】 数据类型、运算符与表达式 7 【正确答案】 A 【试题解析】 ?101?为由 3位八 进制数所代表的字符,是一个字符常量,占用空间为 1个字节
11、,答案选 A。 【知识模块】 数据类型、运算符与表达式 8 【正确答案】 A 【试题解析】 字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者ASCII码。本题中, 8- 3结果为 5, C+5的结果为 72即 H,所以 c1= H。 9-0为 9,所以 c2=9。故而输出结果为选项 A)。 【知识模块】 数据类型、运算符与表达式 9 【 正确答案】 A 【试题解析】 关系式 “xyz“表示的是 y值大于 x并且小于 z,所以用逻辑与运算符 “&“,答案选 A。 【知识模块】 数据类型、运算符与表达式 10
12、【正确答案】 A 【试题解析】 赋值运算符的左侧必须为变量而不能是表达式或者常量,选项 A)的表达式非法,答案选 A)。 【知识模块】 数据类型、运算符与表达式 11 【正确答案】 A 【试题解析】 逻辑表达式的值只能为 1或者 0,而逻辑表达式 “( x ) & ( z 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符。所以逻辑 “或 “的运算级别要比算术运算低,选项 D)错;逻辑或和逻辑与表达式均有 “短路求值 “的现象,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 17 【正确答案】 A 【试题解析】 字符常量进行计算的时候使用其 ASCII码参与运算
13、, a的 ASCII码值为 97, b的 ASCII码值为 98,所以表达式的结果为 “假 “,选项 A)正确;“a“表示的是一个字符串常量,选项 B)错; 0为一个转义字符, ASCII码值为0,选项 C)错; “为一个转义字符,表示一个双引号符,选项 D)错。答案选A)。 【知识模块】 数据类型、运算符与表达式 18 【正确答案】 A 【试题解析】 字符常量进行计算的时候使用其 ASCII码参与运算,所以字符常量可以参与整数运算,选项 A)正确;任何变量都可以在定义时赋初值,选项B)错; C语言对大小写敏感,所以大小写不同的英语字母代表不同的字符常量,选项 C)错;转义字符以反斜杠 “作为
14、开头,选项 D)错;所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 19 【正确答案】 A 【试题解析】 以反斜杠开始的为转义字符, C语言中可以用 13位八进制数代表一个转义字符(形式为 ?ddd?),或者由两位十六进制数代表一个字符(形式为 ?xhh?),但是没有用两个十进制数代表的字符,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 20 【正确答案】 A 【试题解析】 考查字符型数据。字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者 ASCII码。答案选 A。 【知识模块】 数
15、据类型、运算符与表达式 21 【正确答案】 A 【试题解析】 C语言中 char类型数据占字节数为 1个字节,这个值可以用sizeof(char)求得。答案选 A。 【知识模块】 数据类型、运算符与表达式 22 【正确答案】 A 【试题解析】 关系表达式和逻辑表达式计算出的值只能为 0或者 1,很明显选项A)中逻辑表达式 “(3 != 4)“的值不可能大于 2,结果为 “假 “,答案选 A)。 【知识模块】 数据类型、运算符与表达式 23 【正确答案】 A 【试题 解析】 用两个连续的双引号引起来的为空字符串,选项 A)正确;字符常量是由两个单引号引起来的 ASCII码表中的字符,没有空的字符
16、常量,选项 B)错误; C语言中要对字符串比较时需要用到专门的字符串处理函数,不能直接用关系运算符,选项 C)错误;系统会为字符串的最后自动添加结束标志 “0“,所以空字符串占用内存空间大小为 1个字节,选项 D)错误;答案选 A)。 【知识模块】 数据类型、运算符与表达式 24 【正确答案】 A 【试题解析】 条件表达式的形式为: 表达式 1:表达式 2 : 表达式 3 ,计算 “表达 式 1“的值,若为 “真 “,取 “表达式 2“的值作为整个条件表达式的值;若为 “假“,取 “表达式 3“的值作为整个条件表达式的值。根据逻辑与表达式的 “短路 “现象,表达式 “a+&b+“的结果为假,
17、a=1, b=0,之后计算 “d+“。所以整个条件表达式执行完毕之后: a=1, b=0, c=0, d=1,答案选 A。 【知识模块】 数据类型、运算符与表达式 25 【正确答案】 A 【试题解析】 以反斜杠开始的为转义字符, C语言中可以用 13位八进制数代表一个转义字符(形式为 ?ddd?),或者由 12位十六进 制数代表一个字符(形式为 ?xhh?),八进制数中不能出现数字 8,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 26 【正确答案】 A 【试题解析】 条件表达式的形式为: 表达式 1 ? 表达式 2 : 表达式 3 ,计算 “表达式 1“的值,若为 “真 “,取
18、“表达式 2“的值作为整个条件表达式的值;若为 “假“,取 “表达式 3“的值作为整个条件表达式的值。根据逻辑或表达式的 “短路 “现象,表达式 “+a|+b“的结果为真, a=1, b=0,之后计算 “+c“。所以整个条件表达式执行完毕之后: a=1, b=0, c=1, d=0,答案选 A。 【知识模块】 数据类型、运算符与表达式 27 【正确答案】 A 【试题解析】 考查字符型数据。字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者 ASCII码。所以答案选 A。 【知识模块】 数据类型、运算符与表达式
19、 28 【正确答案】 A 【试题解析】 以反斜杠开始的为转义字符, C语言中可以用 13位八进制数代表一个转义字符(形式为 ?ddd?),所以 ? 72?为一个用 2位八进制表示的转义字符,答案选 A。 【知识模块】 数据类型、运算符与表达式 29 【正确答案】 A 【试题解析】 考查运算符与表达式。若除法运算符 “/“的参与量均为整型,则结果也为整型,所以 a=2。在 C语言中,用非 0表示真,用 0表示假,所以逻辑表达式 “( -1 )&( -1 )“的结果为真, b=1,答案选 A。 【知识模块】 数据类型、运算符与表达式 30 【正确答案】 A 【试题解析】 表达式 “(m=ab)&(
20、n=cb“为把关系表达式 “ab“的值赋值给 m, m=0,根据逻辑与表达式的 “短路“现象,第二个圆括号内的表达式不再计算,所以 n值没有变化,答案选 A。 【知识模块】 数据类型、运算符与表达式 31 【正确答案】 A 【试题解析】 字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算。本程序的逻辑是如果输入的字符不为 ,判定表达式 “c-?2?“的值,如果表达式的值为 0或者 1,即输入的字符为 ?2?、 ?3?时,输出两遍 c+4对应的字符;输入的字符为 ?4?时,输出一遍 c+4对应的字符;输入的字符为 ?5?,输出 c+3和 c+2对应的字
21、符;输入的字符为 ?7?时,输出 c+2对应的字符,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 32 【正确答案】 A 【试题解析】 字符常量与其 ASCII码值一一对应,比较和计算时使用字符数据对应的 ASCII码进行运算。 ?0?的 ASCII码为 0, ?0?的 ASCII码为 48, ?a?的ASCII码为 97, ?b?的 ASCII码为 98,所以只有第一条 if语句的判定条件为真,所以答案选 A。 【知识模块】 数据 类型、运算符与表达式 33 【正确答案】 A 【试题解析】 NULL为一个符号常量,对应的 ASCII码值为 0,答案选 A。 【知识模块】 数据类型、运算符与表达式