例题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;
}