C语言单元测试卷

班级:
姓名:
学号:
总分:150分
剩余时间:120:00
一、不定项选择题(每题3分,共30分,少选得1分,错选不得分)
1. 以下属于C语言关键字的是( )
2. C语言程序的入口是( )
3. 以下能正确定义整型变量a的语句是( )
4. 以下关于printf()scanf()的说法,正确的是( )
5. 若int a = 3, b = 4;,执行a = b++;后,ab的值分别是( )
6. 以下程序的运行结果是( )
#include <stdio.h>
int main()
{
    int x = 10;
    if (x > 5) {
        x += 5;}
    else if (x > 8){
        x += 3;}
    else{
        x -= 2;}
    printf("%d", x);
    return 0;
}
7. 关于if语句,以下说法正确的是( )
8. 以下程序的输出结果是( )
#include <stdio.h>
int main() {
    char ch = 'A';
    printf("%c, %d", ch, ch + 32);
    return 0;
}
9. 以下关于scanf("%d%c%f", &a, &b, &c);的说法,正确的是( )
10. 以下程序的运行结果是( )
#include <stdio.h>
int main() {
    int a = 2, b = 3, c = 4;
    if (a > b) {
        if (b > c) {
            c++; }
        else  {
            b++;}
    }
    else {
        if (c > a){
            a++;}
        else {
            c++;}
    }
    printf("%d,%d,%d", a, b, c);
    return 0;
}
二、填空题(每题3分,共30分)
1. C语言程序的基本结构包括(写出3个部分)。
2. C语言程序的执行从函数开始,以语句结束(写出核心内容)。
3. float类型用于存储(描述数据类型)。
4. 若float a = 3.5, b = 2;,表达式a / b的值是,表达式(int)a / b的值是
5. 若int a = 2, b = 3;,表达式a * b + (a++) - (--b)的值是
6. 若int a = 10;,执行a = a + (a *= 2);后,a的值是
7. 输入语句scanf("%d%f", &x, &y);中,x的类型是y的类型是
8. 若int a = 5;,执行a += a -= a * a;后,a的值是
9. 以下程序输出"偶数"或"奇数",请补全代码:
#include <stdio.h>
int main() {
    int num;
    scanf("%d", &num);
    if () {  // 补全条件
        printf("偶数");}
    else {
        printf("奇数");}
    return 0;
}
10. 以下程序的功能是输出两个数中的较小值,补全代码:
#include <stdio.h>
int main() {
    int x = 5, y = 8, min;
    min = (x < y) ?  : ;
    printf("%d", min);
    return 0;
}
三、程序阅读题(每题5分,共20分)
1. 阅读程序,写出运行结果:
#include <stdio.h>
int main() {
    int a = 6, b = 3, c = 2;
    int res = a - b * c + (a % b);
    printf("%d", res);
    return 0;
}
运行结果:
2. 阅读程序,写出运行结果:
#include <stdio.h>
int main() {
    int x = 10, y = 5;
    if (x / y > 1) {
        x -= 3;
        y += 2;}
    else {
        x += 3;
        y -= 2;}
    printf("%d,%d", x, y);
    return 0;
}
运行结果:
3. 阅读程序,写出运行结果:
#include <stdio.h>
int main() {
    int m = 5, n = 3;
    int p = (m++ > 5) && (--n < 3);
    printf("%d,%d,%d", m, n, p);
    return 0;
}
运行结果:
4. 阅读程序,写出运行结果:
#include <stdio.h>
int main() {
    int a = 2, b = 4, c = 6;
    if (a > b) {
        if (b > c) {
            a++;}
        else {
            b++;}
    } else if (c > a) {
        if (b < c) {
            c--;}
        else {
            a--;}
    } else {
        c++;
    }
    printf("%d,%d,%d", a, b, c);
    return 0;
}
运行结果:
四、程序改错题(每题5分,共20分)
1. 以下程序用于计算两个浮点数的差值并输出,存在错误,请修改:
#include <stdio.h>
int main() {
    int a, b;
    scanf("%f%f", a, b);
    float diff = a - b;
    printf("差值:%d", diff);
    return 0;
}
错误1:
错误2:
错误3:
2. 以下程序用于判断一个整数是否为偶数(能被2整除),存在逻辑错误,请修改:
#include <stdio.h>
int main() {
    int num;
    scanf("%d", &num);
    if (num % 2 = 0) {
        printf("是偶数");}
    else {
        printf("是奇数");}
    return 0;
}
修改:
3. 以下程序用于输出两个整数中的较小值,存在语法和逻辑错误,请修改:
#include <stdio.h>
int main() {
    int x, y, min;
    printf("请输入两个整数:");
    scanf("%d%d", &x, &y);
    if (x > y)  min = y
    else min = x;
    printf("较小值是:min");
    return 0;
}
错误1:
错误2:
4. 以下程序用于根据输入的分数(0~100)判断是否及格(≥60),存在输入逻辑错误,请修改:
#include <stdio.h>
int main() {
    float score;
    scanf("%d", &score);
    if (score >= 60 && score <= 100) {
        printf("及格");
    } else if (score < 60 && score >= 0) {
        printf("不及格");
    } else {
        printf("输入无效");}
    return 0;
}
修改:
五、简单编程题(每题10分,共30分,需要在答题卡上写出关键逻辑)
1. 编写程序:定义两个整型变量m=15n=7,计算并输出m除以n的商和余数(例如输出"商:2,余数:1")。
要求:使用算术运算符实现,输出格式清晰。
2. 编写程序:从键盘输入一个浮点数(表示商品价格),计算并输出打8折后的价格(例如输入100.0,输出"折后价格:80.0")。
要求:保留1位小数,输入时提示"请输入商品原价:"。
3. 编写程序:从键盘输入一个整数,判断该数是否为正数且能被3整除,若满足条件输出"符合条件",否则输出"不符合条件"(例如输入9输出"符合条件",输入-6输出"不符合条件")。
要求:使用if-else语句实现逻辑判断。
六、综合编程题(20分)
编写程序:实现一个简易成绩管理系统的核心功能,具体要求如下:
  • 从键盘输入3名学生的信息:学号(整数)、姓名(单个字符,如'A'、'B')、3门课程成绩(浮点型,分别为语文、数学、英语);
  • 计算每名学生的平均分(保留2位小数),并根据平均分评定等级:
    • 平均分≥90:等级'A'(优秀)
    • 80≤平均分<90:等级'B'(良好)
    • 70≤平均分<80:等级'C'(中等)
    • 60≤平均分<70:等级'D'(及格)
    • 平均分<60:等级'E'(不及格)
  • 统计3名学生中"优秀"(等级'A')的人数;
  • 输出所有学生的完整信息(学号、姓名、3门成绩、平均分、等级);
  • 额外要求:输入成绩时需判断是否为有效成绩(0~100),若输入无效成绩(如-5、105),提示"成绩输入无效,重新输入该课程成绩:",直至输入有效成绩为止。

提交后将无法修改,请仔细检查答案