Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124612
  • 博文数量: 52
  • 博客积分: 2200
  • 博客等级: 大尉
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-08 15:00
文章分类

全部博文(52)

文章存档

2011年(1)

2009年(51)

我的朋友

分类: C/C++

2009-11-10 11:44:04

/*=============================================================
              目的:有个一个班4个学生,5门课,(1)求第一门课的平均分(2)找出有2们以上课程
              不及格的学生,输出他们的学号和全部课程成绩和平均成绩(3)找出平均成绩在90分以
              上或者全部课程成绩在85以上的学生分别编3个函数实现以上3个要求。
               
             算法分析:1、 定义成绩数组,定义学号数组,
                       2、函数一:计算第一门课的平均分
                       3、 函数二:以成绩数组和学号数组为参数找出2门以上课程不及格的学生,输
                       出他们的学号和全部成绩和平均分
                       4、函数三:以成绩数组和学号数组为参数找出平均成绩在90分以上或者全部课程
                       成绩在85以上的学生。
==============================================================
              作者:最后的村长
              时间:2009年11月6日
              工具:DEV C++ 4.9.9.2
              version:1.0
==============================================================*/

#include <stdio.h>
#include <stdlib.h>
#define N 4
#define M 5
void average_score(float (*p)[M]);//计算第一门课的平均成绩

void search(float (*p)[M],unsigned id[N]);//找出有2门以上的课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩

void find(float (*p)[M],unsigned id[N]);//找出平均成绩在90分以上或全部课程成绩在85分以上的学生

/*=============================================================*/
int main()
{
    //定义并初始化成绩数组

    float score[N][M]={{70,75,80,65,59},{90,92,88,88,99},{60,49,52,34,70},{60,43,32,21,50}};
    //定义并初始化学号数组

    unsigned id[N]={10537,10538,10539,10540};
    //调用平均函数

    average_score(score);
    //调用找两门不及格成绩函数

    search(score,id);
    //调用高分搜索函数

    find(score,id);
    
    system("PAUSE");
    return 0;
}
//求第一门课的平均成绩

void average_score(float (*p)[M])
{
     float average;//定义平均成绩

     float sum=0;//定义第一门课的总成绩

     for(int i=0;i<N;i++)
     {
             sum+=*(*(p+i)+0);//求解第一门课总成绩

     
     }
     average=sum/N;//求解第一门课平均成绩

     puts("第一门课的平均成绩为:\n");
     printf("%4.2f",average);//输出第一门课的平均成绩

}
//找出两门以上课程不及格的学生,输出学号、全部课程成绩和平均成绩

void search(float (*p)[M],unsigned id[N])
{
     float sum=0;//定义每个人的总成绩

     int count;//定义不及格标识符

     for(int i=0;i<N;i++)
     
     {
             count=0;// 下一个同学不及格成绩数目自动归零

             sum=0;//下一个同学的总成绩自动归零

             for(int j=0;j<M;j++)
             {
                     if(*(*(p+i)+j)<60)
                     count++;
                     if(count>=2)
                     {
                                 printf("\n\n不及格学生的学号为:%u",id[i]);//输出存在2门成绩不及格学生的学号 ,这个学号输出缺少后两位???

                                 printf("\n不及格学生的全部成绩为:");//输出这个学生的全部成绩

                                 for(int k=0;k<M;k++)
                                 {
                                         sum+=*(*(p+i)+k);
                                         printf(" %4.2f ",*(*(p+i)+k));
                                 }
                                 printf("\n此学生的平均成绩是:%4.2f",(sum/M));//输出这个学生的平均成绩

                                 break;
                                 
                     }
            }
     }
}
//找出平均成绩90分以上或者全部成绩在85分以上的学生

void find(float (*p)[M],unsigned id[N])
{
     float sum=0;//同学的总成绩

     unsigned int count;//同学超过85分成绩的个数

     for(int i=0;i<N;i++)
     {
             count=0;//下一个同学的高分成绩归零

             sum=0;//下一个同学的总成绩归零

             for(int j=0;j<M;j++)
             {
                     sum=sum+*(*(p+i)+j);
                     if(*(*(p+i)+j)>=85)
                     count++;
                     if(count==5)
                     printf("\n\n学号为%u的学生所有成绩在85分以上",id[i]);//输出高分学生的学号

             }
             if((sum/M)>=90)
             printf("\n\n学号为%u的学生平均成绩在90分以上",id[i]);//输出平均成绩高分的学生学号

     }
}


阅读(517) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~