谁能帮我解决error C2046: illegal case错误?

skolf 2009-12-27 11:39:09
代码如下:
#include<iostream.h>
#include<string.h>
class stu
{ private:
char name[20];
double math,chinese,english,average,sum;
public:
stu()
{
}
stu(char n[20],double ma,double chin,double eng)
{
strcpy(name,n);
math=ma;
chinese=chin;
english=eng;
}
double getsum()
{
sum=chinese+english+math;
return sum;
}
double getaver()
{
average=getsum()/3;
return average;
}
friend void main();
};


void main()
{
cout<<"请选择您需要的操作!"<<endl;
cout<<"(0)数据录入"<<endl;
cout<<"(1)增加人员"<<endl;
cout<<"(2)删除人员"<<endl;
cout<<"(3)修改数据"<<endl;
cout<<"(4)按总成绩查询"<<endl;
cout<<"(5)按姓名查询"<<endl;
cout<<"(6)输出所有学生的数据"<<endl;
cout<<"(7)按总分查询排名"<<endl;
cout<<"(8)按语文查询排名"<<endl;
cout<<"(9)按数学查询排名"<<endl;
cout<<"(10)按英语查询排名"<<endl;
cout<<"(11)输出语文不及格的学生数据"<<endl;
cout<<"(12)输出数学不及格的学生数据"<<endl;
cout<<"(13)输出英语不及格的学生数据"<<endl;
cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl;
char p;char w;
stu *s[50];
int i=0;
int j=0;
int flag2=0;
do
{
cin>>p;
if((p>='0'&&p<='13'))
flag2=1;
else
cout<<"指令错误!请重新输入:"<<endl;
}while(flag2==0);
do{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout<<"请输入姓名"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
cout<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}

case '1':
{
char name[20];double math,chinese,english;
char c;
do
{
cout<<"请输入您要增加的学生的姓名:"<<endl;
cin>>name;
cout<<"请输入数学成绩:"<<endl;
cin>>math;
cout<<"请输入语文成绩:"<<endl;
cin>>chinese;
cout<<"请输入外语成绩:"<<endl;
cin>>english;
cout<<"姓名"<<name<<"数学成绩"<<math<<"语文成绩"<<chinese<<"外语成绩"<<english<<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout<<"数据录入成功,想继续录入吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[20];int flag3=0;char c;
do{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h<=i);
}
}
if(flag3==0)
cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout<<"要继续删除吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat,chin,eng;flag2=0;
char c;
do
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout<<"请输入新的数学成绩:"<<endl;
cin>>mat;
cout<<"请输入新的语文成绩:"<<endl;
cin>>chin;
cout<<"请输入新的外语成绩:"<<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout<<"数据修改成功!";
}
}
if(flag2==0)
{
cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl;
}
cout<<"想继续修改吗(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout<<"请输入你要查询学生的总成绩"<<endl;
cin>>t;
for(int q=0;q<i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout<<"您要查询的学生是:"<<(*s[q]).name<<endl;
}
}
if(flag1==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}

case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout<<"您要查询的学生是:"<<(*s[j]).name<<endl;
cout<<(*s[j]).name<<"的总成绩成绩是"<<(*s[j]).getsum()<<endl<<"平均成绩是:"<<(*s[j]).getaver()<<endl;
}
}
if(flag==0)
cout<<"对不起!您要查询的学生不存在!"<<endl;
cout<<"您想继续查询吗?(y/n)"<<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout<<"指令错误!请重新输入!"<<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '6':
{
cout<<"本系统所有学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
}
break;
}
case '7':
{
int t;stu b;

cout<<"本系统所以学生排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->getsum())<(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '8':
{
int t;stu b;

cout<<"本系统所以学生语文排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->chinese)<(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case '9':
{
int t;stu b;

cout<<"本系统所以学生数学排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->math)<(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
break;
}
case 'a':
{
int t;stu b;

cout<<"本系统所有学生英语排名如下:"<<endl;
for(int x=0;x<i-1;x++)
{
t=x;
for(int y=x+1;y<i;y++)
{
if((s[t]->english)<(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<s[k]->getsum()
<<"平均分:"<<" "<<s[k]->getaver()<<endl;
}
}
break;
}
case 'b':

{
int t;
cout<<"语文不及格的学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
if((s[t]->chinese<60))
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
}
break;
}
case 'c':

{
int f;
cout<<"数学不及格的学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
if((s[f]->math<60))
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
}
break;
}
case 'd':

{
int g;
cout<<"外语不及格的学生数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
if((s[g]->english<60))
for(int k=0;k<i;k++)
{
cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<
"语文:"<<" "<<s[k]->chinese<<"数学:"<<" "<<s[k]->math
<<"外语:"<<" "<<s[k]->english<<"总分:"<<" "<<(*s[k]).getsum()
<<"平均分:"<<" "<<(*s[k]).getaver()<<endl;
}
break;
}
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
int flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout<<"指令错误!请重新输入!"<<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout<<"请输入操作代码(0 录入/1 增加人员/2 删除人员/3 修改数据/4 按总分查询/5 按姓名查询/6 显示所有成员数据/7 按总分排名/8 按语文排名/9 按数学排名/a 按英语排名/b 显示语文不及格的成员数据/c 显示数学不及格的成员数据/d 显示英语不及格的成员数据)"<<endl;
cin>>p;
}while(w=='y');
for(int x=0;x<i;x++)
{
delete s[x];
cout<<"delete all members!"<<endl;
}

}


