【例8.2】计算学生的平均成绩和不及格的人数。
程序内容如下:
1 /*这是一个有关于结构体数组知识讲解的事例程序*/
2 #include<stdio.h>
3 struct Student
4 {
5 int num;
6 char name[20];
7 float score;
8 }student[5]={{201801,"Li",45},{201802,"Zhang",92.5},{201803,"Song",85.5},{201804,"Zhao",86},{201805,"Wang",58}};
9 int main()
10 {
11 int i,count=0;
12 float ave,sum=0;
13 for(i=0;i<5;i++){
14 sum+=student[i].score;
15 if(student[i].score<60)
16 count+=1;
17 }
18 printf("s=%f\n",sum);
19 ave=sum/5;
20 printf("average=%f\ncount=%d\n",ave,count);
21 return 0;
22 }
程序结果如图8.5所示:
图8.5 例8.2程序结果图
【例题中关键问题说明】
(1)本例程序中定义了一个结构体数组student,共5个数组元素,并进行了初始化赋值。
(2)在main()函数中用for语句逐个累加各元素的score成员值并保存于变量sum之中。
(3)如果score的值小于60(不及格),使计数器count加1,循环完毕后计算平均成绩,并输出全班总分、平均分和不及格人数。
【例8.3】现有候选人4名,选民10名,每个选民只能投票选一人。请编写一个计票程序,统计每一名候选人的得票情况。
程序内容如下:
1 /*这是一个有关于结构体数组知识讲解的事例程序*/
2 #include<string.h>
3 #include<stdio.h>(www.xing528.com)
4 struct Person
5 {
6 char name[20];
7 int count;
8 }candidate[4]={"Zhao",0,"Qian",0,"Sun",0,"Li",0};
9 int main()
10 {
11 int i,j;
12 char candidate_name[20];
13 for(i=1;i<=10;i++)
14 {
15 scanf("%s",candidate_name);
16 for(j=0;j<4;j++)
17 {
18 if(strcmp(candidate_name,candidate[j].name)==0)
19 candidate[j].count++;
20 }
21 }
22 printf("\n Result:\n");
23 for(i=0;i<4;i++)
24 {
25 printf("%5s:%d\n",candidate[i].name,candidate[i].count);
26 }
27 return 0;
28 }
程序结果如图8.6所示:
图8.6 例8.3程序结果图
【例题中关键问题说明】
(1)定义一个结构体数组candidate,它有4个元素,每个元素包含两个成员name(姓名)和count(票数),在定义数组时初始化。
(2)在主函数中定义字符数组candidate_name,用来存放输入的候选人姓名。
(3)每次循环输入一个候选人,然后将它与结构体数组中的4名候选人姓名对比,看与哪一个相同,相同则票数count+1,直至输入结束。最后将候选人姓名和得票数输出。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。