首页 > 其他分享 >七天学会C语言-第七天(结构体)

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

时间:2023-09-22 22:01:51浏览次数:36  
标签:七天 name int chengji struct C语言 printf xuehao 第七天

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

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

运行结果:

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

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

运行结果:

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

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

运行结果:

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

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]);
}

运行结果:

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

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

运行结果:

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

例 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语言-第七天(结构体)_#include_07

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

标签:七天,name,int,chengji,struct,C语言,printf,xuehao,第七天
From: https://blog.51cto.com/u_15747017/7572350

相关文章

  • C语言学习-- ~ 按二进制取位 前置后置++ 关系操作符 逻辑操作符
    #include<stdio.h>//~按二进制取位intmain(){inta=10;intb=~a;/*~按二进制取位如101--~=010*/printf("%d\n%d\n",a,b);/*运行a=10b=-11在二进制里的最高位表示符号位,0为正1为负(3=000…………011)源码......
  • C语言学习-- ~ 按二进制取位 前置后置++ 关系操作符 逻辑操作符
    #include<stdio.h>//~按二进制取位intmain(){inta=10;intb=~a;/*~按二进制取位如101--~=010*/printf("%d\n%d\n",a,b);/*运行a=10b=-11在二进制里的最高位表示符号位,0为正1为负(3=000…………011)源码......
  • 【三子棋】——玩家VS电脑(C语言实现)
    (文章目录)前言三子棋是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。:pig:好了话不多说,现在我就带大家......
  • c语言双指针法--原地删除数组中的元素
     27.移除元素-力扣(LeetCode) intremoveElement(int*nums,intnumsSize,intval){intleft=0;intright=0;while(right<numsSize){if(nums[right]!=val){nums[left]=nums[right];left++;}......
  • c语言-关键字static
    局部变量:运行周期=函数的运行周期全局变量:运行周期=整个程序的运行周期(程序可以是多个.c文件组成)static可以修饰:1、局部变量(函数内定义的)2、全局变量(函数外定义的) 3、函数1.修饰局部变量->静态局部变量:开辟存储空间。在编译的过程中,会在数据区为该变量开辟空间,并对其进行......
  • c语言 qsort函数的使用
    #include<iostream>#include<stdio.h>voidprinfArray(int*nums,intsize){for(inti=0;i<size;i++){printf("%d",nums[i]);}printf("\n");}intcompare(voidconst*a,voidconst*......
  • 七天学会C语言-第六天(指针)
    1.指针变量与普通变量指针变量与普通变量是C语言中的两种不同类型的变量,它们有一些重要的区别和联系。普通变量是一种存储数据的容器,可以直接存储和访问数据的值。:intnum=10;//定义一个整数型普通变量num,赋值为10在例子中,变量num是一个普通整数变量,它直接存储了值10。指针变......
  • 学习C语言的第八天
    今天没有学新内容,把前两天的代码又回味了下,发现有几个还是算不上理解,只能说是背住了,不知道有没有大佬会看到我写的东西,如果看到了,能不能告诉我一下,像一些不容易理解的代码,我背住它有用吗?写一个代码让电脑关机#include<windows.h>#include<stdio.h>#include<string.h>intmain()......
  • C语言中整形的大小端存储
    (C语言中整形的大小端存储)1.案例引入众所周知,在IDEVisualstudio中,调试后可以在内存窗口中看见程序中一些变量的地址以及值我们这里将一个16进制数字0x12345678存到内存中intmain(){ inta=0x12345678; return0;}按下F10后进入调试,打开内存窗口,找到变量a的地址,......
  • C语言-数据结构之顺序表
    #include<stdio.h>#defineN128typedefintdata_type;typedefstruct{ data_typedata[N]; intlast;}sqlist;sqlist*list_create();intlist_show(sqlist*L);intlist_clear(sqlist*L);intlist_destory(sqlist*L);intlist_empty(sqlist*L......