/////////////出现错误情况:
lx.cpp
D:\我的文档\桌面\lx.cpp(398) : error C2046: illegal case
D:\我的文档\桌面\lx.cpp(415) : error C2046: illegal case
D:\我的文档\桌面\lx.cpp(432) : error C2046: illegal case
执行 cl.exe 时出错.
...全文
2564 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzhiyi926 2011-10-20
  • 打赏
  • 举报
回复
简简单单的飘过。。。。。。。。。
grpubr 2010-01-10
  • 打赏
  • 举报
回复
我放弃了。太恐怖了
niejimaoo 2010-01-09
  • 打赏
  • 举报
回复
晕了先
iverzhang 2010-01-09
  • 打赏
  • 举报
回复
楼主的代码搞的太冗余了,差错都不易,建议更能类似的函数,还是写到一个函数中,也方便找错
xianyuxiaoqiang 2009-12-29
  • 打赏
  • 举报
回复
汗……先自己调试看看
skolf 2009-12-29
  • 打赏
  • 举报
回复
我想再问一下 ,为什么我执行cose 'b','c','d'时会出错呢?
skolf 2009-12-28
  • 打赏
  • 举报
回复
多谢指教啊
cattycat 2009-12-28
  • 打赏
  • 举报
回复
一般这个都是看括号是否匹配,因为你的代码一个case块太长,所以比较难找,如果你用vc assist的话,可以看到不匹配的括号红色显示。把代码foramt一下吧。
tanleihexinxin 2009-12-28
  • 打赏
  • 举报
