c语言编程,求大神帮忙

2025-04-14 12:10:37
推荐回答(4个)
回答1:

#include 

struct Student
{
    char name[10];
    float courses[5];
};

float avg_student_score(Student stu)
{
    int i;
    float sum = 0;
    for (i = 0; i < 5; ++i)
        sum += stu.courses[i];
    return sum/5;
}

float avg_course_score(Student stu[], int n, int k)
{
    int i;
    float sum = 0;
    for (i = 0; i < n; ++i)
        sum += stu[i].courses[k];
    return sum/n;
}

float max_course_score(Student stu[], int n, int k)
{
    int i;
    float max = 0;
    for (i = 0; i < n; ++i)
        if (max < stu[i].courses[k])
            max = stu[i].courses[k];
    return max;
}

float min_course_score(Student stu[], int n, int k)
{
    int i;
    float min = 0;
    for (i = 0; i < n; ++i)
        if (min > stu[i].courses[k])
            min = stu[i].courses[k];
    return min;
}

bool isFailed(Student stu, int k)
{
    if (stu.courses[k] < 60)
        return false;
    return true;
}

int main()
{
    int i, j;
    Student stu[20];
    printf("请输入学生的姓名和成绩:\n");
    for (i = 0; i < 20; ++i)
    {
        printf("%d. ", i + 1);
        scanf("%s", stu[i].name);
        for (j = 0; j < 20; ++j)
            scanf("%f", &stu[i].courses[j]);
    }
    printf("1. 输出每个学生的平均成绩\n");
    printf("2. 输出每门课程的平均成绩\n");
    printf("3. 输出每门课程的最高分和最低分\n");
    printf("4. 输出有不及格课程的学生姓名\n");
    fflush(stdin);

    switch (getchar())
    {
    case '1':
        for (i = 0; i < 20; ++i)
            printf("%s\t%.2f\n", stu[i].name, avg_student_score(stu[i]));
        break;
    case '2':
        for (j = 0; j < 5; ++j)
            printf("%d. %.2f ", j + 1, avg_course_score(stu, 20, j));
        printf("\n");
        break;
    case '3':
        for (j = 0; j < 5; ++j)
            printf("%d. %.2f %.2f\n", j + 1, max_course_score(stu, 20, j));
        break;
    case '4':
        for (i = 0; i < 20; ++i)
            for (j = 0; j < 5; ++j)
            {
                if (isFailed(stu[i], j))
                    printf("%s ", stu[i].name);
                break;
            }
        break;
    }
    return 0;
}

回答2:

用结构体数组来做。
首先定义一个结构体:
struct student
{
char name[20];
float E ;
float C#;
float C++ ;
float C;
float java;
}stu[20];
然后利用循环对其赋值;
for(int i=0;i<20;i++)
{
scanf(“%s%f%f%f%f%f”,&stu[i].name[20],&stu[i].E,&stu[i].C#........);
}
然后利用循环求值:
例如求每个学生的总成绩:
先写个函数,

void perStuScore(strcut student s)
{
float sum=s.E+s.C#+s.C+++s.C+s.java;
printf("%f",sum);

}
for(int i=0;i<20;i++)
{
perStuScore(stu[i]);
}
OK剩下 的估计也没什么难度,再接再励相信你可以解决的

回答3:

问题是什么都没有说

回答4:

楼下,上。。。。。。。。。。。。。。。。。。。。。。。