1、 2025年大学大一(计算机科学与技术)C语言程序设计基础测试题及答案 (考试时间:90分钟 满分100分) 班级______ 姓名______ 第I卷(选择题 共40分) 每题只有一个正确答案,请将正确答案填在括号内。(总共20题,每题2分,每题给出的选项中,只有一项符合题目要求) 1. 以下关于C语言标识符的叙述中,正确的是( ) A. 标识符可以是关键字 B. 标识符可以是下划线开头的字符串 C. 标识符中大写字母和小写字母被认为是不同的字符 D. 标识符的长度不能超过8个字符 2. 若有定义:int a = 5, b = 2; 则表达式
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
3、 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
4、语句的叙述中,正确的是( ) 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
5、 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循环的
6、第一个表达式应改为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; r
7、eturn (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) +
8、 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
9、复制到字符串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. 文件操作结束
10、后,必须关闭文件 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,
11、 "%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






