内容正文:
《编程语言基础——C语言》高等教育出版社(第5版)
第二章 基本数据类型与简单程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、下列选项中,不属于C语言基本数据类型的是( )
A. int B. float C. string D. char
2、下列选项中属于正确的整型常量的是( )
A. 019 B. 'a' C. 0Xa9 D. "hello"
3、下列选项中,合法的C语言变量名是( )
A. 2ab B. int C. a&b D. Long
4、若有定义:double a; 则变量a在内存中占用的字节数通常是( )
A. 1 B. 2 C. 4 D. 8
5、下列选项中,用于输出整型变量的格式控制符的是( )
A. %c B. %f C. %d D. %s
6、若有定义 float x = 3.14;,则表达式 sizeof(x + 1.0) 的值通常是( )
A. 4 B. 8 C. 12 D. 16
7、下列选项中,正确的字符常量是( )
A. "A" B. 'AB' C. 'A' D. A
8、若有定义:char ch = 'A';,则ch在内存中存储的是( )
A. 字符A B. A的ASCII码值 C. 字符串A D. 地址
9、下列表达式中,值为整型的是( )
A. 3.5 + 2 B. 10 / 3 C. 10.0 / 3 D. 3 * 2.5
10、下列选项中,用于输入双精度浮点型变量的格式控制符是( )
A. %f B. %c C. %lf D. %s
11、若有定义:int a = 5, b = 2;,则表达式 a % b/b 的值是( )
A. 1 B. 0.5 C. 0 D. 2.0
12、下列选项中,正确的赋值语句是( )
A. a = b = c = 5; B. a = 5, b = 6;
C. int a = 5; D. a + b = c;
13、若有定义:int a = 3;,则执行 a *= 2; 后,a的值是( )
A. 2 B. 6 C. 8 D. 不确定
14、下列运算符中,优先级最高的是( )
A. + B. ++ C. = D. /
15、若有定义:int a = 5; float b = 2.5;,则表达式 a + b 的类型是( )
A. int B. float C. char D. double
16、下列选项中,不是C语言关键字的是( )
A. int B. float C. printf D. char
17、若有定义:int a;,则语句 scanf("%d", a); 的错误是( )
A. 格式符错误 B. 变量名错误
C. 缺少取地址符 D. 没有错误
18、下列选项中,能正确输出字符变量ch的值的是( )
A. printf("%c", ch); B. printf("%d", ch); C. printf("%s", ch); D. printf("%f", ch);
19、若有定义 int a = 10;,则执行 a = a <<= 1, a += 2; 后,a 的值是( )
A. 10 B. 20 C. 22 D. 24
20、下面四个选项中,均是合法的整型常量的选项是( )。
A.160 B.-0xcdf C.-01 D.-0x48a
-0xffff 01a 986,012 2e5
011 0xe 0668 0x
21、下列字符常量中,合法的是( )
A. '\x1g' B. '\0x41' C. '\\' D. '\0128'
22、设c是字符变量,以下语句中错误的是( )。
A.c='Y'; B.c='\ \'; C.c='Yes'; D.c='\x23';
23、阅读以下程序,当输入数据的形式为:25,13,10<CR>,正确的输出结果为( )(CR表示回车)。
main()
{ int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d
",x+y+z);
}
A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值
24、已知字母A的ASCII码为65,以下程序段的输出结果是( )。
char c1='A',c2='Y';
printf("%d,%d",c1,c2);
A.65,90 B.A,Y C.65,89 D.输出格式不合法
25、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( )。
A.int B.float C.double D.不确定
二、多选题(本题共5小题,每题4分,共20分)
1、下列选项中,属于C语言基本数据类型的是( )
A. int B. float C. double D. string
2、以下选项中属于合法的变量名是( )
A. _abc B. 123abc C. a_b_c D. auto
3、下列选项中,都属于正确的实型常量的有( )
A. 017, 0, 2e5 B. 123., 1e-3, .5e0
C. .23, 4e5, 6.70 D. 1e2.5, 3.4, 5.6e7
4、下列表达式中,结果为浮点型的是( )
A. 3 + 2.0 B. 5 / 2 C. 10.0 / 4 D. 2 * 3.5
5、下列选项中,都属于正确的语句的有( )
A. int a; scanf("%d", &a); float b; scanf("%f", b); char c; scanf("%c", &c);
B. int a; scanf("%d", &a); float b; scanf("%lf", &b); char c; scanf("%c", &c);
C. int a; scanf("%d", &a); float b; scanf("%f", &b); char c; scanf("%c", &c);
D. int a; scanf("%d", &a); double b; scanf("%lf", &b); char c; scanf("%c", &c);
三、判断题(本题共10小题,每题2分,共20分)
1、C语言中,变量名不区分大小写。( )
2、int类型变量只能存储整数。( )
3、字符常量可以用双引号括起来。( )
4、赋值运算符“=”的优先级高于算术运算符。( )
5、在C语言中,0代表假,非0代表真。( )
6、float类型变量可以存储整数。( )
7、使用scanf输入变量时,必须加上取地址符&。( )
8、表达式 5 / 2 的结果是2.5。( )
9、关键字不能作为变量名使用。( )
10、想使用函数sqrt()需要在程序开头加上#include<conio.h>。( )
四、填空题(本题共5小题,每题2分,共10分)
1、在C语言中,用于定义无符号短整型变量的关键字是______。
2、若有定义:int a = -5, b = 2;,则表达式 a % b 的值是______。
3、若要输出一个字符变量 c 的值,但要求以十六进制形式输出其ASCII码,正确的格式控制符是______。
4、若有定义:float x = 3.14;,则执行 printf("%d", x); 后,程序的行为是______。
5、运算符&的含义为______,优先级为______。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《编程语言基础——C语言》高等教育出版社(第5版)
第二章 基本数据类型与简单程序设计 章节过关卷
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、下列选项中,不属于C语言基本数据类型的是( )
A. int B. float C. string D. char
【答案】C
【解析】C语言的基本数据类型包括整型(int)、浮点型(float)、字符型(char)等,string不是基本数据类型。
2、下列选项中属于正确的整型常量的是( )
A. 019 B. 'a' C. 0Xa9 D. "hello"
【答案】C
【解析】0Xa9是以0X开头的合法十六进制数。A. 019含有非法八进制数字9,B. 'a'是字符常量,D. "hello"是字符串常量,均不属于整型常量。
3、下列选项中,合法的C语言变量名是( )
A. 2ab B. int C. a&b D. Long
【答案】C
【解析】变量名的命名原则只能包含数字字母下划线,第一个字符不能是数字,C语言区分大小写,不能是关键字。
4、若有定义:double a; 则变量a在内存中占用的字节数通常是( )
A. 1 B. 2 C. 4 D. 8
【答案】D
【解析】在大多数现代编译器中,double类型占8个字节。
5、下列选项中,用于输出整型变量的格式控制符的是( )
A. %c B. %f C. %d D. %s
【答案】C
【解析】%d用于输出整型,%c用于字符,%f用于浮点型,%s用于字符串。
6、若有定义 float x = 3.14;,则表达式 sizeof(x + 1.0) 的值通常是( )
A. 4 B. 8 C. 12 D. 16
【答案】B
【解析】1.0 是 double 类型,算术运算时 float 类型的 x 会被自动提升为 double,因此 x + 1.0 的结果类型为 double,在大多数系统中占8字节。
7、下列选项中,正确的字符常量是( )
A. "A" B. 'AB' C. 'A' D. A
【答案】C
【解析】字符常量是用单引号括起来的单个字符。
8、若有定义:char ch = 'A';,则ch在内存中存储的是( )
A. 字符A B. A的ASCII码值 C. 字符串A D. 地址
【答案】B
【解析】字符变量存储的是字符对应的ASCII码值。
9、下列表达式中,值为整型的是( )
A. 3.5 + 2 B. 10 / 3 C. 10.0 / 3 D. 3 * 2.5
【答案】B
【解析】10 / 3 是两个整数相除,结果为整型3(取整)。
10、下列选项中,用于输入双精度浮点型变量的格式控制符是( )
A. %f B. %c C. %lf D. %s
【答案】C
【解析】scanf中双精度变量使用%lf。
11、若有定义:int a = 5, b = 2;,则表达式 a % b/b 的值是( )
A. 1 B. 0.5 C. 0 D. 2.0
【答案】B
【解析】%为取余运算,/为取商运算,整数相除结果为整数,小数部分被舍弃。
12、下列选项中,正确的赋值语句是( )
A. a = b = c = 5; B. a = 5, b = 6;
C. int a = 5; D. a + b = c;
【答案】A
【解析】B选项为逗号运算符,C选项为定义语句,D选项格式不对,赋值号左边不能是表达式,赋值语句是从右向左结合,a = b = c = 5 是合法的连续赋值。
13、若有定义:int a = 3;,则执行 a *= 2; 后,a的值是( )
A. 2 B. 6 C. 8 D. 不确定
【答案】B
【解析】a = a*2 是将a的值乘以2后再赋给a。
14、下列运算符中,优先级最高的是( )
A. + B. ++ C. = D. /
【答案】B
【解析】+的优先级为4,++的优先级为2,=的优先级为14,/的优先级为3。
15、若有定义:int a = 5; float b = 2.5;,则表达式 a + b 的类型是( )
A. int B. float C. char D. double
【答案】B
【解析】整型与浮点型运算时,整型会被自动转换为浮点型,结果为float。
16、下列选项中,不是C语言关键字的是( )
A. int B. float C. printf D. char
【答案】C
【解析】printf是库函数名,不是关键字。
17、若有定义:int a;,则语句 scanf("%d", a); 的错误是( )
A. 格式符错误 B. 变量名错误
C. 缺少取地址符 D. 没有错误
【答案】C
【解析】scanf中变量前应加&取地址符,应写成 &a。
18、下列选项中,能正确输出字符变量ch的值的是( )
A. printf("%c", ch); B. printf("%d", ch); C. printf("%s", ch); D. printf("%f", ch);
【答案】A
【解析】输出字符使用%c,%d输出ASCII码,C、D格式不匹配。
19、若有定义 int a = 10;,则执行 a = a <<= 1, a += 2; 后,a 的值是( )
A. 10 B. 20 C. 22 D. 24
【答案】C
【解析】该语句是一个逗号表达式,逗号运算符优先级最低,因此先执行赋值运算 a = a <<= 1。复合赋值 <<= 优先级与赋值相同,且右结合,先计算 a <<= 1 将 a 左移1位得20,然后将结果赋给 a,此时 a 变为20。接着执行逗号后的 a += 2,将 a 加2得22。
20、下面四个选项中,均是合法的整型常量的选项是( )。
A.160 B.-0xcdf C.-01 D.-0x48a
-0xffff 01a 986,012 2e5
011 0xe 0668 0x
【答案】A
【解析】选项A:160(十进制合法)、-0xffff(十六进制合法,负号为一元运算符)、011(八进制合法,因为数字只有1,在0~7范围内)。全部合法。
选项B:-0xcdf(十六进制合法)、01a(八进制数中出现了非法数字'a',不合法)、0xe(十六进制合法,但注意e是十六进制数字)。
选项C:-01(八进制合法)、986,012(含有逗号,不是合法数字表示,非法)、0668(八进制数中出现了数字8,超出0~7范围,非法)。
选项D:-0x48a(十六进制合法)、2e5(指数形式,属于浮点常量,不是整型常量)、0x(十六进制前缀后无数字,不合法)。
21、下列字符常量中,合法的是( )
A. '\x1g' B. '\0x41' C. '\\' D. '\0128'
【答案】C
【解析】 '\x1g'中,\x是十六进制转义序列,但后面必须跟合法的十六进制数字(0-9、A-F、a-f),g不是。'\0x41'中,\0是八进制转义序列,但后面只能跟八进制数字(0-7),x不是。
'\\'是反斜杠本身的转义。'\0128'中,\012是合法的八进制转义。
22、设c是字符变量,以下语句中错误的是( )。
A.c='Y'; B.c='\ \'; C.c='Yes'; D.c='\x23';
【答案】C
【解析】c='Y';将字符常量 'Y' 正确,赋给字符变量。c='\\'; 正确,反斜杠转义字符表示一个反斜杠本身。c='Yes'; 错误,单引号内只能包含单个字符或一个转义字符,不能赋值字符串。c='\x23'; 正确,十六进制转义字符,对应ASCII码0x23(即'#')。
23、阅读以下程序,当输入数据的形式为:25,13,10<CR>,正确的输出结果为( )(CR表示回车)。
main()
{ int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d
",x+y+z);
}
A.x+y+z=48 B.x+y+z=35 C.x+z=35 D.不确定值
【答案】D
【解析】scanf 的格式控制字符串为 "%d%d%d",要求输入时以空白字符(空格、制表符或换行)分隔三个整数。但实际输入为 25,13,10,中间用逗号分隔,导致读取第一个整数 25 后,遇到逗号,与后续 %d 不匹配,因此 y 和 z 未被正确赋值,其值为不确定的随机数,最终输出结果不确定。
24、已知字母A的ASCII码为65,以下程序段的输出结果是( )。
char c1='A',c2='Y';
printf("%d,%d",c1,c2);
A.65,90 B.A,Y C.65,89 D.输出格式不合法
【答案】C
【解析】字符变量以 %d 格式输出时,输出其 ASCII 码值。已知 'A' 的 ASCII 码为 65,'Y' 的 ASCII 码为 89(因为 A 到 Y 相差 24,65+24=89)。因此输出结果为 65,89。
25、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为( )。
A.int B.float C.double D.不确定
【答案】C
【解析】i * f 中,i 是 double,f 是 float,float 被提升为 double,结果为 double。 10 + 'a' 10 是 int,'a' 是字符常量,在表达式中转换为 int(ASCII 值),结果为 int。最后 int 与 double 相加,int 被转换为 double,结果为 double。
二、多选题(本题共5小题,每题4分,共20分)
1、下列选项中,属于C语言基本数据类型的是( )
A. int B. float C. double D. string
【答案】ABC
【解析】int、float、double都是基本数据类型,string不是。
2、以下选项中属于合法的变量名是( )
A. _abc B. 123abc C. a_b_c D. auto
【答案】AC
【解析】_abc和a_b_c符合命名规则,123abc以数字开头,auto是关键字。
3、下列选项中,都属于正确的实型常量的有( )
A. 017, 0, 2e5 B. 123., 1e-3, .5e0
C. .23, 4e5, 6.70 D. 1e2.5, 3.4, 5.6e7
答案:BC。
【解析】实型常量包括小数形式和指数形式,指数部分必须为整数,且不能出现多个小数点。A中的017是八进制整型常量,不是实型常量。B中的123.(小数形式)、1e-3(指数形式)、.5e0(小数加指数)都符合实型常量语法。C中都法。D中的1e2.5指数部分为小数,非法。
4、下列表达式中,结果为浮点型的是( )
A. 3 + 2.0 B. 5 / 2 C. 10.0 / 4 D. 2 * 3.5
【答案】ACD
【解析】A. C. D中都包含浮点数,结果为浮点型;B是整数相除,结果为整型。
5、下列选项中,都属于正确的语句的有( )
A. int a; scanf("%d", &a); float b; scanf("%f", b); char c; scanf("%c", &c);
B. int a; scanf("%d", &a); float b; scanf("%lf", &b); char c; scanf("%c", &c);
C. int a; scanf("%d", &a); float b; scanf("%f", &b); char c; scanf("%c", &c);
D. int a; scanf("%d", &a); double b; scanf("%lf", &b); char c; scanf("%c", &c);
【答案】CD
【解析】在C语言中,scanf 必须传入变量的地址,且格式符需与变量类型匹配。C、D中所有语句均正确:int 用 %d 并取地址,float 用 %f 并取地址,char 用 %c 并取地址。A中第二个语句 scanf("%f", b) 缺少取地址符 &。B中第二个语句 scanf("lf", &b) 类型不匹配。
三、判断题(本题共10小题,每题2分,共20分)
1、C语言中,变量名不区分大小写。( )
【答案】×
【解析】C语言区分大小写,例如a和A是两个不同的变量。
2、int类型变量只能存储整数。( )
【答案】√
【解析】int用于存储整型数据。
3、字符常量可以用双引号括起来。( )
【答案】×
【解析】字符常量用单引号,字符串用双引号。
4、赋值运算符“=”的优先级高于算术运算符。( )
【答案】×
【解析】算术运算符优先级高于赋值运算符。
5、在C语言中,0代表假,非0代表真。( )
【答案】√
【解析】C语言中逻辑判断以0为假,非0为真。
6、float类型变量可以存储整数。( )
【答案】√
【解析】float可以存储整数,但会以浮点数形式存储。
7、使用scanf输入变量时,必须加上取地址符&。( )
【答案】√
【解析】scanf需要变量的地址才能正确赋值。
8、表达式 5 / 2 的结果是2.5。( )
【答案】×
【解析】整数相除结果为整数,5/2=2。
9、关键字不能作为变量名使用。( )
【答案】√
【解析】关键字是系统保留字,不能用作变量名。
10、想使用函数sqrt()需要在程序开头加上#include<conio.h>。( )
【答案】×
【解析】函数sqrt()包含在头文件#include<math.h>。
四、填空题(本题共5小题,每题2分,共10分)
1、在C语言中,用于定义无符号短整型变量的关键字是______。
【答案】unsigned short
【解析】unsigned 表示无符号,short 表示短整型,组合使用可定义无符号短整型变量。
2、若有定义:int a = -5, b = 2;,则表达式 a % b 的值是______。
【答案】-1
【解析】取模运算的结果符号与被除数相同,因此 -5 % 2 = -1。
3、若要输出一个字符变量 c 的值,但要求以十六进制形式输出其ASCII码,正确的格式控制符是______。
【答案】%x 或 %X
【解析】字符变量在 printf 中会被提升为 int 类型,使用 %x 可以输出其ASCII码的十六进制形式(小写),%X 输出大写。
4、若有定义:float x = 3.14;,则执行 printf("%d", x); 后,程序的行为是______。
【答案】输出结果不确定/不确定的值
【解析】格式符 %d 与变量类型 float 不匹配,导致未定义行为,输出结果不确定,但通常不会引起编译错误。
5、运算符&的含义为______,优先级为______。
【答案】按位与 8
【解析】&为位运算符,优先级为8。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$