結構體陣列,平均成績,指標的三種表示方法
阿新 • • 發佈:2019-02-10
一個結構體陣列中存放有若干學生的資訊,每個學生有若干門課程的成績,計算每個學生的平均成績,並根據平均成績由高到低的順序輸出每個學生的學號、姓名、和平均成績(下面的程式碼裡面用指標的三種表示方法實現輸出);
#include <iostream>
using namespace std;
#include <string>
struct student{
string num;
string name;
int score[3];
double avg;
};
int main()
{
student stu[5]={ {"2011001" ,"zhao",{78,65,89}},
{"2011002","qian",{76,91,62}},
{"2011003","sun",{85,79,92}},
{"2011004","li",{93,61,72}},
{"2011005","zhou",{92,75,98}}
};
for (int i = 0; i < 5; i++)
{
int sum=0,num=0;
for (int j = 0; j < 3; j++)
{
sum+=stu[i].score[j];
num++;
}
stu[i].avg=sum/num;
}
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (stu[j].avg<stu[j+1].avg)
{
student temp;
temp=stu[j];
stu[j]=stu[j+1 ];
stu[j+1]=temp;
}
}
}
student *p;
p=stu;
cout<<"學號\t姓名\t平均成績"<<endl;
for (int i = 0; i <5; i++)
{
cout<<(*(p+i)).num<<"\t";
cout<<(*(p+i)).name<<"\t";
cout<<(*(p+i)).avg<<"\t"<<endl;
}
cout<<endl<<"學號\t姓名\t平均成績"<<endl;
for (int i = 0; i <5; i++)
{
cout<<(p+i)->num<<"\t";
cout<<(p+i)->name<<"\t";
cout<<(p+i)->avg<<"\t"<<endl;
}
cout<<endl<<"學號\t姓名\t平均成績"<<endl;
for (int i = 0; i <5; i++)
{
cout<<p[i].num<<"\t";
cout<<p[i].name<<"\t";
cout<<p[i].avg<<"\t"<<endl;
}
getchar();
getchar();
return 0;
}