2024-2025学年上学期期中
2024-2025学年上学期期中试卷——邬海琴(含答案)
说明
- 也作为第一次月考。
一、单选题(20 分,每题 2 分)
-
下面关于 C 语言的描述,不正确的是( )。
A. C 语言是面向过程的高级程序设计语言
B. C 语言程序从源文件到可执行文件,中间只需要一个编译的过程
C. C 语言是编译型语言
D. 和机器语言相比,C 语言可移植性更强
答案:
B
C 语言程序从源文件到可执行文件,中间需要预处理、编译、汇编和链接四个阶段。
-
下列合法的变量名为( )。
A.
_registerB.
0violentC.
test-01sD.
main答案:
A、D
考点:标识符命名规则
B. 变量名不可以以数字开头。
C. 变量名中不可以存在
-等特殊字符。提示原题标注为单选题,但
_register和main均为合法变量名,参考答案汇总也写为 A/D。
-
设
int a = 5, b = 4, c = 3, d = 2, m = 1, n = 0;,则执行(m = a < b) && (n = c < d)语句后,m和n的值分别为( )。A. 0 0
B. 2 0
C. 0 2
D. 2 2
答案:
A
考点:关系运算符和 + 逻辑运算符
a < b结果为false,因此m的值为 0。c < d结果为false,因此n的值为 0。
-
下列 C 语言的语句没有语法错误的是( )。
A.
int a = 3++;B.
printf("%d"), a);C.
#include <stdio>D.
int a, b, c = 1;答案:
D
A.
int a = 3++;:常量不可以进行++运算。B.
printf("%d"), a);:多了一个)。C.
#include <stdio>:没有stdio库,只有stdio.h。
-
下列值为 3 的是( )。
A.
21 % 5B.
(float)11 / 3C.
11 / 3D.
(int)(11.0 / 3 + 0.5)答案:
C
考点:算数运算符 + 强制类型转换取整规则
A.
21 % 5运算结果为 1。B.
(float)11 / 3运算结果为 3.0。D.
(int)(11.0 / 3 + 0.5):11.0 / 3结果为 3.66,加 0.5 后为 4.16,强制转换为int类型后值为 4。
-
下列叙述错误的是( )。
A. 一个 C 程序可以引入多个头文件
B. 一个 C 程序只能有一个主函数
C. C 程序在书写时,有严格的缩进要求,否则不能编译通过
D. C 程序的主函数必须用
main作为函数名答案:
C
C 程序在书写时,没有严格的缩进要求。
-
假定
x = 3.45为double类型,则执行printf("%d", (int)x)的结果为( )。A. 3.4
B. 4
C. 3
D. 3.5
答案:
C
考点:强制类型转换取整规则
3.45 强制类型转换为
int后,值为 3,因此输出结果为 3。
-
表达式
(c < 12 && c >= 6) && !(c % 3)的值存在为真时,变量c可能的值为( )。A. 3
B. 0
C. 7
D. 6
答案:
D
考点:算数运算符 + 关系运算符和 + 逻辑运算符
当
c = 6时,(c < 12 && c >= 6)为真。c % 3 = 0,!0 = 1,因此!(c % 3)为真,(c < 12 && c >= 6) && !(c % 3)为真。
-
下面程序段的输出是什么( )。
int k = 6 % 5 ? 6 - 2 : 6 - 1;switch (k){case 4:k++;case 8:k--;default:k = 0;break;}printf("%d", k);A. 7
B. 8
C. 4
D. 0
答案:
D
考点:三元运算符和 +
switch case6 % 5为 1,因此k = 6 - 2 = 4。因为case语句后没有break,因此会一直执行直到遇到break,所以k的值为 0。
-
输出单精度浮点数,保留 3 位小数,占位符使用正确的是( )。
A.
%3fB.
%.3fC.
&3fD.
&.3f答案:
B
考点:占位符使用
原参考答案对 A 的解释为:“
%3f表示输出至少为 3 位浮点数,长度不足 3 位用 0 补全。”提示原参考答案对
%3f的解释有误:3表示最小字段宽度,宽度不足时默认以空格补齐;%f默认输出 6 位小数。保留 3 位小数应使用%.3f。
二、填空题(10 分,每题 2 分)
-
若有定义:
char w; int x; float y; double z;,则表达式x * w - z + y值的数据类型是 。答案:
double考点:多类型数据参与算数运算,结果向高精度数据类型对齐
-
字符串
"\\nacb\n"的长度为 。答案:
6(内存中占 7 字节)
一共有 6 个字符,分别是
'\\'、'n'、'a'、'c'、'b'和'\n'。字符串长度为 6(对应strlen(),不包括字符串结束符'\0'),内存中占 7 字节(对应sizeof(),包含字符串结束符'\0')。
-
do-while循环语句和while循环语句至少执行一次循环体的是 。答案:
do-while详解:略。
-
下面程序的输出结果为 。
#include <stdio.h>int main(void){int i = 5;printf("%d", 1 ^ 3 * (i + 5) % 7);return 0;}答案:
3
考点:算数运算符 + 位运算符 + 优先级
1 ^ 3 * (i + 5) % 7。当i = 5时,先计算括号内的i + 5 = 10,原式变为1 ^ 3 * 10 % 7。由于异或的优先级低于*和%,因此先计算3 * 10 % 7 = 2,原式变为1 ^ 2。1 的补码为0001,2 的补码为0010,进行异或之后为0011。补码0011的原码为0011 = 3,因此结果为 3。
-
下面程序的输出结果为 。
#include <stdio.h>#define F(x) 5+xint main(void){int x = 5;printf("%d", F(x) * 2);return 0;}答案:
15
考点:宏定义
define为原式替换,因此F(x) * 2 = 5 + x * 2 = 15。
三、编程题(70 分,每题 35 分)
-
输入两个整数
a, b,判断a的三次方与b的平方是否相等,若相等输出字符串"equal",否则输出两者间较小的数。输入描述:两个整数
a, b,。输出描述:一个字符串或者一个整数。
写一段完整的 C 语言程序,注意语法和输出格式。
输入样例:
4 8输出样例:
equal答案:
注意给定的输入范围为 ,如果使用
int会超出int的最大存储范围(使用%d扣 5 分)。#include <stdio.h>int main(){long long int a, b;scanf("%lld %lld", &a, &b);long long int c = a * a * a;long long int d = b * b;if (c == d){printf("equal");}else if (c > d){printf("%lld", d);}else{printf("%lld", c);}return 0;}
-
输入一个数字
N,输出一行由N个数字N组成的数字。输入描述:一个数字
N,。输出描述:一行数字。
写一段完整的 C 语言程序,注意语法和输出格式。
输入样例:
6输出样例:
666666答案:
#include <stdio.h>int main(){int n;scanf("%d", &n);for (int i = 0; i < n; i++){printf("%d", n);}return 0;}