C语言--(结构体、函数的使用)

某班有5个学生,三门课。分别编写3个函数实现以下要求:

(1) 求各门课的平均分;

(2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;

(3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名

.h

struct course {
    char name[60];  //课程名称
    float score;    //分数
};
//类型定义
typedef struct course Course;


struct Student {
    char name[30];  //姓名
    int  number;    //学号
    Course courses[3];//课程
};
//类型定义
typedef struct Student Student;

//打印每门课的平均分
void averageScoreOfStudents(Student stus[],int count);
//void averageScoreOfStudents(Student *stus,int count);


//打印两门以上不及格学生信息
void failStudentsInfo(Student *stus,int count);

//打印平均分在85~90之间学生的学号和姓名
void averageBetween85And90StudentsInfo(Student *stus,int count);

 .m

#import "Student.h"

void averageScoreOfStudents(Student stus[],int count)
{
    for (int i = 0; i < 3; i++) {//控制课程
        float sum = 0;
        for (int j = 0; j < count; j++) {
            sum += stus[j].courses[i].score;
        }
        printf("%s平均分:%.2f\n",stus[0].courses[i].name,sum/count);
    }
}

void failStudentsInfo(Student *stus,int count)
{
    for (int i = 0; i < count; i++) {
        int count = 0;
        for (int j = 0; j < 3; j++) {
            if ((stus+i)->courses[j].score < 90){
                count++;
            }
        }
        if (count >= 2) {
            printf("%s %d ",stus[i].name,stus[i].number);
            for (int k = 0; k < 3; k++) {
                if (stus[i].courses[k].score < 90) {
                    printf("%s:%.2f  ",stus[i].courses[k].name,stus[i].courses[k].score);
                }
            }
            printf("\n");
        }
    }
}


void averageBetween85And90StudentsInfo(Student *stus,int count)
{
    for (int i= 0; i < 5; i++) {
        float sum = 0;
        for (int j = 0; j < 3; j++) {
            sum += stus[i].courses[j].score;
        }
        if (sum/3 >= 85 && sum/3 <= 90){
            printf("%d %s\n",stus[i].number,stus[i].name);
        }
    }
}

 main

int main(int argc, const char * argv[])
{
    
    Student stus[5] = {
        {"zhangsan",5,{{"shuxue",78},{"yuwen",79},{"yingyu",110}}},
        {"lisi",3,{{"shuxue",96},{"yuwen",23},{"yingyu",44}}},
        {"wangwu",2,{{"shuxue",150},{"yuwen",90},{"yingyu",0}}},
        {"zhaoda",4,{{"shuxue",90},{"yuwen",90},{"yingyu",90}}},
        {"qianer",1,{{"shuxue",102},{"yuwen",125},{"yingyu",130}}}
    };
    
   
    //使用函数求平均分
    averageScoreOfStudents(stus, 5);
    

    //使用函数打印两门以上不及格学生信息
    failStudentsInfo(stus, 5);

    //打印成绩在85-90之间的学生    
    averageBetween85And90StudentsInfo(stus, 5);

    return 0;
}

 

posted @ 2014-06-22 20:49  年少不努力  阅读(771)  评论(0编辑  收藏  举报