资源描述
2025年大学计算机科学与技术(C语言程序设计)试题及答案
(考试时间:90分钟 满分100分)
班级______ 姓名______
第I卷(选择题,共40分)
每题给出的四个选项中,只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。(总共8题,每题5分)
1. 以下关于C语言标识符的叙述中,正确的是( )
A. 标识符只能由字母和数字组成
B. 标识符的首字符可以是数字
C. 标识符可以是关键字
D. 标识符区分大小写
2. 若有定义:int a = 2, b = 3, c = 4; 则执行语句a = 16 + (b++) - (++c); 后,a的值为( )
A. 28
B. 27
C. 32
D. 31
3. 以下能正确定义二维数组的是( )
A. int a[][3];
B. int a[][3] = {2 3};
C. int a[][3] = {{1, 2, 3}, {4, 5, 6}};
D. int a[2][3] = {{1, 2}, {3, 4}, {5, 6}};
4. 有以下程序段:
int k = 0;
while (k = 1) k++;
while循环执行的次数是( )
A. 无限次
B. 有语法错误,不能执行
C. 一次也不执行
D. 执行1次
5. 若有定义:char s[10] = "program"; 则s数组中元素个数为( )
A. 7
B. 8
C. 9
D. 10
6. 以下关于函数的叙述中,正确的是( )
A. 函数调用必须传递实参
B. 函数必须有返回值
C. 函数定义可以嵌套
D. 函数形参的类型与形实结合时传递的数据类型无关
7. 若有定义:int a[5] = {1, 2, 3, 4, 5}; 则对数组a元素的正确引用是( )
A. a[-1]
B. a[5]
C. a[2 2]
D. a[5 - 3]
8. 以下程序段的输出结果是( )
int x = 1, y = 0;
switch (x) {
case 1:
switch (y) {
case 0: printf("first"); break;
case 1: printf("second"); break;
}
case 2: printf("third");
}
A. first
B. firstthird
C. firstsecondthird
D. third
第II卷(非选择题,共60分)
9. (10分)请写出下面程序的运行结果。
include <stdio.h>
int main() {
int a = 10, b = 20;
int p1 = &a, p2 = &b;
if (p1 > p2) {
int t = p1;
p1 = p2;
p2 = t;
}
printf("%d %d\n", p1, p2);
return 0;
}
10. (10分)请填空,使程序实现计算1到100的累加和。
include <stdio.h>
int main() {
int i, sum = 0;
for (i = 1; i <= 100; i++) {
sum += i;
}
printf("sum = %d\n", sum);
return 0;
}
11. (10分)编写一个函数,判断一个整数是否为素数。
include <stdio.h>
int isPrime(int n) {
if (n <= 1) return 0;
for (int i = 2; i i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
12. (15分)阅读以下程序,回答问题。
include <stdio.h>
void fun(int a, int n) {
int i, j, t;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if ((a + i) > (a + j)) {
t = (a + i);
(a + i) = (a + j);
(a + j) = t;
}
}
}
}
int main() {
int arr[] = {12, 11, 13, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
fun(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
问题:
(1)函数fun的功能是什么?
(2)程序运行后的输出结果是什么?
13. (15分)从键盘输入10个整数,将它们存入一个数组中,然后找出其中的最大值和最小值,并输出。
include <stdio.h>
int main() {
int arr[10], max, min;
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
max = min = arr[0];
for (int i = 1; i < 10; i++) {
if (arr[i] > max) max = arr[i];
if (arr[i] < min) min = arr[i];
}
printf("最大值是:%d,最小值是:%d\n", max, min);
return 0;
}
答案:1. D 2. A 3. C 4. A 5. D 6. D 7. D 8. B 9. 10 20 10. 无 11. 无 12. (1)函数fun的功能是对数组a进行冒泡排序,将数组元素从小到大排序。(2)5 6 11 12 13 13. 无
展开阅读全文