C语言指针与数组编程实例

138、编写一个程序,读取100名学生的成绩并显示每个成绩的出现频率。程序还应显示出现次数最多的成绩及其出现次数。考虑可能有多个成绩出现次数相同且最多的情况。程序应强制用户输入范围在[0, 10]内的成绩。假设成绩为整数。

以下是实现该功能的C语言代码:

#include <stdio.h>
#define STUDENTS 100

int main() {
    int grades[STUDENTS];
    int frequency[11] = {0}; // 用于存储每个成绩的频率,索引0 - 10对应成绩0 - 10
    int i, max_freq = 0;

    // 读取100名学生的成绩
    for (i = 0; i < STUDENTS; i++) {
        do {
            printf("请输入第 %d 个学生的成绩 (0 - 10): ", i + 1);
            scanf("%d", &grades[i]);
        } while (grades[i] < 0 || grades[i] > 10);

        // 统计每个成绩的频率
        frequency[grades[i]]++;
    }

    // 找出最大频率
    for (i = 0; i < 11; i++) {
        if (frequency[i] > max_freq) {
            max_freq = frequency[i];
        }
    }

    // 显示每个成绩的频率
    printf("每个成绩的频率:\n");
    for (i = 0; i < 11; i++) {
        printf("成绩 %d 出现的频率: %d\n", i, frequency[i]);
    }

    // 显示出现次数最多的成绩及其出现次数
    printf("出现次数最多的成绩及其出现次数:\n");
    for (i = 0; i < 11; i++) {
        if (frequency[i] == max_freq) {
            printf("成绩 %d 出现了 %d 次\n", i, frequency[i]);
        }
    }

    return 0;
}

这段代码首先读取100名学生的成绩,并确保成绩在[0, 10]范围内。然后统计每个成绩的出现频率,找出最大频率。最后显示每个成绩的频率以及出现次数最多的成绩及其出现次数。

139、编写一个程序,读取整数并将它们存储在一个方阵(例如 3×3)中。然后,程序应检查该数组是上三角矩阵、下三角矩阵还是两者皆是。如果一个方阵主对角线下方(上方)的所有元素都为零,则称其为上(下)三角矩阵。

以下是一个满足该需求的 C 语言程序示例:

#include <stdio.h>
#define SIZE 3

int main() {
    int arr[SIZE][SIZE];
    int i, j;
    int isUpper = 1, isLower = 1;

    // 读取整数并存储在方阵中
    for (i = 0; i < SIZE; i++) {
        for (j = 0; j < SIZE; j++) {
            printf("请输入 arr[%d][%d] 的值: ", i, j);
            scanf("%d", &arr[i][j]);
        }
    }

    // 检查是否为上三角矩阵
    for (i = 1; i < SIZE; i++) {
        for (j = 0; j < i; j++) {
            if (arr[i][j] != 0) {
                isUpper = 0;
                break;
            }
        }
    }

    // 检查是否为下三角矩阵
    for (i = 0; i < SIZE; i++) {
        for (j = i + 1; j < SIZE; j++) {
            if (arr[i][j] != 0) {
                isLower = 0;
                break;
            }
        }
    }

    // 输出结果
    if (isUpper && isLower) {
        printf("该矩阵既是上三角矩阵也是下三角矩阵。\n");
    } else if (isUpper) {
        printf("该矩阵是上三角矩阵。\n");
    } else if (isLower) {
        printf("该矩阵是下三角矩阵。\n");
    } else {
        printf("该矩阵既不是上三角矩阵也不是下三角矩阵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值