哈嘍大家好,我是@學霸小羊,今天講講結構體。
先看例題:
例1.老師給了小楊一份同學們的考試成績,包括語數英三科,老師讓小明按照總分排序,請你幫幫他吧!
輸入數據:
第1行 學生總人數n(n<=1000)
第2~n+1行 每行包括3個數據 分別代表 這位同學的 語數英成績(成績<=100)
輸出數據:
輸出排序后同學們的語、數、英成績
輸入樣例1:
5
89 78 100
97 90 93
78 89 67
34 78 90
90 99 100
輸出樣例1:
90 99 100
97 90 93
89 78 100
78 89 67
34 78 90
首先我第一時間想到的,是定義多個數組,代碼打出來后,發現太復雜了!
最大的原因是不能用 sort() 排序!
#include <bits/stdc++.h>
using namespace std;
long long n,yu[1001],shu[1001],ying[1001],zonghe[1001];
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>yu[i]>>shu[i]>>ying[i];zonghe[i]=yu[i]+shu[i]+ying[i];}for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(zonghe[i]<zonghe[j]) {swap(zonghe[i],zonghe[j]);swap(yu[i],yu[j]);swap(shu[i],shu[j]);swap(ying[i],ying[j]);}}}for(int i=1;i<=n;i++){cout<<yu[i]<<" "<<shu[i]<<" "<<ying[i]<<"\n";}return 0;
}
你也看到了吧,嘩啦啦一大串,于是我找老師學習了一下,老師說用結構體。
結構體(struct)是由一系列具有相同類型或不同類型的數據構成的數據集合,就像char、int那些一樣,只不過,這個數據類型可以自己定義包含什么,包含的變量被稱為成員。
定義一個結構體,如下:
struct stu
{數據類型 成員名1;數據類型 成員名2;數據類型 成員名3;······
}?
例如:
struct stu
{int n;//定義這個結構體的成員n
};?
那么這題,就可以定義一個這樣的結構體:
struct stu
{int yu,shu,ying,zonghe;
}a[1001];
為什么用結構體呢?因為結構體可以快排!
#include <bits/stdc++.h>
using namespace std;
struct stu
{int yu,shu,ying,zonghe;
}a[1001];
bool cmp(stu x,stu y)
{return x.zonghe>y.zonghe;
}
long long n;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i].yu>>a[i].shu>>a[i].ying;a[i].zonghe=a[i].yu+a[i].shu+a[i].ying;}sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++){cout<<a[i].yu<<" "<<a[i].shu<<" "<<a[i].ying<<"\n";}return 0;
}
好啦!今天就講到這里,拜拜!