回复
大括号不匹配
do{
switch(p)
{
case '0':
{
char c;
char name[20];double math,chinese,english;
do{
cout <<"请输入姓名" <<endl;
cin>>name;
cout <<"请输入数学成绩:" <<endl;
cin>>math;
cout <<"请输入语文成绩:" <<endl;
cin>>chinese;
cout <<"请输入外语成绩:" <<endl;
cin>>english;
cout <<"姓名" <<name <<"数学成绩" <<math <<"语文成绩" <<chinese <<"外语成绩" <<english <<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout <<"数据录入成功,想继续录入吗(y/n)" <<endl;
cin>>c;
flag2=0;
do
{
if(c!='y'&&c!='n')
{
cout <<"指令错误!请重新输入!" <<endl;
cin>>c;
}
else
flag2=1;
}while(flag2==0);
}while(c=='y');
break;
}

case '1':
{
char name[20];double math,chinese,english;
char c;
do
{
cout <<"请输入您要增加的学生的姓名:" <<endl;
cin>>name;
cout <<"请输入数学成绩:" <<endl;
cin>>math;
cout <<"请输入语文成绩:" <<endl;
cin>>chinese;
cout <<"请输入外语成绩:" <<endl;
cin>>english;
cout <<"姓名" <<name <<"数学成绩" <<math <<"语文成绩" <<chinese <<"外语成绩" <<english <<endl;
j++;
s[i]=new stu(name, math, chinese, english);
i++;
cout <<"数据录入成功,想继续录入吗(y/n)" <<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout <<"指令错误!请重新输入!" <<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '2':
{
char name[20];int flag3=0;char c;
do{
cout <<"请输入您要删除的学生姓名:" <<endl;
cin>>name;
for(int h=0;h <i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag3=1;
i--;
do{
s[h]=s[h+1];
h++;
}while(h <=i);
}
}
if(flag3==0)
cout <<"您要求删除的对象本来就不存在!请检查输入的正确性!";
cout <<"要继续删除吗?(y/n)" <<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout <<"指令错误!请重新输入!" <<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '3':
{
char name[20];double mat,chin,eng;flag2=0;
char c;
do
{
cout <<"请输入您要修改的学生的姓名:" <<endl;
cin>>name;
for(int h=0;h <i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
flag2=1;
cout <<"请输入新的数学成绩:" <<endl;
cin>>mat;
cout <<"请输入新的语文成绩:" <<endl;
cin>>chin;
cout <<"请输入新的外语成绩:" <<endl;
cin>>eng;
s[h]->chinese=chin;
s[h]->math=mat;
s[h]->english=eng;
cout <<"数据修改成功!";
}
}
if(flag2==0)
{
cout <<"您要修改的学生本来就不存在!请检查重新输入!" <<endl;
}
cout <<"想继续修改吗(y/n)" <<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout <<"指令错误!请重新输入!" <<endl;
cin>>c;
}
}while(c=='y');
break;
}
case '4':
{
double t;char c;
do
{
int flag1=0;
cout <<"请输入你要查询学生的总成绩" <<endl;
cin>>t;
for(int q=0;q <i;q++)
{
if(s[q]->getsum()==t)
{
flag1=1;
cout <<"您要查询的学生是:" <<(*s[q]).name <<endl;
}
}
if(flag1==0)
cout <<"对不起!您要查询的学生不存在!" <<endl;
cout <<"您想继续查询吗?(y/n)" <<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout <<"指令错误!请重新输入!" <<endl;
cin>>c;
}
}
while(c=='y');
break;
}

case '5':
{
char n[20];int j=0;char c;
do{
int flag=0;
cout <<"请输入你要查询的学生姓名" <<endl;
cin>>n;
for(int j=0;j <i;j++)
{
if(strcmp(n,(*s[j]).name)==0)
{
flag=1;
cout <<"您要查询的学生是:" <<(*s[j]).name <<endl;
cout <<(*s[j]).name <<"的总成绩成绩是" <<(*s[j]).getsum() <<endl <<"平均成绩是:" <<(*s[j]).getaver() <<endl;
}
}
if(flag==0)
cout <<"对不起!您要查询的学生不存在!" <<endl;
cout <<"您想继续查询吗?(y/n)" <<endl;
cin>>c;
if(c!='y'&&c!='n')
{
cout <<"指令错误!请重新输入!" <<endl;
cin>>c;
}
}
while(c=='y');
break;
}
case '6':
{
cout <<"本系统所有学生数据如下:" <<endl;
if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!" <<endl;
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<(*s[k]).getsum()
<<"平均分:" <<" " <<(*s[k]).getaver() <<endl;
}
break;
}
case '7':
{
int t;stu b;

cout <<"本系统所以学生排名如下:" <<endl;
for(int x=0;x <i-1;x++)
{
t=x;
for(int y=x+1;y <i;y++)
{
if((s[t]->getsum()) <(s[y]->getsum()))
t=y;
if(t!=x)
{
b=*s[x];
*s[x]=*s[t];
*s[t]=b;
}
}
}
if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<s[k]->getsum()
<<"平均分:" <<" " <<s[k]->getaver() <<endl;
}
break;
}
case '8':
{
int t;stu b;

cout <<"本系统所以学生语文排名如下:" <<endl;
for(int x=0;x <i-1;x++)
{
t=x;
for(int y=x+1;y <i;y++)
{
if((s[t]->chinese) <(s[y]->chinese))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<s[k]->getsum()
<<"平均分:" <<" " <<s[k]->getaver() <<endl;
}
break;
}
case '9':
{
int t;stu b;

cout <<"本系统所以学生数学排名如下:" <<endl;
for(int x=0;x <i-1;x++)
{
t=x;
for(int y=x+1;y <i;y++)
{
if((s[t]->math) <(s[y]->math))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<s[k]->getsum()
<<"平均分:" <<" " <<s[k]->getaver() <<endl;
}
break;
}
case 'a':
{
int t;stu b;

cout <<"本系统所有学生英语排名如下:" <<endl;
for(int x=0;x <i-1;x++)
{
t=x;
for(int y=x+1;y <i;y++)
{
if((s[t]->english) <(s[y]->english))
t=y;
if(t!=x)
{
b=*s[t];
*s[t]=*s[x];
*s[x]=b;
}
}
}

if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!";
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<s[k]->getsum()
<<"平均分:" <<" " <<s[k]->getaver() <<endl;
}

break;
}
case 'b':

{
int t;
cout <<"语文不及格的学生数据如下:" <<endl;
if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!" <<endl;
if((s[t]->chinese <60))
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<(*s[k]).getsum()
<<"平均分:" <<" " <<(*s[k]).getaver() <<endl;
}
break;
}
case 'c':

