当前位置: 代码迷 >> C语言 >> 成绩输入与输出
  详细解决方案

成绩输入与输出

热度:152   发布时间:2007-12-06 12:12:44.0
成绩输入与输出
4个学生5门课程的成绩:
要求:
求第一门课程的平均分

找到有2门科目不及格的学生,输出他们的学号,成绩和平均成绩

//找到平均成绩在90分以上的或者全部课程成绩在85分以上的学生
下面是我的代码:




#include<stdio.h>
#define N 5
#define M 4
float average(float *p);
float * search(float (*p)[N]);
float * find(float (*p)[N]);
int
main()
{
//变量及数组定义
    float score[M][N],avescore;
    int i,j;
    //输入各个学生的成绩
    for(j=0;j<M;j++)
    {
        printf("NO.%d scores:\n",j+1);
        for(i=0;i<N;i++)
            scanf(" %f ",*(score+j)+i);
        printf("\n");
    }
    //求第一门课程的平均分
    avescore=average(*score);
    printf(" the average of the first is:%f\n",avescore);
    //找到有2门科目不及格的学生,输出他们的学号,成绩和平均成绩
    for(j=0;j<M;j++)
    {
        float *p;
        p=search(score+j);
        if(p==*(score+j))
        {
            float sum;
            printf("NO.%d scores:\n",j+1);
            for(i=0;i<N;i++)
            {   
                printf(" %f ",*(p+i));
                sum+=*(p+i);
            }
            
            printf("\n the average score is :%f\n",sum/N);
        }
        printf("\n");
    }
    //找到平均成绩在90分以上的或者全部课程成绩在85分以上的学生
    for(j=0;j<M;j++)
    {
        float *p;
        p=find(score+j);
        if(p==*(score+j))
        {
            printf("NO.%d scores:\n",j+1);
            for(i=0;i<N;i++)
                printf(" %f ",*(p+i));
        }
        printf("\n");
    }
   
}
    //求平均分
    float
    average(float * p)
    {
        float sum,avsco;
        sum=0;
        int i;
        for(i=0;i<M;i++)
            sum+=*(p+i*N);
        avsco=sum/i;
        return(avsco);
    }
   
    //找到功课至少有两门不及格的学生,返回该行的首地址
    float * search(float (*p)[N])
    {
        int i,j;
        float * pt;
        pt=*(p-1);
        for(i=0;i+1<N;i++)
            if(*(*p+i)<60)
                for(j=i+1;j<N;j++)
                    if(*(*p+j)<60)
                        pt=*p;
        return(pt);
    }        
   
    //找到平均成绩在90分以上的或者全部课程成绩在85分以上的学生,返回该行的首地址
    float * find(float (*p)[N])
    {
        int i;
        float avscore,*pt,sum=0;
        pt=*(p+1);
        for(i=0;i<N;i++)
        {
            sum+=*(*p+i);
        }
        avscore=sum/4;
        if(avscore>=90)
            pt=*p;
        return(pt);
    }
        编译是没有错误,然而运行时,成绩也无法输入、希望高手指点!谢谢!
搜索更多相关的解决方案: 输出  输入  

----------------解决方案--------------------------------------------------------
我用DEV-CPP运行```没有什么问题啊```
----------------解决方案--------------------------------------------------------
没有问题啊
----------------解决方案--------------------------------------------------------
呵,似乎没什么问题,不过求平均分的时候好像求错了
你换个编译器试试
我用VC++6.0
----------------解决方案--------------------------------------------------------
高手!
高手就是高手,程序那么长! 我什么时候才能像你那样厉害啊,啊?
我要加油啊!!!!!!!!!!!!!!!!!!
----------------解决方案--------------------------------------------------------
  相关解决方案