1.首先定义一个学生结构体(结构体中包含一个Score结构体):

typedef struct score{

  float chinese;//语文成绩

  float english;//英语成绩

  float history;//历史成绩

}Score;

 typedef struct stu{

     char name[20];//姓名

     char sex;//性别

     Score _score;//分数

} Student;

2.定义一个找出成绩至少2门不及格的学生信息的函数

void getStudentsOfFail(Student *stu,int count){

   int temp=0;//用于计数 不及格的成绩的个数

    for(int i=0;i<count;i++){

            if((stu+i)->_score.chinese<60){

                   temp++;

          }  

           if((stu+i)->_score.english<60){

                  temp++;

          }

         if((stu+i)->_score.history<60){

                 temp++;

       }

        if(temp>2){

             printf("学生的信息为:姓名:%s 性别:%c ",(stu+i)->name,(stu+i)->sex);

        }

  }    

}

 

3.这样就可以打印出成绩至少两门不及格的学生的信息

4.反思:做这个题的时候我思维比较混乱,也想了一个笨的办法,把所有符合条件的情况都写在判断里,最后发现这样做效率比较低,不得不说,身边有一些朋友同学确实善于思维,我觉得这种方法比较好,学习一下顺便培养一下自己这方面欠缺的能力.

 

本文转自:http://www.cnblogs.com/yk123/p/5037050.html