当前位置: 代码迷 >> C语言 >> 我找了好久,都找不到问题在哪
  详细解决方案

我找了好久,都找不到问题在哪

热度:250   发布时间:2008-05-26 19:49:08.0
我找了好久,都找不到问题在哪
代码是为了实现以下三个功能:
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;
}
搜索更多相关的解决方案: ave  int  平均分  grade  void  

----------------解决方案--------------------------------------------------------
输入:
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# 伤心的我 的帖子
谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案