{
int f;
cout <<"数学不及格的学生数据如下:" <<endl;
if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!" <<endl;
if((s[f]->math <60))
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<(*s[k]).getsum()
<<"平均分:" <<" " <<(*s[k]).getaver() <<endl;
}
break;
}
case 'd':

{
int g;
cout <<"外语不及格的学生数据如下:" <<endl;
if(i==0)
cout <<"管理系统中没有录入数据或者数据已经被删除!" <<endl;
if((s[g]->english <60))
for(int k=0;k <i;k++)
{
cout <<k+1 <<" " <<"姓名:" <<" " <<s[k]->name <<
"语文:" <<" " <<s[k]->chinese <<"数学:" <<" " <<s[k]->math
<<"外语:" <<" " <<s[k]->english <<"总分:" <<" " <<(*s[k]).getsum()
<<"平均分:" <<" " <<(*s[k]).getaver() <<endl;
}
break;
}
cout <<"您想继续进行其他操作吗?(y/n)" <<endl;
int flag4=0;
do
{
cin>>w;
if(w!='y'&&w!='n')
cout <<"指令错误!请重新输入!" <<endl;
else
flag4=1;
}while(flag4==0);
if(w=='y')
cout <<"请输入操作代码(0 录入/1 增加人员/2 删除人员/3 修改数据/4 按总分查询/5 按姓名查询/6 显示所有成员数据/7 按总分排名/8 按语文排名/9 按数学排名/a 按英语排名/b 显示语文不及格的成员数据/c 显示数学不及格的成员数据/d 显示英语不及格的成员数据)" <<endl;
cin>>p;
}
}while(w=='y');
for(int x=0;x <i;x++)
{
delete s[x];
cout <<"delete all members!" <<endl;
}

}
赵4老师 2009-12-28
  • 打赏
  • 举报
回复
出现这种错误我一般是通过
1.加/*...*/
2.重新编译
3.重复1、2直到发现问题
的方法解决的。
「已注销」 2009-12-27
  • 打赏
  • 举报
回复

case '7':
{
int t;
stu b;

cout << "本系统所以学生排名如下:" << endl;
for (int x = 0; x < i - 1; x++)
{
t = x;
for (int y = x + 1; y < i; y++)
{
if ((s[t]->getsum()) < (s[y]->getsum())) t = y;
if (t != x)
{
b = *s[x];
*s[x] = *s[t];
*s[t] = b;
}
}
}
if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!";
for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< s[k]->getsum() << "平均分:" << " " << s[k]->getaver() << endl;
}
break;
}
case '8':
{
int t;
stu b;

cout << "本系统所以学生语文排名如下:" << endl;
for (int x = 0; x < i - 1; x++)
{
t = x;
for (int y = x + 1; y < i; y++)
{
if ((s[t]->chinese) < (s[y]->chinese)) t = y;
if (t != x)
{
b = *s[t];
*s[t] = *s[x];
*s[x] = b;
}
}
}

if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!";
for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< s[k]->getsum() << "平均分:" << " " << s[k]->getaver() << endl;
}
break;
}
case '9':
{
int t;
stu b;

cout << "本系统所以学生数学排名如下:" << endl;
for (int x = 0; x < i - 1; x++)
{
t = x;
for (int y = x + 1; y < i; y++)
{
if ((s[t]->math) < (s[y]->math)) t = y;
if (t != x)
{
b = *s[t];
*s[t] = *s[x];
*s[x] = b;
}
}
}

if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!";
for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< s[k]->getsum() << "平均分:" << " " << s[k]->getaver() << endl;
}
break;
}
case 'a':
{
int t;
stu b;

cout << "本系统所有学生英语排名如下:" << endl;
for (int x = 0; x < i - 1; x++)
{
t = x;
for (int y = x + 1; y < i; y++)
{
if ((s[t]->english) < (s[y]->english)) t = y;
if (t != x)
{
b = *s[t];
*s[t] = *s[x];
*s[x] = b;
}
}
}

if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!";
for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< s[k]->getsum() << "平均分:" << " " << s[k]->getaver() << endl;
}
}
break;
case 'b':

