标题:求一程序解法
只看楼主
machun2007
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-9-21
结帖率:100%
 问题点数:0 回复次数:1 
求一程序解法
#include <iostream.h>
struct STUDENT
{
char name[8];
char id[10];
int  score[3];
double  ave;
};
STUDENT inputdata()
{
STUDENT stu;
cout < <"姓名:";
cin>>stu.name;
cout < <"学号:";
cin>>stu.id;
int averesult=0;
cout < <"三门成绩:";
cin>>stu.score[0]>>stu.score[1]>>stu.score[2];
return stu;
}
void calaverage(STUDENT *data,int nnum)
{
    for(int i=0;i <nnum;i++)
data[i].ave=(data[i].score[0]+data[i].score[1]+data[i].score[2])/3.0;
}
void printdata(STUDENT *data,int nnum)
{
cout < <"\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
for(int i=0;i <nnum;i++)
{
cout < <data[i].id < <"\t" < <data[i].name;
for(int j=0;j <3;j++)
cout < <"\t" < <data[i].score[j];
cout < <"\t" < <data[i].ave < <endl;
}
}
void main()
{
const int stunum=5;
STUDENT stu[stunum];
for(int i=0;i <stunum;i++)
{
cout < <"输入第" < <i+1 < <"个学生信息\n";
stu[i]=inputdata();
}
calaverage(stu,stunum);
printdata(stu,stunum);  
}
程序:有5个学生,每个学生的数据结构包括学号,姓名,年龄,以及任意3门成绩,每个学生的平均分.
问题:若学生人数不定,且用一个函数对学生数据按平均分的高低排序并输出(从高到低),则函数应该怎样修改.
想不出来了 帮下哈~~~~谢谢!!!!
搜索更多相关主题的帖子: 解法 
2008-09-21 17:55
chenlou
Rank: 1
来 自:湖北黄冈武穴
等 级:新手上路
威 望:2
帖 子:49
专家分:0
注 册:2008-9-21
得分:0 
这是我根据你的要求稍作修改的程序代码
//求一程序解法
#include <iostream.h>
#define STUNUM  100
struct STUDENT
{
char name[8];
char id[10];
int  score[3];
double  ave;
};


STUDENT inputdata()
{
STUDENT stu;
cout <<"姓名:";
cin>>stu.name;
cout <<"学号:";
cin>>stu.id;
int averesult=0;
cout <<"三门成绩:";
cin>>stu.score[0]>>stu.score[1]>>stu.score[2];
return stu;
}


void calaverage(STUDENT *data,int nnum)
{
    for(int i=0;i <nnum;i++)
data[i].ave=(data[i].score[0]+data[i].score[1]+data[i].score[2])/3.0;
}

void sort(STUDENT *data,int nnum)
{
    int i,j;
    STUDENT temp;
    for(i=0;i<nnum-1;i++)
    {
       for(j=i+1;j<nnum;j++)
          if(data[i].ave<data[j].ave)
          {
          temp=data[i];
          data[i]=data[j];
          data[j]=temp;
          }
          
    }
}
void printdata(STUDENT *data,int nnum)
{
int i;
sort(data,nnum);
for(i =0;i <nnum;i++)
{cout <<data[i].id <<"\t" <<data[i].name;
 for(int j=0;j <3;j++)
 cout <<"\t" <<data[i].score[j];
 cout <<"\t" <<data[i].ave <<endl;
}
}
void main()
{
STUDENT stu[STUNUM];
int stunum;
cout <<"请输入学生人数:";
cin >>stunum;
for(int i=0;i <stunum;i++)
{
cout <<"输入第" <<i+1 <<"个学生信息\n";
stu[i]=inputdata();
}
calaverage(stu,stunum);
printdata(stu,stunum);  
}
2008-09-21 22:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-234399-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.372753 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved