职业养老选手 2022-06-17 18:21 采纳率: 100%
浏览 52
已结题

结构体设计(计算、查找)

要求:
输入学生各科成绩,分别设计函数来计算学生各科的平均成绩、各科全部学生的平均成绩、查找学生成绩,然后对成绩进行输出。
希望有小伙伴可以帮忙看一下代码有没有什么错误,以及求问“各科全部学生的平均成绩”这一块的函数怎么写啊?
#include<stdio.h>
#include<string.h>
struct students_list{
char name[20];
int Math[50];
Int English[50];
Int Science[50];
};
void student_average(struct students_list students[ ],intneme);
void subject_average(struct students_list students[ ],int
subject);
void search_student(struct students_list students[ ],char*name);
int Count=0;

int main(void)
{
int choice,i;
char name[20];
char subject[10];
struct students_list students[50];
for(i=1;;i++){
printf("请依次输入学生姓名、数学成绩、英语成绩、科学成绩:");
scanf("%s %d3(不知道为什么不能连着输入三个d)",&students[i].name,&students[i].Math, &students[i].English, &students[i].Science);
Count++;
}
do{
printf("学生成绩功能选项:1:计算学生平均分 2:计算课程平均分 3:查询学生成绩 0:退出并输出成绩\n");
printf("请选择功能:"); scanf("%d", &choice);
switch(choice){
case 1:
printf("请输入要查找的学生姓名:");
scanf("%s", name);
student_average(students,name);
break;
case 2:
printf("请输入要查找的课程:");
scanf("%s", subject);
subject_average(students,subject);
break;
case 3:
printf("请输入要查找的学生姓名:");
scanf("%s", name);
search_student(students, name);
break;
case 0: break;
}
}while(choice != 0);
for(i=1;i<Count;i++){
printf("%s: %d
3(不知道为什么不能连着输入三个d)",students[i].name,students[i].Math, students[i].English, students[i].Science);
}
return 0;
}
/学生平均分/
void student_average(struct students_list students[ ],intneme)
{
int i,flag = 0;
double average;
if(Count == 0){
printf("成绩单是空的!\n");
return;
}
for(i = 0; i <=Count; i++)
if(strcmp(name, friends[i].name) == 0){ /
找到学生*/
flag=1; break;
}
if(flag){
average=(students[i].Math+students[i].English+students[i].Science)/3.0
printf(“student_average:%lf\n”,average);
}
else
printf("无此学生!");
}
/查询学生成绩/
void search_student(struct students_list students[ ],char*name)
{ int i, flag = 0;
if(Count == 0){
printf("成绩单是空的!\n");
return;
}
for(i = 0; i < =Count; i++)
if(strcmp(name, friends[i].name) == 0){
flag=1; break;
}
if(flag){
printf("Math: %d\n", students[i].Math);
printf("English: %d\n", students[i].English);
printf("Science: %d\n", students[i].Science);
}
else
printf("无此学生!");
}

  • 写回答

3条回答 默认 最新

  • 天际的海浪 2022-06-17 20:01
    关注

    你题目的解答代码如下:

    #include <stdio.h>
    #include <string.h>
    struct students_list
    {
        char name[20];
        int Math; //不要用数组
        int English;  //int是全小写
        int Science;
    };
    void student_average(struct students_list students[], char *neme);
    void subject_average(struct students_list students[], char *subject);
    void search_student(struct students_list students[], char *name);
    int Count = 0;
    
    int main(void)
    {
        int choice, i;
        char name[20];
        char subject[10];
        struct students_list students[50];
        printf("输入学生人数:");
        scanf("%d", &Count);
        for (i = 0;i < Count; i++)
        {
            printf("请依次输入学生姓名、数学成绩、英语成绩、科学成绩:");
            scanf("%s %d %d %d", students[i].name, &students[i].Math, &students[i].English, &students[i].Science);
        }
        do
        {
            printf("学生成绩功能选项:1:计算学生平均分 2:计算课程平均分 3:查询学生成绩 0:退出并输出成绩\n");
            printf("请选择功能:");
            scanf("%d", &choice);
            switch (choice)
            {
            case 1:
                printf("请输入要查找的学生姓名:");
                scanf("%s", name);
                student_average(students, name);
                break;
            case 2:
                printf("请输入要查找的课程:");
                scanf("%s", subject);
                subject_average(students, subject);
                break;
            case 3:
                printf("请输入要查找的学生姓名:");
                scanf("%s", name);
                search_student(students, name);
                break;
            case 0:
                break;
            }
        } while (choice != 0);
        for (i = 0; i < Count; i++)
        {
            printf("%s: %d %d %d\n", students[i].name, students[i].Math, students[i].English, students[i].Science);
        }
        return 0;
    }
    /* 学生平均分 */
    void student_average(struct students_list students[], char *name)
    {
        int i, flag = 0;
        double average;
        if (Count == 0)
        {
            printf("成绩单是空的!\n");
            return;
        }
        for (i = 0; i < Count; i++)
            if (strcmp(name, students[i].name) == 0)
            {
                /* 找到学生 */
                    flag = 1;
                break;
            }
        if (flag)
        {
            average = (students[i].Math + students[i].English + students[i].Science) / 3.0;
            printf("student_average: %lf\n", average);
        }
        else
            printf("无此学生!");
    }
    /* 查询学生成绩 */
        void search_student(struct students_list students[], char *name)
    {
        int i, flag = 0;
        if (Count == 0)
        {
            printf("成绩单是空的!\n");
            return;
        }
        for (i = 0; i < Count; i++)
            if (strcmp(name, students[i].name) == 0)
            {
                flag = 1;
                break;
            }
        if (flag)
        {
            printf("Math: %d\n", students[i].Math);
            printf("English: %d\n", students[i].English);
            printf("Science: %d\n", students[i].Science);
        }
        else
            printf("无此学生!");
    }
    void subject_average(struct students_list students[], char *subject)
    {
        int i;
        double average, sum=0;
        if (Count == 0)
        {
            printf("成绩单是空的!\n");
            return;
        }
        for (i = 0; i < Count; i++)
        {
            if (strcmp(subject, "Math") == 0)
            {
                sum += students[i].Math;
            }
            else if (strcmp(subject, "English") == 0)
            {
                sum += students[i].English;
            }
            else if (strcmp(subject, "Science") == 0)
            {
                sum += students[i].Science;
            }
        }
        average = sum/Count;
        printf("%s average: %lf\n", subject, average);
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月26日
  • 已采纳回答 6月18日
  • 赞助了问题酬金10元 6月17日
  • 创建了问题 6月17日