c++,程序无法输出结果

c++,程序无法输出结果#include <iostream>
using namespace std;
struct student
{
char name[20];
int math;
int chinese;
int english;
int sum;};
int main()
{
int i,j;
struct student std[10];
for(i=0;i<10;i++)
{
cout<<"请输入学生名字"<<endl;
cin>>std[i].name;
cout<<"请输入该学生的数学成绩"<<endl;
cin>>std[i].math;
cout<<"请输入该学生的英语成绩"<<endl; cin>>std[i].english;
cout<<"请输入该学生的语文成绩"<<endl; cin>>std[i].chinese;
}
for(i=0;i<10;i++) std[i].sum=std[i].chinese+std[i].english+std[i].math;
for(i=0;i<9;i++)
{
for(j=0;i<9-i;j++)
{
if(std[i].sum<std[i].sum)
{
struct student temp=std[j];
std[j]=std[j+1];
std[j+1] = temp;
}
}
}
cout<<"姓名"<<'\t'<<"数学成绩"<<'\t'<<"语文成绩"<<'\t'<<"英语成绩"<<'\t'<<"总成绩"<<endl;
for(i=0;i<10;i++)
{ cout<<std[i].name<<'\t'<<std[i].math<<'\t'<<std[i].chinese<<'\t'<<std[i].english<<'\t'<<std[i].sum<<endl; }
return 0;}

你是排序算法出错,我帮你优化了一下输入输出,排序的错误也改好了,详情请见代码及注释。还有就是变量、函数名等最好不要取名为std。

#include<stdio.h>
struct student{
char name[20];
int math;
int chinese;
int english;
int sum;
};
int main(void){
int i,j;
struct student std[10];
for(i=0;i<10;i++){
printf("请输入第%d个学生的姓名,各科(语数英三科)成绩,用空格隔开\n",i+1);
scanf("%s",std[i].name);
scanf("%d%d%d",&std[i].chinese,&std[i].math,&std[i].english);
std[i].sum=std[i].chinese+std[i].english+std[i].math;
}
for(i=0;i<10;i++){//出错了,改成i<10
for(j=i+1;j<10;j++){ //这里出错了,现在帮你改成正确的
if(std[i].sum<std[j].sum){//std[i].sum<std[i].sum改成std[i].sum<std[j].sum
struct student temp=std[i];
std[i]=std[j];
std[j]=temp;
}
}
        }
printf("姓名\t数学成绩\t语文成绩\t英语成绩\t总成绩\n");
for(i=0;i<10;i++)
printf("%s\t%d\t\t%d\t\t%d\t\t%d\n",std[i].name,std[i].math,std[i].chinese,std[i].english,std[i].sum);
return 0;
}

运行结果如图片所示

追问

您好,我这老师教的是c++,用cout输出,这里为什么要改成printf?

追答

printf比cout的输出速度更快,不过你用cout也可以,cout更加简单。

追问

哦哦,谢谢

温馨提示:答案为网友推荐,仅供参考
相似回答