资源描述
2025年大学大一(计算机科学与技术)C语言程序设计基础测试题及答案
(考试时间:90分钟 满分100分)
班级______ 姓名______
第I卷(选择题 共40分)
每题只有一个正确答案,请将正确答案填在括号内。(总共20题,每题2分,每题给出的选项中,只有一项符合题目要求)
1. 以下关于C语言标识符的叙述中,正确的是( )
A. 标识符可以是关键字
B. 标识符可以是下划线开头的字符串
C. 标识符中大写字母和小写字母被认为是不同的字符
D. 标识符的长度不能超过8个字符
2. 若有定义:int a = 5, b = 2; 则表达式(a /= b + 1)的值是( )
A. 1
B. 2
C. 3
D. 4
3. 以下能正确定义一维数组的选项是( )
A. int a[5] = {0, 1, 2, 3, 4, 5};
B. char a[] = {'0', '1', '2', '3', '4', '5', '\0'};
C. char a = {'A', 'B', 'C'};
D. int a[5] = "0123";
4. 若有定义:int a[2][3]; 则对a数组的第i行第j列元素的正确引用为( )
A. ((a + i) + j)
B. (a + i)[j]
C. (a + i + j)
D. (a + i + j)
5. 以下程序段的输出结果是( )
```c
int a = 1, b = 2, c = 3;
if (a > b)
if (a > c)
printf("%d\n", a);
else
printf("%d\n", c);
else
if (b > c)
printf("%d\n", b);
else
printf("%d\n", c);
```
A. 1
B. 2
C. 3
D. 无输出
6. 以下关于switch语句的叙述中,正确的是( )
A. 在switch语句中,default子句可以省略
B. 在switch语句中,每个case子句后面必须有break语句
C. 在switch语句中,只能根据整型表达式进行判断
D. 在switch语句中,case子句后面的常量表达式的值必须互不相同
7. 若有定义:int a = 10, b = 9, c = 8; 执行下列语句后,变量a、b、c的值分别是( )
```c
if (a > b) {
c = a;
a = b;
b = c;
}
```
A. 10, 9, 8
B. 9, 10, 8
C. 8, 9, 10
D. 9, 8, 10
8. 以下关于for循环的叙述中,正确的是( )
A. for循环只能用于循环次数已知的情况
B. for循环的循环体可以是一个空语句
C. for循环的执行次数总是比循环条件判断次数多一次
D. for循环的三个表达式都不能省略
9. 以下程序段的功能是求1到100的和,其中有一处错误,请指出并改正( )
```c
int sum = 0, i = 1;
for (; i <= 100; i++)
sum += i;
printf("%d\n", sum);
```
A. 程序没有错误
B. for循环的第一个表达式应改为i = 1
C. for循环的第二个表达式应改为i < 100
D. for循环的第三个表达式应改为i++
10. 以下函数定义中,正确的是( )
A. int fun(int x, int y) { int z; z = x + y; return z; }
B. int fun(int x, y) { int z; z = x + y; return z; }
C. fun(int x, int y) { int z; z = x + y; return z; }
D. int fun(int x, int y) { int z; z = x + y; return (z); }
11. 若有定义:void fun(int p) { p = p + 1; } 执行下列语句后,变量a的值是( )
```c
int a = 10;
fun(&a);
```
A. 10
B. 11
C. 12
D. 13
12. 以下关于指针的叙述中,正确的是( )
A. 指针变量可以直接进行算术运算
B. 指针变量可以直接进行比较运算
C. 指针变量只能指向同一类型的变量
D. 指针变量可以指向任何类型的变量
13. 若有定义:int a[3][4]; 则以下不能表示数组元素a[1][2]的是( )
A. ((a + 1) + 2)
B. (a[1] + 2)
C. ((a + 1))[2]
D. a[1][2]
14. 以下程序段的输出结果是( )
```c
char str[] = "abc";
printf("%d\n", strlen(str));
```
A. 3
B. 4
C. 5
D. 6
15. 若有定义:char str[10] = "hello"; 则以下对str数组元素的引用中,正确的是( )
A. str[5] = 'w';
B. str += 2;
C. str = 'w';
D. str[5] = '\0';
16. 以下程序段的功能是将字符串s1复制到字符串s中,其中有一处错误,请指出并改正( )
```c
char s1[] = "abc", s[10];
int i;
for (i = 0; s1[i]!= '\0'; i++)
s[i] = s1[i];
s[i] = '\0';
```
A. 程序没有错误
B. for循环的条件应改为s1[i]!= '\0' && i < 10
C. for循环的条件应改为s1[i]!= '\0' || i < 10
D. s[i] = '\0'; 应改为s[i + 1] = '\0';
17. 以下关于文件操作的叙述中,正确的是( )
A. 文件操作结束后,必须关闭文件
B. 文件操作结束后,文件会自动关闭
C. 文件操作只能对文本文件进行
D. 文件操作只能对二进制文件进行
18. 若有定义:FILE fp; 执行下列语句后,文件指针fp指向的文件是( )
```c
fp = fopen("test.txt", "w");
```
A. 只读文件
B. 只写文件
C. 读写文件
D. 追加文件
19. 以下程序段的功能是从文件中读取一个整数并输出,其中有一处错误,请指出并改正( )
```c
FILE fp; int num;
fp = fopen("test.txt", "r");
fscanf(fp, "%d", &num);
printf("%d\n", num);
fclose(fp);
```
A. 程序没有错误
B. fscanf(fp, "%d", &num); 应改为scanf("%d", &num);
C. fscanf(fp, "%d", &num); 应改为fscanf("%d", num);
D. fclose(fp); 应改为fclose();
20. 若有定义:int a = 10, b = 20; 执行下列语句后,变量a、b的值分别是( )
```c
void swap(int x, int y) { int t; t = x; x = y; y = t; }
swap(a, b);
```
A. 10, 20
B. 20, 10
C. 10, 10
D. 20, 2
展开阅读全文