{
int t;
cout << "语文不及格的学生数据如下:" << endl;
if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!" << endl;
if ((s[t]->chinese < 60)) for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< (*s[k]).getsum() << "平均分:" << " " << (*s[k]).getaver() << endl;
}
break;
}
case 'c':

{
int f;
cout << "数学不及格的学生数据如下:" << endl;
if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!" << endl;
if ((s[f]->math < 60)) for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< (*s[k]).getsum() << "平均分:" << " " << (*s[k]).getaver() << endl;
}
break;
}
case 'd':

{
int g;
cout << "外语不及格的学生数据如下:" << endl;
if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!" << endl;
if ((s[g]->english < 60)) for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< (*s[k]).getsum() << "平均分:" << " " << (*s[k]).getaver() << endl;
}
break;
}
}
cout << "您想继续进行其他操作吗?(y/n)" << endl;
int flag4 = 0;
do
{
cin >> w;
if (w != 'y' && w != 'n') cout << "指令错误!请重新输入!" << endl;
else flag4 = 1;
}
while (flag4 == 0);
if (w == 'y') cout
<< "请输入操作代码(0 录入/1 增加人员/2 删除人员/3 修改数据/4 按总分查询/5 按姓名查询/6 显示所有成员数据/7 按总分排名/8 按语文排名/9 按数学排名/a 按英语排名/b 显示语文不及格的成员数据/c 显示数学不及格的成员数据/d 显示英语不及格的成员数据)"
<< endl;
cin >> p;
}
while (w == 'y');
for (int x = 0; x < i; x++)
{
delete s[x];
cout << "delete all members!" << endl;
}
}
「已注销」 2009-12-27
  • 打赏
  • 举报
回复

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

class stu
{
private:
char name[20];
double math, chinese, english, average, sum;
public:
stu()
{
}
stu(char n[20], double ma, double chin, double eng)
{
strcpy(name, n);
math = ma;
chinese = chin;
english = eng;
}
double getsum()
{
sum = chinese + english + math;
return sum;
}
double getaver()
{
average = getsum() / 3;
return average;
}
friend void main();
};

void main()
{
cout << "请选择您需要的操作!" << endl;
cout << "(0)数据录入" << endl;
cout << "(1)增加人员" << endl;
cout << "(2)删除人员" << endl;
cout << "(3)修改数据" << endl;
cout << "(4)按总成绩查询" << endl;
cout << "(5)按姓名查询" << endl;
cout << "(6)输出所有学生的数据" << endl;
cout << "(7)按总分查询排名" << endl;
cout << "(8)按语文查询排名" << endl;
cout << "(9)按数学查询排名" << endl;
cout << "(10)按英语查询排名" << endl;
cout << "(11)输出语文不及格的学生数据" << endl;
cout << "(12)输出数学不及格的学生数据" << endl;
cout << "(13)输出英语不及格的学生数据" << endl;
cout << "选择相关操作请输入相对的括号里的阿拉伯数字!" << endl;
char p;
char w;
stu *s[50];
int i = 0;
int j = 0;
int flag2 = 0;
do
{
cin >> p;
if ((p >= '0' && p <= '13')) flag2 = 1;
else cout << "指令错误!请重新输入:" << endl;
}
while (flag2 == 0);
do
{
switch (p)
{
case '0':
{
char c;
char name[20];
double math, chinese, english;
do
{
cout << "请输入姓名" << endl;
cin >> name;
cout << "请输入数学成绩:" << endl;
cin >> math;
cout << "请输入语文成绩:" << endl;
cin >> chinese;
cout << "请输入外语成绩:" << endl;
cin >> english;
cout << "姓名" << name << "数学成绩" << math << "语文成绩" << chinese << "外语成绩" << english << endl;
j++;
s[i] = new stu(name, math, chinese, english);
i++;
cout << "数据录入成功,想继续录入吗(y/n)" << endl;
cin >> c;
flag2 = 0;
do
{
if (c != 'y' && c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
else flag2 = 1;
}
while (flag2 == 0);
}
while (c == 'y');
break;
}

case '1':
{
char name[20];
double math, chinese, english;
char c;
do
{
cout << "请输入您要增加的学生的姓名:" << endl;
cin >> name;
cout << "请输入数学成绩:" << endl;
cin >> math;
cout << "请输入语文成绩:" << endl;
cin >> chinese;
cout << "请输入外语成绩:" << endl;
cin >> english;
cout << "姓名" << name << "数学成绩" << math << "语文成绩" << chinese << "外语成绩" << english << endl;
j++;
s[i] = new stu(name, math, chinese, english);
i++;
cout << "数据录入成功,想继续录入吗(y/n)" << endl;
cin >> c;
if (c != 'y' && c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
}
while (c == 'y');
break;
}
case '2':
{
char name[20];
int flag3 = 0;
char c;
do
{
cout << "请输入您要删除的学生姓名:" << endl;
cin >> name;
for (int h = 0; h < i; h++)
{
if (strcmp(name, s[h]->name) == 0)
{
flag3 = 1;
i--;
do
{
s[h] = s[h + 1];
h++;
}
while (h <= i);
}
}
if (flag3 == 0) cout << "您要求删除的对象本来就不存在!请检查输入的正确性!";
cout << "要继续删除吗?(y/n)" << endl;
cin >> c;
if (c != 'y' && c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
}
while (c == 'y');
break;
}
case '3':
{
char name[20];
double mat, chin, eng;
flag2 = 0;
char c;
do
{
cout << "请输入您要修改的学生的姓名:" << endl;
cin >> name;
for (int h = 0; h < i; h++)
{
if (strcmp(name, s[h]->name) == 0)
{
flag2 = 1;
cout << "请输入新的数学成绩:" << endl;
cin >> mat;
cout << "请输入新的语文成绩:" << endl;
cin >> chin;
cout << "请输入新的外语成绩:" << endl;
cin >> eng;
s[h]->chinese = chin;
s[h]->math = mat;
s[h]->english = eng;
cout << "数据修改成功!";
}
}
if (flag2 == 0)
{
cout << "您要修改的学生本来就不存在!请检查重新输入!" << endl;
}
cout << "想继续修改吗(y/n)" << endl;
cin >> c;
if (c != 'y' && c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
}
while (c == 'y');
break;
}
case '4':
{
double t;
char c;
do
{
int flag1 = 0;
cout << "请输入你要查询学生的总成绩" << endl;
cin >> t;
for (int q = 0; q < i; q++)
{
if (s[q]->getsum() == t)
{
flag1 = 1;
cout << "您要查询的学生是:" << (*s[q]).name << endl;
}
}
if (flag1 == 0) cout << "对不起!您要查询的学生不存在!" << endl;
cout << "您想继续查询吗?(y/n)" << endl;
cin >> c;
if (c != 'y' && c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
}
while (c == 'y');
break;
}

case '5':
{
char n[20];
int j = 0;
char c;
do
{
int flag = 0;
cout << "请输入你要查询的学生姓名" << endl;
cin >> n;
for (int j = 0; j < i; j++)
{
if (strcmp(n, (*s[j]).name) == 0)
{
flag = 1;
cout << "您要查询的学生是:" << (*s[j]).name << endl;
cout << (*s[j]).name << "的总成绩成绩是" << (*s[j]).getsum() << endl << "平均成绩是:"
<< (*s[j]).getaver() << endl;
}
}
if (flag == 0) cout << "对不起!您要查询的学生不存在!" << endl;
cout << "您想继续查询吗?(y/n)" << endl;
cin >> c;
if (c != 'y' && c != 'n')
{
cout << "指令错误!请重新输入!" << endl;
cin >> c;
}
}
while (c == 'y');
break;
}
case '6':
{
cout << "本系统所有学生数据如下:" << endl;
if (i == 0) cout << "管理系统中没有录入数据或者数据已经被删除!" << endl;
for (int k = 0; k < i; k++)
{
cout << k + 1 << " " << "姓名:" << " " << s[k]->name << "语文:" << " " << s[k]->chinese
<< "数学:" << " " << s[k]->math << "外语:" << " " << s[k]->english << "总分:" << " "
<< (*s[k]).getsum() << "平均分:" << " " << (*s[k]).getaver() << endl;
}
break;
}
lori227 2009-12-27
  • 打赏
  • 举报
回复
break;
} // 这个多的
case 'b':

//其他自己找吧
lori227 2009-12-27
  • 打赏
  • 举报
回复
{}没对应上
多打了 } 或者少打了{ 自己检查下 ~~

65,176

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