| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1992 人关注过本帖
标题:平均成绩排序 请大神帮忙看看那里错了
取消只看楼主 加入收藏
哈罗德的路
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-4-28
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:1 
平均成绩排序 请大神帮忙看看那里错了
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的 结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果 平均分相同,按输入的先后顺序排列。输入样例:在这里给出一组输入。例如:
3
101 Zhang 78 87 85
102 Wang 91 88 90
103 Li 75 90 84
输出样例:在这里给出相应的输出。例如:
102 Wang 89.67
101 Zhang 83.33
103 Li 83.00


代码:
#include "stdio.h"
struct Student
{
    int num;
    char name[20];
    int score[3];
    float aver;
};
struct Student stud[50];//定义结构体数组
void average (struct Student stud[],int n)
{
    int i,j,c[20];
    float sum=0;
    for(i=0;i<n;i++)
    {
        scanf("%d%s",&stud[i].num,stud[i].name);
        for(j=0;j<3;j++)
            scanf("%d",&stud[i].score[j]);
        sum=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];
        stud[i].aver=sum/3;   
    }
}
void sort(struct Student stud[],int n)//定义函数的括号内用结构体变量,不能用成员名
{
    struct Student temp;//定义中间变量,使排序后的成绩所在的变量(包含姓名,学号)整体,在交换位置时全部交换
    int i,j,k;
    average(stud,n);
    for(i=0;i<n-1;i++)//冒泡法
    {        
        for(j=0;j<n-i-1;j++)
            k=j+1;
            if(stud[j].aver<stud[k].aver)
                k=j;
        if(k!=i)//将排序后的成绩所在的变量(包含姓名,学号)整体,进行全部交换  
        {
            temp=stud[k];
            stud[k]=stud[i];
            stud[i]=temp;
        }
    }        
}

int main()
{
    int n,i;
    scanf("%d",&n);            
    sort(stud,n);
    for(i=0;i<n;i++)
    {
        printf("%d %s %.2f\n",stud[i].num,stud[i].name,stud[i].aver);
    }
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: struct score int Student 成绩 
2020-05-09 23:19
哈罗德的路
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-4-28
收藏
得分:0 
回复 3楼 纯蓝之刃
谢谢👍👍
2020-05-10 23:01
快速回复:平均成绩排序 请大神帮忙看看那里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012391 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved