C++问题,高手来
#include<iostream.h>structSTUDENT{charname[8];charid[10];intscore[3];intave;};STUDENT...
#include <iostream.h>
struct STUDENT
{
char name[8];
char id[10];
int score[3];
int 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 stuNum)
{
for(int i=0;i<stuNum;i++)
data[i].ave=(data[i].score[0]+data[i].score[1]+data[i].score[0])/3.0;
}
void PrintData(STUDENT *data,int stuNum)
{
cout<<"\n 学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
for(int i=0;i<stuNum;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<<"\n";
}
}
void maopao(STUDENT *data,int stuNum)
{
for(int m=0;m<stuNum;m++)
{
for(int n=stuNum-1;n<m;n--)
{
if(data[m].ave<data[m+1].ave)
{
int temp;
temp=data[m].ave;
data[m].ave=data[m+1].ave;
data[m+1].ave=temp;
}
}
}
}
void PrintData1(STUDENT *data,int stuNum)
{
cout<<"\n 学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
for(int i=0;i<stuNum;i++)
{
if(data[i].ave<data[i+1].ave)
{
STUDENT ti;
ti=data[i];
data[i]=data[i+1];
data[i+1]=ti;
}
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<<"\n";
}
}
}
void main()
{
const stuNum=3;
STUDENT stu[stuNum];
for(int i=0;i<stuNum;i++)
{
cout<<"输入第"<<i+1<<"个学生信息\n";
stu[i]=InputData();
}
CalAverage(stu,stuNum);
PrintData(stu,stuNum);
maopao(stu,stuNum);
PrintData1(stu,stuNum);
}
编译时没有什么问题啊~运行的时候,也可以打入姓名,学号成绩,可等一排序就出现问题,高手帮我修改一下~成功后另有加分
快啊~我急啊~高手们...我的QQ是276947956,标明“编程”哈 展开
struct STUDENT
{
char name[8];
char id[10];
int score[3];
int 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 stuNum)
{
for(int i=0;i<stuNum;i++)
data[i].ave=(data[i].score[0]+data[i].score[1]+data[i].score[0])/3.0;
}
void PrintData(STUDENT *data,int stuNum)
{
cout<<"\n 学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
for(int i=0;i<stuNum;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<<"\n";
}
}
void maopao(STUDENT *data,int stuNum)
{
for(int m=0;m<stuNum;m++)
{
for(int n=stuNum-1;n<m;n--)
{
if(data[m].ave<data[m+1].ave)
{
int temp;
temp=data[m].ave;
data[m].ave=data[m+1].ave;
data[m+1].ave=temp;
}
}
}
}
void PrintData1(STUDENT *data,int stuNum)
{
cout<<"\n 学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
for(int i=0;i<stuNum;i++)
{
if(data[i].ave<data[i+1].ave)
{
STUDENT ti;
ti=data[i];
data[i]=data[i+1];
data[i+1]=ti;
}
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<<"\n";
}
}
}
void main()
{
const stuNum=3;
STUDENT stu[stuNum];
for(int i=0;i<stuNum;i++)
{
cout<<"输入第"<<i+1<<"个学生信息\n";
stu[i]=InputData();
}
CalAverage(stu,stuNum);
PrintData(stu,stuNum);
maopao(stu,stuNum);
PrintData1(stu,stuNum);
}
编译时没有什么问题啊~运行的时候,也可以打入姓名,学号成绩,可等一排序就出现问题,高手帮我修改一下~成功后另有加分
快啊~我急啊~高手们...我的QQ是276947956,标明“编程”哈 展开
2个回答
展开全部
很多错。你要什么顺序排?下面是按成绩排的
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 stuNum)
{
for(int i=0;i<stuNum;i++)
data[i].ave=double(data[i].score[0]+data[i].score[1]+data[i].score[0])/3.0;
}
void PrintData(STUDENT *data,int stuNum)
{
cout<<"\n ѧºÅ\tÐÕÃû\t³É¼¨1\t³É¼¨2\t³É¼¨3\tƽ¾ù·Ö\n";
for(int i=0;i<stuNum;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<<"\n";
}
}
void maopao(STUDENT *data,int stuNum)
{
for(int m=0;m<stuNum;m++)
{
for(int n=stuNum-1;n>m;n--)
{
if(data[m].ave<data[n+1].ave)
{
STUDENT temp;
temp=data[m];
data[m]=data[n+1];
data[n+1]=temp;
}
}
}
}
void PrintData1(STUDENT *data,int stuNum)
{
cout<<"\n ѧºÅ\tÐÕÃû\t³É¼¨1\t³É¼¨2\t³É¼¨3\tƽ¾ù·Ö\n";
for(int i=0;i<stuNum;i++)
{
/* if(data[i].ave<data[i+1].ave)
{
STUDENT ti;
ti=data[i];
data[i]=data[i+1];
data[i+1]=ti;
} */
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<<"\n";
}
}
int main(int argc, char* argv[])
{
const stuNum=3;
STUDENT stu[stuNum];
for(int i=0;i<stuNum;i++)
{
cout<<"ÊäÈëµÚ"<<i+1<<"¸öѧÉúÐÅÏ¢\n";
stu[i]=InputData();
}
CalAverage(stu,stuNum);
PrintData(stu,stuNum);
maopao(stu,stuNum);
PrintData1(stu,stuNum);
return 0;
}
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 stuNum)
{
for(int i=0;i<stuNum;i++)
data[i].ave=double(data[i].score[0]+data[i].score[1]+data[i].score[0])/3.0;
}
void PrintData(STUDENT *data,int stuNum)
{
cout<<"\n ѧºÅ\tÐÕÃû\t³É¼¨1\t³É¼¨2\t³É¼¨3\tƽ¾ù·Ö\n";
for(int i=0;i<stuNum;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<<"\n";
}
}
void maopao(STUDENT *data,int stuNum)
{
for(int m=0;m<stuNum;m++)
{
for(int n=stuNum-1;n>m;n--)
{
if(data[m].ave<data[n+1].ave)
{
STUDENT temp;
temp=data[m];
data[m]=data[n+1];
data[n+1]=temp;
}
}
}
}
void PrintData1(STUDENT *data,int stuNum)
{
cout<<"\n ѧºÅ\tÐÕÃû\t³É¼¨1\t³É¼¨2\t³É¼¨3\tƽ¾ù·Ö\n";
for(int i=0;i<stuNum;i++)
{
/* if(data[i].ave<data[i+1].ave)
{
STUDENT ti;
ti=data[i];
data[i]=data[i+1];
data[i+1]=ti;
} */
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<<"\n";
}
}
int main(int argc, char* argv[])
{
const stuNum=3;
STUDENT stu[stuNum];
for(int i=0;i<stuNum;i++)
{
cout<<"ÊäÈëµÚ"<<i+1<<"¸öѧÉúÐÅÏ¢\n";
stu[i]=InputData();
}
CalAverage(stu,stuNum);
PrintData(stu,stuNum);
maopao(stu,stuNum);
PrintData1(stu,stuNum);
return 0;
}
展开全部
你的冒泡排序法有问题哈...
看你的第二个For循环的条件:n<m,这里应该是n>m,不然你第一个循环就进不了啦..
void maopao(STUDENT *data,int stuNum)
{
for(int m=0;m<stuNum;m++)
{
for(int n=stuNum-1;n<m;n--)
{
if(data[m].ave<data[m+1].ave)
{
int temp;
temp=data[m].ave;
data[m].ave=data[m+1].ave;
data[m+1].ave=temp;
}
}
}
}
看你的第二个For循环的条件:n<m,这里应该是n>m,不然你第一个循环就进不了啦..
void maopao(STUDENT *data,int stuNum)
{
for(int m=0;m<stuNum;m++)
{
for(int n=stuNum-1;n<m;n--)
{
if(data[m].ave<data[m+1].ave)
{
int temp;
temp=data[m].ave;
data[m].ave=data[m+1].ave;
data[m+1].ave=temp;
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询