道非天


私信TA

用户名:530863157

访问量:342

签 名:

我宁愿做错,也不愿什么都不做。

等  级
排  名 27535
经  验 490
参赛次数 1
文章发表 2
年  龄 18
在职情况 学生
学  校 HUAS
专  业 软件工程

  自我简介:

解题思路:由题意可知,利用结构体分别定义学号,姓名,三科成绩;再分别计算各科成绩的平均分;再计算总分,通过计算总分,得知最高分为哪一个,再输出那一个的各种信息。

注意事项:学号有数字和字母,应该定义为数组。

参考代码:

#include

struct student        //声明结构体各部分信息

{

    char temp[10];     //学号

    char name[20];     //姓名

    int a;             //学科a

    int b;             //学科b

    int c;             //学科c

};

int main()

{

    struct student t[99];//定义结构体

    int n,i;int sum,o,k,p,q;int a[100];

    sum=0;

    scanf("%d",&n); //输入有多少个学生

    for(i=0;i<n;i++)

    {

        scanf("%s %s %d %d %d",&t[i].temp,&t[i].name,&t[i].a,&t[i].b,&t[i].c);

    } //利用循环分别输入各个学生的信息

    for(i=0;i<n;i++)

    {

        sum+=t[i].a;

    }

    o=sum/n;  //计算学科a的平均分

    sum=0;    //令sum重置为0,不然会有叠加,下同。

    for(i=0;i<n;i++)

    {

        sum+=t[i].b;

    }

    p=sum/n;//计算学科b的平均分

    sum=0;

    for(i=0;i<n;i++)

    {

        sum+=t[i].c;

    }

    q=sum/n;//计算学科c的平均分,到这sum重不重置无所谓,下面用不到sum

    for(i=0;i<n;i++)

    {

        a[i]=t[i].a+t[i].b+t[i].c; //令每个学生的总成绩为a数组里的某个元素

    }

    for(i=0;i<n-1;i++)//注意这里是比较n-1次

    {

        if(a[i+1]>a[i])//循环比较每个学生的总成绩

        {

            k=i+1; //得出总成绩最高的那个学生的序号

        }

        else

        {

            k=i;

        }

    }

    printf("%d %d %d\n",o,p,q);//输出平均分,以及最高分学生的学号,姓名,三科成绩

    printf("%s %s %d %d %d",t[k].temp,t[k].name,t[k].a,t[k].b,t[k].c);

    return 0;

}


 

0.0分

1 人评分

  评论区