目 录CONTENT

文章目录

软件3+2f复习

李航
2026-01-05 / 0 评论 / 4 点赞 / 162 阅读 / 0 字

软件3+2复习

第1题

01.png

#include <stdio.h>
#include <math.h>  // 用于sqrt函数(计算平方根)

int main() {
    double x, y;  // 用double存储,适配小数和大数场景

    // 提示用户输入x的值
    printf("请输入x的值:");
    scanf("%lf", &x);

    // 根据x的范围计算y
    if (x < 0) {
        y = x + 5;
    } else if (x >= 0 && x < 5) {
        y = x * x - 2;
    } else {  // x >= 5的情况
        y = sqrt(x) + 1;
    }

    // 输出结果
    printf("y = %.2lf\n", y);

    return 0;
}

第2题

02.png

#include <stdio.h>

int main() {
    double x, y;
    // 提示输入x
    printf("请输入x的值:");
    scanf("%lf", &x);

    // 根据x的范围计算y
    if (x < 2) {
        y = 2 * x - 1;
    } else if (x >= 2 && x < 8) {
        y = 3 * x + 4;
    } else { // x >= 8
        y = x - 6;
    }

    // 保留2位小数输出
    printf("对应的y值为:%.2lf\n", y);
    return 0;
}

第3题

03.png

#include <stdio.h>

int main() {
    // 定义年份变量,遍历范围 2000 ~ 2666
    int year;
    printf("2000年 ~ 2666年之间的所有闰年:\n");

    // 遍历指定区间的每一个年份
    for (year = 2000; year <= 2666; year++)
    {
        // 闰年判断核心条件(二选一即可)
        if ( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) )
        {
            printf("%d  ", year); // 输出符合条件的闰年
        }
    }
    printf("\n"); // 换行优化输出格式
    return 0;
}

第4题

04.png

#include <stdio.h>

int main() {
    int num,i;  // 存储输入的正整数
    int is_prime = 1; // 标记是否为质数,1=是质数,0=不是质数

    // 1. 输入一个正整数
    printf("请输入一个正整数:");
    scanf("%d", &num);

    // 2. 合法性校验(质数必须>1)
    if (num <= 1) {
        printf("%d 不是质数\n", num);
        return 0; // 直接结束程序
    }

    // 3. 核心判断:遍历2 到 num-1,检查是否能被整除
    for (i = 2; i < num; i++) {
        // 若能被整除 → 不是质数,直接跳出循环
        if (num % i == 0) {
            is_prime = 0;
            break;
        }
    }

    // 4. 根据标记输出结果
    if (is_prime == 1) {
        printf("%d 是质数\n", num);
    } else {
        printf("%d 不是质数\n", num);
    }

    return 0;
}

第5题:

05.png

#include <stdio.h>

// 计算长方形面积的函数(拼音命名)
float chang_fang_xing_mian_ji(float chang, float kuan) {
    return chang * kuan;
}

// 计算长方形周长的函数(拼音命名)
float chang_fang_xing_zhou_chang(float chang, float kuan) {
    return 2 * (chang + kuan);
}

int main() {
    float chang, kuan; // 定义长、宽变量(拼音命名)
    float mian_ji, zhou_chang; // 存储面积、周长的变量

    // 输入长和宽
    printf("请输入长方形的长:");
    scanf("%f", &chang);
    printf("请输入长方形的宽:");
    scanf("%f", &kuan);

    // 调用面积函数
    mian_ji = chang_fang_xing_mian_ji(chang, kuan);
    // 调用周长函数
    zhou_chang = chang_fang_xing_zhou_chang(chang, kuan);

    // 输出结果(保留2位小数)
    printf("长方形的面积为:%.2f\n", mian_ji);
    printf("长方形的周长为:%.2f\n", zhou_chang);

    return 0;
}

第6题

06.png

#include <stdio.h>
// 定义圆周率常量,取值3.14159(精度足够日常计算)
#define PI 3.14159

// 函数1:求圆的面积,函数名纯拼音 yuan_de_mian_ji
// 参数:ban_jing(半径),返回值:计算后的面积
float yuan_de_mian_ji(float ban_jing) {
    return PI * ban_jing * ban_jing; // 面积公式:π × 半径²
}

// 函数2:求圆的周长,函数名纯拼音 yuan_de_zhou_chang
// 参数:ban_jing(半径),返回值:计算后的周长
float yuan_de_zhou_chang(float ban_jing) {
    return 2 * PI * ban_jing; // 周长公式:2 × π × 半径
}

