我找了好久,都找不到问题在哪
代码是为了实现以下三个功能:1. 计算出第一门科目的平均分
2.找出有两门或者以上不及格的人
3.找出各门都85以上或者平均分90分以上的人
#include <stdio.h>
void average(int grade[4][5])
{
int i;
float ave = 0.0;
for(i=0;i<4;i++)
ave+=grade[i][0];
ave/=4.0;
printf("第一门课的平均分是:%5.2f\n\n",ave);
}
void find1(char stu[4][20],int grade[4][5])
{
int i,j,t;
t=0;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(grade[i][j]<60) t++;
if(t>=2) {
printf("有两门或者以上科目不及格的有: %s,%d,%d,%d,%d,%d,%5.2f\n\n",stu[i],grade[i][0],grade[i][1],grade[i][2],grade[i][3],grade[i][4],(grade[i][0]+grade[i][1]+grade[i][2]+grade[i][3]+grade[i][4])/5.0);
break;
}
}
t=0;
}
}
void find2(char stu[4][20],int grade[4][5])
{
int i,j,flag,tag;
float ave=0.0;
flag=tag=1;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(grade[i][j]<85) flag=0;
ave=ave+grade[i][j];
}
ave=ave/5.0;
if(ave<90) tag=0;
if((flag==1) || (tag==1)) printf("成绩优秀的有: %s\n\n",stu[i]);
ave=0.0;
}
}
int main()
{
char stu[4][20];
int grade[4][5];
int i;
printf("input the student's name and grade: \n\n");
printf("eg. :lei\n70,71,72,73,74\n\n");
for(i=0;i<4;i++)
{
scanf("%s",stu[i]);
scanf("%d,%d,%d,%d,%d",&grade[i][0],&grade[i][1],&grade[i][2],&grade[i][3],&grade[i][4]);
}
average(grade);
find1(stu,grade);
find2(stu,grade);
return 0;
}
----------------解决方案--------------------------------------------------------
输入:
101
34,56,88,99,89
102
77,88,99,67,78
103
99,90,87,86,89
104
78,89,99,56,77
输出:第一门科目的平均分是: 72.00
有两门课或者以上不及格的有: 101,34,56,88,99,89,73,20 //学号,各科成绩,平均分
----------------解决方案--------------------------------------------------------
我找不出 输出不了优秀成绩的原因
----------------解决方案--------------------------------------------------------
判断开关变量――flag 和 tag用一个else来给开关变量为真。
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(grade[i][j]<85) flag=0;
ELSE FLAG=1;
ave=ave+grade[i][j];
ave=ave/5.0;
if(ave<90) tag=0;
ELSE TAG=1;
if((flag==1) || (tag==1)) printf("成绩优秀的有: %s\n\n",stu[i]);
ave=0.0;
----------------解决方案--------------------------------------------------------
回复 4# 伤心的我 的帖子
谢谢 ----------------解决方案--------------------------------------------------------