下载试卷

C语言模拟测试卷

姓名:__________
班级:__________
学号:__________
一、选择题(每空6分,共30分)
1. 以下语言中,可移植性最好的是( )6分
A. 汇编语言
B. 机器语言
C. C语言
D. 二进制指令
2. 将十进制数 125 转换为二进制的结果是( )6分
A. 01111101
B. 01111100
C. 01111011
D. 01111001
3. 已知 int a=3, b=5, c=2;,表达式 a>b?a:(c==b?c:b) 的值是6分
A. 3
B. 5
C. 2
D. 0
4. 若有定义 int arr[4][4];,按内存顺序其第10个元素是( )6分
A. arr[2][1]
B. arr[2][2]
C. arr[1][2]
D. arr[1][3]
5. 已知 int x=1, y=2;,表达式 (x^y) & 2 的值是( )6分
A. 0
B. 1
C. 2
D. 3
二、程序补全(每空5分,共20分)
以下程序统计n个学生成绩中高于平均分的人数,请补全代码:
#include <stdio.h> int main() { int n = 5, i, count = 0; // 声明成绩数组 float sum = 0.0, avg; printf("输入%d个成绩:\n", n); for (i = 0; i < n; i++) { // 输入成绩 sum += score[i]; } // 计算平均分 for (i = 0; i < n; i++) if () // 判断是否高于平均分 count++; printf("高于平均分人数: %d", count); return 0; }
三、程序填空(每空10分,共50分)
下列程序用于判断一个三位数是否为水仙花数(水仙花数是指一个三位数,其各位数字立方和等于该数本身,如153=1³+5³+3³)。请补全代码:
#include <stdio.h> int main() { int num, digit, sum = 0, temp; printf("请输入一个三位数: "); scanf("%d", &num); ; // 你猜猜这里写什么 for (int i = 0; i < 3; i++) { digit = ; // 有意思,干啥用的 sum = ; // 有意思,不知道干啥用的 temp = ; // 去掉temp的最后一位 } if () // 判断是否为水仙花数 printf("是水仙花数\n"); else printf("不是水仙花数\n"); return 0; }
四、程序分析(共50分)
1. 下列程序输出结果是 10分
#include <stdio.h> int main() { char s[] = "Hello"; printf("%d ", sizeof(s)); printf("%d", strlen(s)); return 0; }
2. 下列程序输出结果是 10分
#include <stdio.h> void swap(int *a, int *b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; } int main() { int x = 5, y = 3; swap(&x, &y); printf("%d,%d", x, y); return 0; }
3. 下列递归程序输出 f(5) 的结果是 10分
#include <stdio.h> int f(int n) { return (n == 0) ? 0 : n + f(n-1); } int main() { printf("%d", f(5)); return 0; }
4. 下列程序输出结果是 10分
#include <stdio.h> int main() { char str[] = "abc\0def"; printf("%d", strlen(str)); return 0; }
5. 下列函数调用 func("AABBAA", 'A') 的返回值是 10分
int func(char *s, char c) { int cnt = 0; while (*s) { if (*s == c) cnt++; s++; } return cnt; }