大家看下,哪里出错了。它老是说没有标识
#include <iostream.h>
const int n=10;
const int m=7;
int a[n][m];
void main()
{char choice;
do{
cout < < "A输入每个学生装的成绩单 B输出每个学生的总分成绩 \n ";
cout < < "C输出每门功课的平均分 Q退出\n ";
cout < < "请选择(A--C): ";
cin> > choice;
switch(choice)
{
case q: break;
case a: cout < < "请输入10个学生的各7门成绩:\n ";
for(int i=0;i <n;i++)
for(int j=0;j <m;j++)
cin> > a[i][j];
cout < <endl;break;
case b: int sum;
for(int i=0;i <n;i++)
{sum=0;
for(int j=0;j <m;j++)
sum+=a[i][j];
cout < < "第 " < <i+1 < < "个学生的总成绩为: " < <sum < <endl;
}
cout < <endl;break;
case C:int sum;
for(int i=0;i <m;i++)
{sum=0;
for(int j=0;j <n;j++)
sum+=a[j][i];
cout < < "第 " < <i+1 < < "门功课的平均成绩为: ";
cout < <float(sum)/n < <endl;
}
cout < <endl;break;
default: continue;
}
}while(choice!=q);
}
[解决办法]
你要将出错行号,出错信息等一同贴出来,不然,让人家查看起来太费事了。
[解决办法]
int main()
{
char choice;
do{
cout < < "A输入每个学生装的成绩单 B输出每个学生的总分成绩 \n ";
cout < < "C输出每门功课的平均分 Q退出\n ";
cout < < "请选择(A--C): ";
cin> > choice;
switch(choice)
{
int sum;
case 'Q ':
case 'q ': break;
case 'A ':
case 'a ': cout < < "请输入10个学生的各7门成绩:\n ";
for(int i=0;i <n;i++)
for(int j=0;j <m;j++)
cin> > a[i][j];
cout < <endl;break;
case 'b ':
case 'B ':
for(int i=0;i <n;i++)
{sum=0;
for(int j=0;j <m;j++)
sum+=a[i][j];
cout < < "第 " < <i+1 < < "个学生的总成绩为: " < <sum < <endl;
}
cout < <endl;break;
case 'c ':
case 'C ':
for(int i=0;i <m;i++)
{sum=0;
for(int j=0;j <n;j++)
sum+=a[j][i];
cout < < "第 " < <i+1 < < "门功课的平均成绩为: ";
cout < <float(sum)/n < <endl;
}
cout < <endl;break;
default: continue;
}
}while(choice!= 'q ' || choice!= 'Q ');
system( "pause ");
return 0;
}
[解决办法]
case q:
==>
case 'Q ': //用 ' '表示字符,如果是直接使用 q,代表的是一个变量,但是你没有定义这个变量
case 'q ':
[解决办法]
main函数前面的:
#include <iostream.h>
const int n=10;
const int m=7;
int a[n][m];
也要加上去。你是否学过C/C++? :)
[解决办法]
case a; 等
case 后面只能是常量
[解决办法]
将变量i,j的定义放在main函数的开始部分。
在很多编译器中,不允许变量的定义直接放在switch语句内部,因为这个作用域会穿过多个case语句,引起歧异。
[解决办法]
#include <iostream.h>
#include <stdlib.h>
const int n=10;
const int m=7;
int a[n][m];
void main()
{
char choice;
do
{
int i=0;//i是一个好多地方都要用到的变量,所以定义在这里要好些。
int j=0;//j也一样
int sum=0;
system( "color 3f ");
cout < < "\ta 输入每个学生装的成绩单\r\n\tb 输出每个学生的总分成绩\n ";
cout < < "\tc 输出每门功课的平均分\r\n\tq 退出\r\n ";
cout < < "请选择(a,b,c,q):\r\n ";
cout < < "你的输入: ";
cin> > choice;
switch(choice)
{
case 'q ': // 这里输入的是字符,所以应该用 ' '括起来。
break;
case 'a ':
cout < < "请输入10个学生的各7门成绩:\n ";
for(i=0;i <n;i++)
{
for(j=0;j <m;j++)
cin> > a[i][j];
cout < <endl;//这里的cout没有道理
}
break;
case 'b ':
//这里的sum也要定义在外面,因为好多地方要用到
for(i=0;i <n;i++)
{
sum=0;
for(j=0;j <m;j++)
sum+=a[i][j];
cout < < "第 " < <i+1 < < "个学生的总成绩为: " < <sum < <endl;
}
cout < <endl;break;
case 'c ':
//int sum;
for(i=0;i <m;i++)
{
sum=0;
for(j=0;j <n;j++)
sum+=a[j][i];
cout < < "第 " < <i+1 < < "门功课的平均成绩为: ";
cout < <float(sum)/n < <endl;
}
cout < <endl;break;
default:
system( "cls ");
break;//不能是continue;
}
}while(choice!= 'q ');
}
[解决办法]
那个是变量作用域的问题,
你定义的变量i,j,sum都是局部变量,
所以,一出case就失效了,但是,又因为前面定义了变量i,j,sum
所以,下面定义的时候,会出现重定义的错误
