使用结构体变量存储学生姓名和课程成绩,计算平均分及查找不及格同学姓名及分数

 1 struct Student        //声明Student类型结构体变量
 2     {
 3         char name[20];
 4         int score[5];
 5     };
 6 typedef struct Student Stu;
 7 
 8 void main()
 9 {
10 
11     Stu stu[3];      定义Student类型变量数组  
12     int i,j;
13     for(i=0;i<3;i++)      //输入学生姓名和成绩
14     {
15         printf("please input student[%d]'s name and scores:\n",i+1);
16         printf("Name:");scanf("%s",stu[i].name);
17         printf("\nScores:");
18         for(j=0;j<4;j++)
19         {
20             scanf("%d",&stu[i].score[j]);}
21     stu[i].score[j]=0;
22     }
23     void aver(Stu s[],int n);
24     aver(stu,3);      //求平均分
25     void fail(Stu s[],int n);
26     fail(stu,3);      //打印不及格成绩同学成绩
27 }
28 void aver(Stu s[],int n)
29 {
30     int i,j;
31     float sum;
32     for(i=0;i<n;i++)
33     {
34         for(j=0,sum=0.0;j<4;j++)
35         {
36             sum=sum+s[i].score[j];
37         }
38         s[i].score[j]=sum/j;
39     }
40     printf("average scores:\n");
41     for(i=0;i<n;i++)
42     {
43         printf("\n%s :%.1d",s[i].name,s[i].score[4]);
44     }
45     printf("\n");
46 }
47 void fail(Stu s[],int n)
48 {
49     int i,j;
50     for(i=0;i<n;i++)
51     {
52         for(j=0;j<4;j++)
53         {
54             if(s[i].score[j]<60)
55             {
56                 printf("\n%s failed:",s[i].name);
57                 printf("\nScores:");
58                 for(j=0;j<4;j++)
59                     printf("%d\t",s[i].score[j]);
60                 break;
61             }
62         }
63     }
64 }

  结构体类型和int,char,数组等基本类型一样,也是一种C语言数据类型,只不过这是一种自定义数据类型,我们可以根据需求由各种基本数据类型构造。

  使用结构体变量时遵循变量使用的一般规则。一般把结构体类型声明放到代码的最前面,这一可以使其使用范围为整个程序文件;也可以放在头文件里。

posted on 2016-06-19 23:08  callmebill  阅读(3275)  评论(0编辑  收藏  举报