解题思路:可以定义一个结构体存储各个分数 然后是对一个结构体组的简单排序问题
注意事项:添加函数 增加代码简洁与可读性.
参考代码:
#include<iostream>
using namespace std;
struct xuesheng //定义结构体
{
int xuehao;
int yuwen;
int shuxue;
int yingyu;
int zongfen;
};
void shuru(xuesheng xueshengs[],int &n); //1 输入数据
void shuchu(xuesheng xueshengs[]); //3 输出数据
void paixu(xuesheng xueshengs[],int n); //2 数组排序
bool ishuan(xuesheng m,xuesheng n); //2.1判断是否交换
void huan(xuesheng &m,xuesheng &n); //2.2交换
int main()
{
xuesheng xueshengs[300]= {0};
int n;
shuru(xueshengs,n);
paixu(xueshengs,n);
shuchu(xueshengs);
return 0;
}
void shuru(xuesheng xueshengs[],int &n)
{
cin>>n;
for(int i=0; i<n; i++)
{
cin>>xueshengs[i].yuwen>>xueshengs[i].shuxue>>xueshengs[i].yingyu;
xueshengs[i].zongfen=xueshengs[i].yuwen+xueshengs[i].shuxue+xueshengs[i].yingyu;
xueshengs[i].xuehao=i+1;
}
}
void shuchu(xuesheng xueshengs[])
{
for(int i=0; i<5; i++)
{
cout<<xueshengs[i].xuehao<<' '<<xueshengs[i].zongfen<<endl;
}
}
bool ishuan(xuesheng m,xuesheng n)
{
if(m.zongfen<n.zongfen)
{
return true;
}
if(m.zongfen==n.zongfen && m.yuwen<n.yuwen)
{
return true;
}
if(m.zongfen==n.zongfen && m.yuwen==n.yuwen && m.xuehao>n.xuehao)
{
return true;
}
return false;
}
void huan(xuesheng &m,xuesheng &n)
{
xuesheng t;
t=m;
m=n;
n=t;
}
void paixu(xuesheng xueshengs[],int n)
{
for(int i=0; i<n; i++)
{
for(int j=i; j<n; j++)
{
if(ishuan(xueshengs[i],xueshengs[j]))
{
huan(xueshengs[i],xueshengs[j]);
}
}
}
}
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:532 |
【数组的距离】 (C语言代码)浏览:636 |
Tom数 (C++代码)浏览:868 |
C二级辅导-进制转换 (C语言代码)浏览:657 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:553 |
数组输出 (C语言代码)错误???浏览:602 |
C语言训练-数字母 (C语言代码)浏览:670 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:674 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:964 |
哥德巴赫曾猜测 (C语言代码)浏览:2561 |