七天学会C语言-第七天(结构体)

在这里插入图片描述

1.定义结构体

例 1:把一个学生的信息(包括学号、姓名、性别、住址等 4 项信息) 放在一个结构体变量中,然后输出这个学生的信息。

#include <stdio.h>

struct Student {
    
    
    int student_id;
    char name[30];
    char gender;
    char address[60];
};

int main() {
    
    
  
    struct Student a = {
    
    1, "Houge", 'M', "Hua Guo Shan"};

    printf("学号: %d\n", a.student_id);
    printf("名字: %s\n", a.name);
    printf("性别: %c\n", a.gender);
    printf("住址: %s\n", a.address);

    return 0;
}

运行结果:
在这里插入图片描述

例 2:输入两个学生的学号、姓名和成绩,输出成绩较高者的学号、姓名和成绩。若二者相等,则输出两个学生的全部信息。

#include <stdio.h>

struct student
{
    
    
    int xuehao;
    char name[30];
    float chengji;
} a, b;

int main()
{
    
    
    printf("请输入第一个学生的学号、姓名和成绩:\n");
    scanf("%d,%s,%f", &a.xuehao, a.name, &a.chengji);
    printf("请输入第二个学生的学号、姓名和成绩:\n");
    scanf("%d,%s,%f", &b.xuehao, b.name, &b.chengji);
    printf("成绩较高者的信息如下:\n");
    
    if (a.chengji > b.chengji)
        printf("%d\t%s\t%f\n", a.xuehao, a.name, a.chengji);
    else if (a.chengji < b.chengji)
        printf("%d\t%s\t%f\n", b.xuehao, b.name, b.chengji);
    else
    {
    
    
        printf("%d\t%s\t%f\n", a.xuehao, a.name, a.chengji);
        printf("%d\t%s\t%f\n", b.xuehao, b.name, b.chengji);
    }

    return 0;
}

运行结果:
在这里插入图片描述

2.结构体数组

例 1:有三名学生的 3 项信息:学号、姓名和成绩。请编程按成绩由高到低输出各学生的信息。

#include <stdio.h>

struct student
{
    
    
    int xuehao;
    char name[30];
    float chengji;
} xuesheng[3] = {
    
    {
    
    001, "HouBoShi", 99}, {
    
    002, "ShaPaoZi", 20}, {
    
    003, "ShaLeBaJi", 90}};

int main()
{
    
    
    struct student linshi;

    int i, j;
    for (i = 0; i < 2; i++)
    {
    
    
        for (j = i + 1; j < 3; j++)
        {
    
    
            if (xuesheng[j].chengji > xuesheng[i].chengji)
            {
    
    
                linshi = xuesheng[i];
                xuesheng[i] = xuesheng[j];
                xuesheng[j] = linshi;
            }
        }
    }

    printf("排序后的各学生信息如下:\n");
    for (i = 0; i < 3; i++)
    {
    
    
        printf("%d\t%s\t%f\n", xuesheng[i].xuehao, xuesheng[i].name, xuesheng[i].chengji);
    }

    return 0;
}

运行结果:
在这里插入图片描述

3.使用结构体变量与指针变量

例 1:键盘输入五名学生的信息(包括学号、姓名和 2 门课程的成绩),并输出平均分最高的学生的信息。

#include <stdio.h>

struct student
{
    
    
    int xuehao;
    char name[30];
    float fen1;
    float fen2;
} sheng[5];

int main()
{
    
    
    struct student max(struct student a[]);
    struct student xueba;
    int i;

    for (i = 0; i <= 4; i++)
    {
    
    
        printf("请输入第%d 名学生的学号、姓名和 2 门成绩:\n", i + 1);
        scanf("%d,%s,%f,%f", &sheng[i].xuehao, sheng[i].name, &sheng[i].fen1, &sheng[i].fen2);
    }

    xueba = max(sheng);

    printf("平均分最高的学生的信息如下:\n");
    printf("学号:%d\n 姓名:%s\n2 门成绩:%f,%f\n", xueba.xuehao, xueba.name, xueba.fen1, xueba.fen2);

    return 0;
}

struct student max(struct student a[])
{
    
    
    float pingjunfen[5];
    int i, zuigao;

    for (i = 0; i <= 4; i++)
    {
    
    
        pingjunfen[i] = (a[i].fen1 + a[i].fen2) / 2;
    }

    for (zuigao = 0, i = 1; i <= 4; i++)
    {
    
    
        if (pingjunfen[zuigao] < pingjunfen[i])
        {
    
    
            zuigao = i;
        }
    }

    return (a[zuigao]);
}

运行结果:在这里插入图片描述

4.结构体变量做函数参数

例 1:把一个学生的信息(包括学号、姓名、性别 3 项信息)放在一个结构体变量中,然后输出这个学生的信息。

#include <stdio.h>

struct student
{
    
    
    int xuehao;
    char name[30];
    char xingbie;
} a = {
    
    001, "Houge", 'M'};

int main()
{
    
    
    struct student *p;
    p = &a;

    printf("学号:%d\n 姓名:%s\n 性别:%c\n", p->xuehao, p->name, p->xingbie);
    return 0;
}

运行结果:
在这里插入图片描述

例 2:有三名学生的 3 项信息:学号、姓名和成绩。请编程按成绩由高到低输出各学生的信息。

#include <stdio.h>

struct student
{
    
    
    int xuehao;
    char name[30];
    float chengji;
} xuesheng[3] = {
    
    {
    
    001, "HouBoShi", 99}, {
    
    002, "ShaPaoZi", 20}, {
    
    003, "ShaLeBaJi", 90}};

int main()
{
    
    
    struct student linshi, *p;
    p = &xuesheng[0];
    int i, j;
    for (i = 0; i < 2; i++)
    {
    
    
        for (j = i + 1; j < 3; j++)
        {
    
    
            if ((*(p + j)).chengji > (*(p + i)).chengji)
            {
    
    
                linshi = *(p + i);
                *(p + i) = *(p + j);
                *(p + j) = linshi;
            }
        }
    }

    printf("排序后的各学生信息如下:\n");
    for (i = 0; i < 3; i++)
    {
    
    
        printf("%d\t%s\t%f\n", (*(p + i)).xuehao, (*(p + i)).name, (*(p + i)).chengji);
    }
    return 0;
}

运行结果:
在这里插入图片描述

七天完结,本专栏只是根据所学进行整合,可不能作为学会C语言的依据哦,请大家期待下一个专栏~

猜你喜欢

转载自blog.csdn.net/m0_53918860/article/details/133186975