C——结构体

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

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81013166