跳至主要內容

函数

酷丁大约 2 分钟

判断整型是否为素数

#include <stdio.h>
#include <stdbool.h>

// 简化的判断是否为素数的函数
bool is_prime(int num) {
    if (num <= 1) return false;
    for (int i = 2; i < num; i++) {
        if (num % i == 0) return false;
    }
    return true;
}

int main() {
    int upper_limit;
    
    // 用户输入
    printf("请输入一个大于4的数: ");
    scanf("%d", &upper_limit);
    
    if (upper_limit <= 4) {
        printf("请输入大于4的数。\n");
        return 1;
    }
    
    // 寻找并输出素数对
    for (int i = 2; i <= upper_limit - 2; i++) {
        if (is_prime(i) && is_prime(i + 2)) {
            printf("(%d, %d)\n", i, i + 2);
        }
    }
    
    return 0;
}

计算成绩

  1. 输入 10 个学生的成绩,分别用函数实现:
    1. 求平均成绩;
    2. 求超过平均成绩的人数;
    3. 按分数高低进行排序。
#include <stdio.h>

// 计算平均成绩
float calculate_average(int scores[], int num_students) {
    int sum = 0;
    for (int i = 0; i < num_students; i++) {
        sum += scores[i];
    }
    return (float)sum / num_students;
}

// 计算超过平均分的人数
int count_above_average(int scores[], int num_students, float average) {
    int count = 0;
    for (int i = 0; i < num_students; i++) {
        if (scores[i] > average) {
            count++;
        }
    }
    return count;
}

// 排序函数(使用冒泡排序)
void sort_scores(int scores[], int num_students) {
    for (int i = 0; i < num_students - 1; i++) {
        for (int j = 0; j < num_students - 1 - i; j++) {
            if (scores[j] < scores[j + 1]) {  // 降序排列
                int temp = scores[j];
                scores[j] = scores[j + 1];
                scores[j + 1] = temp;
            }
        }
    }
}


int main() {
    int num_students = 10;
    int scores[10];  //  存储10个学生的成绩

    printf("请输入10个学生的成绩:\n");
    for (int i = 0; i < num_students; i++) {
        scanf("%d", &scores[i]);
    }

    float average = calculate_average(scores, num_students);
    int above_average_count = count_above_average(scores, num_students, average);
    sort_scores(scores, num_students);

    printf("平均成绩:%.2f\n", average); // .2f 控制输出两位小数
    printf("超过平均分的人数:%d\n", above_average_count);
    printf("排序后的成绩:");
    for (int i = 0; i < num_students; i++) {
        printf("%d ", scores[i]);
    }
    printf("\n");


    return 0;
}

解释:

  1. calculate_average 函数: 计算数组 scores 中所有数的平均值。num_students 表示学生人数,也就是数组的大小。
  2. count_above_average 函数: 统计 scores 数组中大于 average 的元素个数。
  3. sort_scores 函数:使用冒泡排序算法对 scores 数组进行降序排序。
  4. main 函数:程序入口。
    • 首先,声明一个大小为 10 的整型数组 scores 用于存储学生成绩。
    • 使用循环提示用户输入 10 个学生的成绩,并将成绩存储到数组中。
    • 调用 calculate_average 函数计算平均成绩。
    • 调用 count_above_average 函数计算超过平均成绩的人数。
    • 调用 sort_scores 函数对成绩进行排序。
    • 最后,打印平均成绩、超过平均分的人数和排序后的成绩。

编译运行这个程序,输入10个学生的成绩后,程序会输出平均成绩,超过平均分的人数,以及按从高到低排序后的成绩。