1. 程式人生 > >結構體陣列,平均成績,指標的三種表示方法

結構體陣列,平均成績,指標的三種表示方法

一個結構體陣列中存放有若干學生的資訊,每個學生有若干門課程的成績,計算每個學生的平均成績,並根據平均成績由高到低的順序輸出每個學生的學號、姓名、和平均成績(下面的程式碼裡面用指標的三種表示方法實現輸出);

#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; }