// 程序入口main函数:调用两个函数,完成整体逻辑
int main() {
    // 定义半径变量,拼音命名 ban_jing
    float ban_jing;
    // 定义接收结果的变量,拼音命名
    float mian_ji, zhou_chang;

    // 提示用户输入圆的半径(支持整数/小数)
    printf("请输入圆的半径:");
    scanf("%f", &ban_jing);

    // 合法性校验:半径不能为负数
    if (ban_jing < 0) {
        printf("输入错误!圆的半径不能为负数\n");
        return 0; // 终止程序
    }

    // 分别调用两个自定义函数,接收计算结果
    mian_ji = yuan_de_mian_ji(ban_jing);
    zhou_chang = yuan_de_zhou_chang(ban_jing);

    // 输出结果,保留2位小数,格式清晰
    printf("该圆的面积为:%.2f\n", mian_ji);
    printf("该圆的周长为:%.2f\n", zhou_chang);

    return 0;
}

第7题

07.png

#include <stdio.h>

int main() {
    // 定义包含10个成绩的数组(你可以根据需要修改具体数值)
    int score[10] = {85, 92, 78, 90, 88, 76, 95, 89, 81, 87};
    // 定义变量存储统计结果
    int i;
    int max_score;    // 最高分
    int min_score;    // 最低分
    int sum_score = 0;// 总成绩,初始化为0
    float avg_score;  // 平均分(用浮点型保证精度)

    // 初始化最高分和最低分为数组第一个元素
    max_score = score[0];
    min_score = score[0];

    // 遍历数组,计算总成绩、最高分、最低分
    for (i = 0; i < 10; i++) {
        // 累加计算总成绩
        sum_score += score[i];

        // 更新最高分:如果当前成绩大于当前最高分,则替换
        if (score[i] > max_score) {
            max_score = score[i];
        }

        // 更新最低分:如果当前成绩小于当前最低分,则替换
        if (score[i] < min_score) {
            min_score = score[i];
        }
    }

    // 计算平均分(总成绩除以人数,注意转换为浮点型避免整数除法)
    avg_score = (float)sum_score / 10;

    // 输出结果
    printf("成绩数组:");
    for (int i = 0; i < 10; i++) {
        printf("%d ", score[i]);
    }
    printf("\n");
    printf("最高分:%d\n", max_score);
    printf("最低分:%d\n", min_score);
    printf("总成绩:%d\n", sum_score);
    // 保留两位小数输出平均分,更符合实际使用场景
    printf("平均分:%.2f\n", avg_score);

    return 0;
}

第8题

08.png

#include <stdio.h>

int main() {
    // 1. 定义成绩数组 + 手动指定数组长度(替代sizeof,核心要求)
    int cj[] = {75, 82, 96, 68, 90, 55, 88};
    int changdu = 7;  // 数组有7个元素,直接写长度,不用sizeof
    
    // 2. 定义变量:输入的成绩、循环变量、位置标记(-1代表初始未找到)
    int cha_zhao_cj, i, wei_zhi = -1;
    
    // 3. 输入要查找的成绩
    printf("请输入要查找的成绩:");
    scanf("%d", &cha_zhao_cj);
    
    // 4. 遍历数组查找(核心逻辑)
    for(i = 0; i < changdu; i++) {
        if(cj[i] == cha_zhao_cj) { // 匹配到成绩
            wei_zhi = i; // 记录数组下标位置
            break;       // 找到立即退出循环,提升效率
        }
    }
    
    // 5. 输出结果:找到则显示位置,否则显示“没找到”
    if(wei_zhi != -1) {
        printf("成绩在数组的第%d个位置\n", wei_zhi + 1); // 按日常习惯从1开始计数
    } else {
        printf("没找到\n");
    }
    
    return 0;
}

C语言期末考点模拟题目汇总

