您的位置:首页 > 编程语言 > C语言/C++

结构体数组,平均成绩,指针的三种表示方法

2015-10-31 10:54 363 查看
一个结构体数组中存放有若干学生的信息,每个学生有若干门课程的成绩,计算每个学生的平均成绩,并根据平均成绩由高到低的顺序输出每个学生的学号、姓名、和平均成绩(下面的代码里面用指针的三种表示方法实现输出);

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 string 指针 结构