计算等级的那行错了,把 a=(s[i][j])/10改为 a=(s[i][j-1])/10即可,因为j-1才是平均分数的那一列,修改如下:
#include <iostream>
using namespace std;
#define N 3
#define M 6
int main(void){
float s[N][M];
float sum;
int i,j;
printf("请输入3个学生的学号、语文成绩、数学成绩,英语成绩;\n");
for(i=0;i<N;i++){
for(j=0;j<M-2;j++){
scanf("%f",&s[i][j]);
// printf("s[%d][%d]=%f ",i,j,s[i][j]);
}
// printf("\n");
}
for(i=0;i<N;i++){
sum=0.0f;
for(j=1;j<M-2;j++){
sum=sum+s[i][j];
// printf("s[%d][%d]=%f,sum=%f\n",i,j,s[i][j],sum);
}
s[i][j]=sum/(M-3);
//printf("sum=%f,s[%d][%d]=%f\n",sum,i,j,s[i][j]);
}
printf("\n");
printf("学号 语文 数学 英语 平均成绩 成绩等级\n");
printf("------------------------------------------\n");
for(i=0;i<N;i++){
for(j=0;j<M-1;j++){
printf("%5.0f",s[i][j]);
}
int a;
a=(s[i][j-1])/10;
switch(a){
case 9:cout<<" 1"<<endl;break;
case 8:cout<<" 2"<<endl;break;
case 7:cout<<" 3"<<endl;break;
case 6:cout<<" 4"<<endl;break;
default:cout<<" 5"<<endl;
}
printf("\n");
}
printf("--------------------------------------------\n");
return 0;
}
仅供参考,望采纳~