一、单选题(10题)

  1. 题目:关于C语言中main函数,以下说法正确的是( )
    • A. main函数必须放在程序开头
    • B. 一个程序可以有多个main函数
    • C. main函数的位置可以任意,但只能有一个
    • D. main函数不能调用其他函数
    • 核心考点:C程序结构中main函数的位置规则与唯一性。
    • 注意事项:牢记main函数位置任意且程序仅有一个main函数。
  2. 题目:表达式z = 5 + 4 / 3的值为( )
    • A. 6
    • B. 5
    • C. 5.333333
    • D. 6.333333
    • 核心考点:整型运算中的整数除法规则,结果取整。
    • 注意事项:先计算4 / 3得1(取整),再与5相加。
  3. 题目:以下不属于C语言关键字的是( )
    • A. typedef
    • B. print
    • C. do
    • D. volatile
    • 核心考点:对C语言关键字的熟悉程度。
    • 注意事项:准确记忆关键字,print不是关键字,可能与printf混淆。
  4. 题目:数学表达式 - 5 <= x <= 5对应的C语言表达式是( )
    • A. (x >= - 5) && (x <= 5)
    • B. (x >= - 5) || (x <= 5)
    • C. - 5 <= x && x <= 5
    • D. - 5 <= x || x <= 5
    • 核心考点:分支表达式中逻辑运算符&&的使用,C语言需分开写条件并用&&连接。
    • 注意事项:不能按数学形式连写,&&表示逻辑与。
  5. 题目:下列符合C语言语法的表达式是( )
    • A. a = (b = 3) * (a = 2)
    • B. a = a + 3 = 7
    • C. x % = 3.5
    • D. y = int(x)
    • 核心考点:C语法规范,如赋值运算、%运算符和强制类型转换的规则。
    • 注意事项:赋值左边需为左值,%运算符两边为整型,强制类型转换格式为(类型)变量
  6. 题目:已知int a = 0, b = 1, c = 0;,则表达式(a++ || b++) && c++运算后,abc的值分别为( )
    • A. 1, 1, 0
    • B. 1, 2, 1
    • C. 0, 2, 1
    • D. 0, 1, 0
    • 核心考点:逻辑运算的短路求值规则,||&&的运算特点。
    • 注意事项||左边为真则右边不执行,&&左边为假则右边不执行。
  7. 题目:表达式'a' + 1.5 - 2的数据类型是( )
    • A. int
    • B. float
    • C. double
    • D. char
    • 核心考点:数据类型提升规则,字符与浮点型运算时的类型转换。
    • 注意事项:字符会转换为整型参与运算,最终结果类型为double(因有1.5)。
  8. 题目for (int i = 2; i < 8; i += 3)循环执行次数为( )
    • A. 2次
    • B. 3次
    • C. 4次
    • D. 5次
    • 核心考点for循环的条件判断与更新表达式的执行逻辑。
    • 注意事项:每次循环i按步长3增加,判断i < 8是否成立。
  9. 题目:对于数组int arr[5];,以下能正确表示数组第一个元素的是( )
    • A. arr + 1
    • B. &arr[0]
    • C. arr[1]
    • D. arr[0]
    • 核心考点:数组元素的表示方法,数组名与下标的关系。
    • 注意事项:数组下标从0开始,arr[0]表示第一个元素,arr + 1是第二个元素地址,&arr[0]是第一个元素地址。
  10. 题目:当数组名作为函数实参传递时,实际传递的是( )
    • A. 数组的第一个元素值
    • B. 数组的所有元素值
    • C. 数组的元素个数
    • D. 数组的首地址
    • 核心考点:函数参数传递中数组名传参的本质。
    • 注意事项:记住数组名传参传递的是首地址,不是元素值或个数。

二、程序补全题(5题)

  1. 题目:将输入的大写字母转换为小写字母(通过ASCII码转换)。
#include <stdio.h>
int main() {
    char ch;
    scanf("%c", &ch);
    // ① 补全判断条件,判断是否为大写字母
    if (____________________) {
        // ② 将大写字母转换为小写字母
        ch = ____________________;
    }
    printf("%c\n", ch);
    return 0;
}
- **核心考点**:字符运算中ASCII码的转换,大写字母与小写字母ASCII码的差值关系。
- **注意事项**:大写字母ASCII码范围及与小写字母差值为32,注意条件判断和转换公式。

2. 题目:输入学生成绩,统计其中的最高分和最低分,输入负数结束输入。

#include <stdio.h>
int main() {
    float score, max, min;
    scanf("%f", &score);
    max = score;
    min = score;
    while (____________________) {
        if (score > max) {
            max = score;
        }
        if (score < min) {
            min = score;
        }
        // ③ 继续输入成绩
        scanf("%f", &score);
    }
    printf("最高分: %.2f, 最低分: %.2f\n", max, min);
    return 0;
}
- **核心考点**:循环(`while`循环)与分支结构结合实现最值更新,循环条件控制。
- **注意事项**:设置正确的循环条件,保证能正确更新最值并持续输入成绩。

3. 题目:对有序数组进行折半查找。

