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