构造一维动态数组,实现输入某班学生的某门课成绩,计算并输出其平均分。学生人数
由键盘输入。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int numStudents;
    printf("输入学生人数: ");
    scanf("%d", &numStudents);

    int* scores = malloc(numStudents * sizeof(int));

    int sum = 0;
    for (int i = 0; i < numStudents; ++i) {
        printf("输入学生的分数 %d: ", i+1);
        scanf("%d", &scores[i]);
        sum += scores[i];
    }

    double avgScore = (double) sum / numStudents;
    printf("平均分是: %f\n", avgScore);

    free(scores);
    return 0;
}

2023年4月6日_给朋友做题目_字符串

构造二维动态数组,实现输入m个班级(每班n个学生)某门课成绩,计算并输出平均分。班级数和学生人数由键盘输入。

#include <stdio.h>
#include <stdlib.h>
int main() {
    int numClasses, numStudents;
    printf("输入班级数量: ");
    scanf("%d", &numClasses);
    printf("输入每个班级的人数: ");
    scanf("%d", &numStudents);
    // 为二维数组分配内存
    int** scores = (int**) malloc(numClasses * sizeof(int*));
    for (int i = 0; i < numClasses; ++i) {
        scores[i] = (int*) malloc(numStudents * sizeof(int));
    }
    // 输入每个班级中每个学生的分数
    for (int i = 0; i < numClasses; ++i) {
        printf("班级输入分数 %d:\n", i+1);
        for (int j = 0; j < numStudents; ++j) {
            printf("学生成绩 %d: ", j+1);
            scanf("%d", &scores[i][j]);
        }
    }
    // 计算每个班级的平均分数
    for (int i = 0; i < numClasses; ++i) {
        int sum = 0;
        for (int j = 0; j < numStudents; ++j) {
            sum += scores[i][j];
        }
        double avgScore = (double) sum / numStudents;
        printf("班平均分是 %d is: %f\n", i+1, avgScore);
    }
    // Free allocated memory
    for (int i = 0; i < numClasses; i++) {
        free(scores[i]);
    }
    free(scores);
    return 0;
}

用动态数组编程实现输入任意m 个班级学生(每班n个学生》的某门课成绩,计算最高分,并指出具有最高分成绩的学生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和n的上限值)。

#include <stdio.h>
#include <stdlib.h>
int main() {
    int m, n;
    printf("请输入班级数 m: ");
    scanf("%d", &m);
    printf("请输入每个班级的学生人数 n: ");
    scanf("%d", &n);
    // 动态分配二维数组
    int** scores = (int**) malloc(m * sizeof(int*));
    for (int i = 0; i < m; ++i) {
        scores[i] = (int*) malloc(n * sizeof(int));
    }
    // 输入成绩并寻找最高分
    int maxScore = 0;
    int maxScoreClass = 0;
    int maxScoreStudent = 0;
    for (int i = 0; i < m; ++i) {
        printf("请输入第 %d 个班级的成绩:\n", i+1);
        for (int j = 0; j < n; ++j) {
            printf("请输入第 %d 个学生的成绩:", j+1);
            scanf("%d", &scores[i][j]);
            // 更新最高分信息
            if (scores[i][j] > maxScore) {
                maxScore = scores[i][j];
                maxScoreClass = i + 1;
                maxScoreStudent = j + 1;
            }
        }
    }

    printf("最高分为 %d,此分数是第 %d 个班级的第 %d 个学生的成绩。\n", maxScore, maxScoreClass, maxScoreStudent);

    // 释放动态分配的数组内存
    for (int i = 0; i < m; ++i) {
        free(scores[i]);
    }
    free(scores);
    return 0;
}

从键盘任意输入一个整型表示的月份值,用指针数组变成输出该月份的英文表示,若输入的月份值不在1-12之间,则输出“Illegal month"。
提示:定义一个指针数组存放月份的英文表示,然后输出相应月份。

#include <stdio.h>
#include <stdlib.h>
int main() {
    char* months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    int month;
    printf("请输入一个月份值(1-12):");
    scanf("%d", &month);
    // 检查月份值是否合法
    if (month < 1 || month > 12) {
        printf("Illegal month\n");
        return 0;
    }
    // 输出月份的英文表示
    printf("%s\n", months[month-1]);
    return 0;
}

计算最长的字符串长度∶输入n (n<10)个字符串,输出其中最长字符串的有效长度。
要求自定义函数int max len ( char *s[ ],int n),用于计算有n个元素的指针数组s中最长的字符串的长度。试编写相应程序。

#include <stdio.h>
#include <string.h>
// 自定义函数用于计算有n个元素的指针数组中最长的字符串的长度
int max_len(char *s[], int n) {
    int max_len = 0;
    for (int i = 0; i < n; ++i) {
        int len = strlen(s[i]);
        if (len > max_len) {
            max_len = len;
        }
    }
    return max_len;
}
int main() {
    char* strs[10];  // 存储n个字符串的指针数组
    int n;
    printf("请输入字符串的个数n(n<10):");
    scanf("%d", &n);
    // 输入n个字符串并将其存入指针数组中
    for (int i = 0; i < n; ++i) {
        char* str = (char*) malloc(100 * sizeof(char));  // 为每个字符串分配100个字符的内存
        printf("请输入第%d个字符串:", i+1);
        scanf("%s", str);
        strs[i] = str;
    }
    int max_len_str = max_len(strs, n);
    printf("最长字符串的有效长度为:%d\n", max_len_str);
    // 释放动态分配的字符串内存
    for (int i = 0; i < n; ++i) {
        free(strs[i]);
    }
    return 0;
}