/*
物件排序
某班有30名同學,每名同學的資訊包括:學號、姓名、年齡、總成績,
編程輸入這些同學的基本資訊,并按總成績從高到低進行排名輸出,
如成績相同,則按年齡從小到大排列
*/
#include<iostream>
using namespace std;
class Student
{
public:
int number;
char name[1024];
int grade;
int id;
int age;
};
int main(){
struct Student student[3];
int sum=0;
int a[3];
int b[3];
for(int i=0;i<3;i++){
student[i].number=i+1;
cout<<"輸入第"<<i+1<<"個學生的學號:";
cin>>student[i].id;
cout<<"輸入第"<<i+1<<"個學生的姓名:";
cin>>student[i].name;
cout<<"輸入第"<<i+1<<"個學生的年齡:";
cin>>student[i].age;
cout<<"輸入第"<<i+1<<"個學生的總成績:";
cin>>student[i].grade;
sum+=student[i].grade;
a[i]=student[i].grade;
b[i]=student[i].age;
cout<<endl;
}
for(int i=0;i<3;i++)
{
for(int j=i+1;j<3;j++)
{
if(a[j]<a[i])
{
int temp1=a[i];
a[i]=a[j];
a[j]=temp1;
}
else if(a[j]==a[i])
{
if(b[j]<b[i])
{
int temp2=a[i];
a[i]=a[j];
a[j]=temp2;
}
}
}
for(int k=0;k<3;k++)
{
if(student[k].grade==a[i])
{
cout<<student[k].id<<"\t"<<student[k].name<<"\t"<<student[k].age<<"\t"<<student[k].grade<<endl;
break;
}
continue;
}
}
}
這個要怎么改才能實作在成績一樣的情況下按照年齡排序,我現在這個會使年齡相同的兩個人輸出一樣的資料。
uj5u.com熱心網友回復:
去掉陣列a和b,直接拿student陣列進行比較和交換轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/87303.html
標籤:基礎類
下一篇:資料結構緊急求解決
