#程序无法运行,麻烦大家看一下哪里有问题
#include<iostream>
using namespace std;
int n;int x;
char a[99];
struct student
{float xuehao;
char sex[99];
char xingming[99];
int chengji[3];
float pingjun;
float zong;
};struct student student[51];
void caidan()//菜单
{cout<<"菜单:1.输入 2.插入 3.排序 4.查找 5.删除 6.输出(请输入对应的序号)"<<endl;
cin>>x;
void shuru(int n);void insert();void sort();void find();void shanchu();void output();
switch(x)
{
case 1:shuru(n);
case 2:insert();
case 3:sort();
case 4:find();
case 5:shanchu();
case 6:output();
}
}
void output()
{for(int i=0;i<50;i++)
if(student[i].xuehao!=0)
cout<<endl<<"学号:"<<student[i].xuehao<<"姓名:"<<student[i].xingming<<"性别:"<<student[i].sex<<"\n第一科成绩:"<<student[i].chengji[0]<<"第二科成绩:"<<student[i].chengji[1]<<"第三科成绩:"<<student[i].chengji[2];
caidan();}
void shanchu()//删除
{cout<<"请输入想要删除的学生的学号或姓名"<<endl;
cin>>x;
if(x==1)
{cout<<"请输入姓名"<<endl;
cin>>student[50].xingming;}
if(x==2)
{cout<<"请输入学号"<<endl;
cin>>student[50].xuehao;}
for(int i=0;i<50;i++)
if(student[i].xingming==student[50].xingming||student[i].xuehao==student[50].xuehao)
student[i]=student[i+1];
cout<<endl<<"删除成功"<<endl;caidan();
}
void insert()//插入
{int x,j;
cout<<"请输入学生的学号、姓名、性别、3科成绩"<<endl;
cin>>student[50].xuehao;
for(int i=0;i<50;i++)
if(student[i].xuehao==student[50].xuehao)
{cin>>student[x].xingming;cin>>student[x].sex;
cin>>student[x].chengji[0];cin>>student[x].chengji[1];cin>>student[x].chengji[2];
student[x].zong=student[x].chengji[0]+student[x].chengji[1]+student[x].chengji[2];
student[x].pingjun=student[x].zong/3;{for(int j=49;j>=i;j--)
student[j+1]=student[j];
student[j]=student[x];
}}cout<<endl<<"插入成功"<<endl;
caidan();
}
void shuru(int n)//输入
{cout<<"请输入学生的学号、姓名、性别、3科成绩"<<endl;
cin>>student[n].xuehao;cin>>student[n].xingming;cin>>student[n].sex;
cin>>student[n].chengji[0];cin>>student[n].chengji[1];cin>>student[n].chengji[2];
student[n].zong=student[n].chengji[0]+student[n].chengji[1]+student[n].chengji[2];
student[n].pingjun=student[n].zong/3;n++;cout<<endl<<"输入成功"<<endl;void caidan();
}
void find()//查找
{;cout<<"请输入要查找学生的学号或姓名1.查找姓名 2.查找学号"<<endl;
cin>>x;
if(x==1)
{cout<<"请输入姓名"<<endl;
cin>>student[50].xingming;}
if(x==2)
{cout<<"请输入学号"<<endl;
cin>>student[50].xuehao;}
for(int i=0;i<50;i++)
if(student[i].xingming==student[50].xingming||student[i].xuehao==student[50].xuehao)
cout<<endl<<"学号:"<<student[i].xuehao<<"姓名:"<<student[i].xingming<<"性别:"<<student[i].sex<<"\n第一科成绩:"<<student[i].chengji[0]<<"第二科成绩:"<<student[i].chengji[1]<<"第三科成绩:"<<student[i].chengji[2];
caidan();
}
void sort()//排序
{
int x;
cout<<"有以下两种排序方式,请问您需要那种排序方式\n1.学号 2.总成绩"<<endl;
cin>>x;
switch(x)
{
case 1:
for(int j=0;j<n;j++)
for(int i=0;i<n-j;i++)
if(student[i].xuehao>student[i+1].xuehao)
{student[50]=student[i];student[i]=student[i+1];student[i+1]=student[50];}
cout<<"按学号从低到高排序后为"<<endl;
for(int i=0;i<n+1;i++)
cout<<student[i].xingming<<endl;break;
case 2:
{for(int j=0;j<n;j++)
for(int i=0;i<n-j;i++)
if(student[i].zong<student[i+1].zong)
{student[50]=student[i];student[i]=student[i+1];student[i+1]=student[50];}}
cout<<"按总成绩从高到低排序后为:\n";
for(int i=0;i<n;i++)
cout<<student[i].xingming<<endl;
}
cout<<endl<<"排序成功"<<endl;void caidan();
}
void main()
{
float num[50];
for(int j=0;j<50;j++)
num[j]=0;
cout<<"菜单:1.输入 2.插入 3.排序 4.查找 5.删除 6.输出(请输入对应的序号)"<<endl;
cin>>x;
if(x!=1)
cout<<"请先输入学生的信息,再进行其它类型的操作"<<endl;
cout<<"请输入要输入的学生人数";
cin>>n;
cout<<"请输入学生的学号、姓名、性别、3科成绩"<<endl;
for(int i=0;i<n;i++)
{cout<<"请输入第"<<i+1<<"个学生的个人信息,请先输入学号,姓名,性别以及3科成绩"<<endl;
cin>>student[i].xuehao;cin>>student[i].xingming;cin>>student[i].sex;
for(int j=0;j<3;j++)
{cin>>student[i].chengji[j];num[i]+=student[i].chengji[j];};student[i].zong=num[i];student[i].pingjun=num[i]/3;}
caidan();
}
#预计效果
#这个程序还可以简化吗
在 insert()
函数中,x
和 j
是没有初始化的。