#include <stdio.h>
int main() {
    int arr[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
    int target, left = 0, right = 9, mid;
    scanf("%d", &target);
    while (left <= right) {
        mid = (left + right) / 2;
        if (arr[mid] == target) {
            // ④ 找到目标,输出结果并结束循环
            printf("找到目标,下标为: %d\n", mid);
            ____________________;
        } else if (arr[mid] > target) {
            // ⑤ 调整右边界
            right = ____________________;
        } else {
            // ⑥ 调整左边界
            left = ____________________;
        }
    }
    if (left > right) {
        printf("未找到目标\n");
    }
    return 0;
}
- **核心考点**:数组操作与循环结合的折半查找逻辑,边界调整和循环终止条件。
- **注意事项**:理解折半查找原理,准确调整左右边界,设置好循环终止条件。

4. 题目:在数组中查找最大值和最小值。

#include <stdio.h>
int main() {
    int arr[8] = {5, 3, 9, 1, 7, 4, 6, 2};
    int max, min;
    // ⑦ 初始化最大值和最小值
    max = arr[0];
    min = arr[0];
    for (int i = 1; i < 8; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
        if (arr[i] < min) {
            min = arr[i];
        }
    }
    printf("最大值: %d, 最小值: %d\n", max, min);
    return 0;
}
- **核心考点**:数组遍历与循环实现最值查找,初始化和遍历过程中的比较逻辑。
- **注意事项**:通常先初始化最值为数组首元素,遍历中正确比较更新最值。

5. 题目:计算分段函数的值。

#include <stdio.h>
#include <math.h>
int main() {
    double x, y;
    scanf("%lf", &x);
    if (x < - 1) {
        y = 2 * x + 1;
    } else if (____________________) {
        y = x * x;
    } else {
        y = 3 * x - 2;
    }
    printf("y = %.2f\n", y);
    return 0;
}
- **核心考点**:分支结构(`if - else`多分支),根据不同条件计算函数值。
- **注意事项**:准确分析每个分支条件,避免遗漏或重复,注意条件顺序。

三、程序阅读题(2题)

  1. 题目:分析以下程序的输出结果。
#include <stdio.h>
int main() {
    int arr[6] = {1, 2, 3, 4, 5, 6};
    int sum = 0;
    for (int i = 1; i < 6; i += 2) {
        sum += arr[i];
    }
    printf("sum = %d\n", sum);
    return 0;
}
- **核心考点**:数组与循环结合的`for`循环遍历数组,对特定下标的元素进行累加。
- **注意事项**:关注循环变量与数组下标的关系,明确循环范围和累加的元素。

2. 题目:分析以下程序的输出结果。

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello\0World";
    printf("%d\n", strlen(str));
    return 0;
}
- **核心考点**:字符串处理中`strlen`函数对字符串结束符`\0`的识别规则。
- **注意事项**:`strlen`统计到`\0`结束且不包含`\0`本身。

四、基础概念题(2题)

  1. 题目:将二进制数1010转换为十进制数。
    • 核心考点:进制转换中按位权展开计算的方法。
    • 注意事项:从右到左依次用二进制位乘以2的相应幂次,幂次从0开始。
  2. 题目:已知数组int a[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};,求该数组第一维的大小。
    • 核心考点:根据元素总数和第二维大小计算二维数组第一维大小的方法。
    • 注意事项:元素总数除以第二维大小,若有余数则第一维大小需向上取整。

五、编程题(4题)

  1. 题目:编写程序计算分段函数。

000.png
从键盘输入x的值,输出对应的y值。
- 核心考点:分支结构(if - else)的运用,根据不同条件计算函数值。
- 注意事项:准确判断每个条件分支,注意条件边界,表达式书写准确。
2. 题目:统计200以内的所有孪生素数(相差为2的一对素数),并输出它们。
- 核心考点:循环结构(for循环)、条件判断以及素数的判断逻辑。
- 注意事项:掌握素数判断方法,通过循环遍历查找孪生素数,注意循环范围和判断逻辑。
3. 题目:在一个整型数组中查找某个特定元素,如果找到,输出该元素在数组中的下标;如果未找到,输出“Not Found”。数组元素通过键盘输入。
- 核心考点:数组的遍历、分支结构判断元素是否存在。
- 注意事项:清楚数组下标的范围,遍历数组时注意边界条件,判断元素存在与否的逻辑要清晰。
4. 题目:编写两个函数,一个用于计算三角形的面积,另一个用于计算三角形的周长。在主函数中输入三角形的三条边,当三条边能构成三角形时(任意两边之和大于第三边),调用这两个函数分别计算并输出面积和周长;否则提示“无法构成三角形”。
- 核心考点:函数的定义、声明与调用,参数传递,条件判断(三角形三边关系)以及基本数学运算的实现。
- 注意事项:函数定义时参数类型和返回值类型要明确,调用函数时参数传递要匹配,注意判断三边能否构成三角形以及数学公式的正确实现。

4

评论区