例题1:(使用结构体)
输入两个学生的学号、姓名和成绩,输出成绩较高的学生的学号、姓名和成绩
解题思路:
(1)定义连个结构相同的结构体变量student1,student2;
(2)分别输入两个学生的学号、姓名、和成绩;
(3)比较两个学生的成绩,如果学生1的成绩高于学生2的成绩,就输出学生1的全部信息,如果学生2的成绩高于学生1的成绩,就输出学生2的全部信息。如果两者相等,输出两个学生的全部信息。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{struct student{int num;char name[20];double score;}student1,student2;scanf("%d %s %lf",&student1.num,student1.name,&student1.score);scanf("%d %s %lf",&student2.num,student2.name,&student2.score);printf("The higher score is:\n");if(student1.score>student2.score){printf("%d %s %lf\n",student1.num,student1.name,student1.score);}else {printf("%d %s %lf\n",student2.num,student2.name,student2.score);}else{printf("%d %s %lf\n",student1.num,student1.name,student1.score);printf("%d %s %lf\n",student2.num,student2.name,student2.score);}return 0;
}
例题2:(使用结构体数组)
有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的姓名,最后输出个人的票结果。
解题思路:
显然,需要设一个结构体数组,数组中包含3个元素,每个元素中的信息应包括候选人的姓名(字符型)和得票数(整型)。输入备选人的姓名,然后与数组元素中的”姓名”成员比较,如果相同,就给这个元素中的”得票数”成员的值加1.最后输出所有元素的信息。
代码如下:
#include <stdio.h>
#include <string.h>
struct Person
{char name[20];int count;
}leader[3]={"wang",0,"zhang",0,"yan",0};
int main()
{int i,j;char leader_name[20];for(i=1;i<=10;i++){scanf("%s",leader_name);for(j=0;j<3;j++){if(strcmp(leader_name,leader[j].name)==0)leader[j].count++;}}printf("\nResult:\n");for(i=0;i<3;i++){printf("%5s:%d\n",leader[i].name,leader[i].count);}return 0;
}