c语言 结构体 简单实例

结构体

简单例子

要求:
结构体保存学生信息操作

代码
#include <stdio.h>

//定义结构体
struct student{
    int ID;
    char name[20];
    char sex;
    char birthday[8];
    int grade;
};

int main(){
    int number;
    printf("请输入学生个数:");
    scanf("%d", &number);
    //声明结构体变量
    struct student stu[number];
    //输入数据
    for (int i=0; i<number; ++i){
        printf("请输入(每个数据用空格隔开):");
        scanf("%d %s %s %s %d", &stu[i].ID, &stu[i].name, &stu[i].sex, &stu[i].birthday, &stu[i].grade);
    }
    printf("--------------------------------\n");
    for (int i=0; i<number; ++i){
        printf("学号:%d\t姓名:%s\t性别:%c\t  出生日期:%s\t成绩:%d\n",stu[i].ID, stu[i].name, stu[i].sex, stu[i].birthday, stu[i].grade);
    }
    return 0;
}
运行效果

在这里插入图片描述

课堂作业

要求:
对结构体操作:输入数据,查找数据,插入数据,删除数据,合并数据比进行排列输出

代码
#include <stdio.h>
#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int length;
} SeqList;

//初始化操作
void init(SeqList *list) {
    list->length = 0;
}

//插入操作
void insert(SeqList *list, int pos, int value) {
    if (pos < 1 || pos > list->length + 1) {
        printf("插入位置错误\n");
        return;
    }

    if (list->length >= MAX_SIZE) {
        printf("顺序表已满,无法插入\n");
        return;
    }

    for (int i = list->length; i >= pos; i--) {
        list->data[i] = list->data[i - 1];
    }

    list->data[pos - 1] = value;
    list->length++;
}

//查找操作
int find(SeqList *list, int value) {
    for (int i = 0; i < list->length; i++) {
        if (list->data[i] == value) {
            return i;
        }
    }
    return -1;
}

//展示操作
void display(SeqList *list) {
    for (int i = 0; i < list->length; i++) {
        printf("%d ", list->data[i]);
    }
    printf("\n");
}

//删除操作
void del(SeqList *list, int del_value){
    if (list->length==0){
        printf("线性表为空!\n");
        return;
    }

    int temp=0;
    for(int i=0; i<list->length; i++){
        if(list->data[i] != del_value){
            list->data[temp] = list->data[i];
            temp++;
        }
    }
    list->length = temp;

}

//合并操作,降序排列
void merge_sort(SeqList *L_A, SeqList *L_B, SeqList *L_C){
    int k=0;

    for (int i = 0; i < L_A->length; i++) {
        L_C->data[k] = L_A->data[i];
        k++;
        L_C->length++;
    }

    for (int j = 0; j < L_B->length; j++) {
        L_C->data[k] = L_B->data[j];
        k++;
        L_C->length++;
    }

    //冒泡排序
    for(int x=0; x <= L_C->length -1; x++){
        for(int y=0; y <= L_C->length-x; y++)
        {
            if(L_C->data[y] < L_C->data[y+1])
            {
                int temp = L_C->data[y];
                L_C->data[y] = L_C->data[y+1];
                L_C->data[y+1] = temp;
            }
        }
    }
}

//升序排列
void merge_ascending(SeqList *L_C, SeqList *L_D){
    int i=0;
    for(int k=L_C->length-1; k>=0; k--){
        L_D->data[k] = L_C->data[i];
        L_D->length++;
        i++;
    }
}

int main() {
    //声明结构体变量
    SeqList L_A;
    SeqList L_B;
    SeqList L_C;
    SeqList L_D;
    //初始化
    init(&L_A);
    init(&L_B);
    init(&L_C);
    init(&L_D);

    // 用户输入数据
    printf("请输入数据(每输入一个数据后回车,输入777可结束):\n");
    for (int i = 0; i < MAX_SIZE; i++) {
        int data_value;
        scanf("%d", &data_value);
        if(data_value == 777){
            break;
        }
        L_A.data[i] = data_value;
        L_A.length++;
    }

    // 默认查找数据 4,并输出数据4的位置
    int index = find(&L_A, 4);
    if (index != -1) {
        printf("找到数据 4,位置为:%d\n", index + 1);
    } else {
        printf("未找到数据 4\n");
    }

    // 在第四个位置上插入数据 100
    int in_value;
    printf("请输入要插入的数字:\n");
    scanf("%d", &in_value);
    insert(&L_A, index+1, in_value);

    // 展示数据表结果
    display(&L_A);

    // 删除操作
    printf("请输入删除的数字:\n");
    int del_value;
    scanf("%d",&del_value);
    del(&L_A, del_value);

    // 展示数据表结果
    display(&L_A);

    // 输入第二个数据表并进行合并操作
    printf("请输入第二个数据表的数据,(每输入一个数据后回车,输入777可结束)\n");
    for (int i = 0; i < MAX_SIZE; i++) {
        int data_value;
        scanf("%d", &data_value);
        if(data_value == 777){
            break;
        }
        L_B.data[i] = data_value;
        L_B.length++;
    }
    printf("第二个数据表的数据为:\n");
    display(&L_B);
    printf("\n");

    //降序排列
    printf("降序排列为:\n");
    merge_sort(&L_A, &L_B, &L_C);
    //展示数据表结果
    display(&L_C);

    printf("\n");
    //升序排列
    printf("升序排列为:\n");
    merge_ascending(&L_C, &L_D);
    // 展示数据表结果
    display(&L_D);
    return 0;
}
运行效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/124666.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java入门,记一次mysql函数使用

一、前言 记一次mysql函数使用&#xff0c;要求给一个字段进行拼接&#xff0c;然后MD5加密&#xff0c;再转换成大写。这里都是有现成的函数&#xff0c;所以记录下来 二、函数使用 1、拼接函数&#xff1a; concat(字符串1,字符串2) select concat(字符串1,字符串2); 2、…

【Linux】:git基本操作_添加文件_两种场景_查看.git文件 || git修改文件 || 版本回退

&#x1f3af;添加⽂件–场景⼀ &#x1f3af;在包含.git的⽬录下新建⼀个ReadMe⽂件&#xff0c;我们可以使⽤ git add 命令可以将⽂件添加到暂存区&#xff1a; • 添加⼀个或多个⽂件到暂存区&#xff1a; git add [file1] [file2] … • 添加指定⽬录到暂存区&#xff0c;…

Tomcat,jdk下载配置(发布项目)

Tomcat&#xff0c;jdk下载&#xff0c; 远程连接 启动以下服务 高级设置 允许别人连接进来 网上搜索jdk下载即可 双击下一步即可 下一步 输入java&#xff0c;看有没有安装成功 这是安装成功的 Tomcat就可以安装了 和以上操作一样&#xff0c;在网上下载安装包&#xff0c;…

11月9日星期四今日早报简报微语报早读

11月9日星期四&#xff0c;农历九月廿六&#xff0c;早报微语早读。 1、中国数字经济规模十年增至50.2万亿元&#xff0c;网民规模增至10.79亿&#xff1b; 2、世界互联网发展指数排名发布&#xff1a;中国位居第二&#xff1b; 3、中国—拉美开发性金融合作机制扩容&#x…

【Mysql】where 条件子句之逻辑运算符

逻辑运算符 and &&or ||not ! student表 一.查询分数在80 - 90之间 and写法 &&写法 区间&#xff08;between ....and......) 二.查询分数不为88 &#xff01;写法 not写法 三.查询分数大于88或者年龄小于22 满足其中一个条件即可 or写法 ||写法

CocosCreator3.8原生引擎源码研究

1. Cocos Creator引擎架构图 2. 原始引擎源码流程图 下图中包含Android native层引擎到js适配层的启动和主循环的启用流程和必要说明&#xff0c;本猿比较懒&#xff0c;暂时不细述了&#xff0c;各位看官直接看图吧&#xff0c;还在细化扩充&#xff0c;后续逐渐更新。。。 版…

润色论文Prompt

你好&#xff0c;我现在开始写论文了&#xff0c;我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx&#xff0c;我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…

【阿里云】任务2-OSS对象存储教程(找我参加活动可获得京东卡奖励)

目录 前言说明第一步第二步第三步&#xff1a;开通并使用OSS传输加速三、清理第四步-提交作品第五步-提交记录到小程序 前言 本次任务是阿里云官方发出的&#xff0c;每个任务30软妹币&#xff0c;欢迎大家加入我的活动群&#xff0c;门槛很低&#xff0c;所有人都可以参加&…

CSS实现文本左右对齐

因为文本里面有中午符号&#xff0c;英文&#xff0c;英文符号等&#xff0c;导致设置宽度以后右侧凌乱&#xff0c;可以通过以下代码设置样式&#xff0c;让文本工整对齐。 让我们看一下设置前和设置后的对比图片&#xff1a; 效果图如下&#xff1a;&#xff08;左边是设置…

小程序多文件上传 Tdesign

众所周知&#xff0c;小程序文件上传还是有点麻烦的&#xff0c;其实主要还是小程序对的接口有诸多的不便&#xff0c;比如说&#xff0c;文件不能批量提交&#xff0c;只能一个个的提交&#xff0c;小程序的上传需要专门的接口。 普通的小程序的页面也比普通的HTML复杂很多 现…

广和通5G模组FM650助力阿里云打造无影魔方Pro

随着云基础设施的完善及云电脑体验的不断优化&#xff0c;越来越多的个人和企业选择无影云电脑进行办公。基于云原生的云网端技术架构&#xff0c;无影云电脑相比传统PC&#xff0c;具有弹性、安全、保障个人数据等产品优势。 10月31日&#xff0c;阿里云在杭州云栖大会上宣布…

Java —— 类和对象(二):封装与内部类

1. 封装 1.1 封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&#xff1f;简单来说就是套壳屏蔽细节。 我们从另一个角度去看封装: 比如我们的电脑或者手机, 我们看到的是一个包装的非常精致的东…

Flutter案例日程安排首页效果 Lottie动画与Shimmer实现的微光效果

案例效果&#xff1a; Flutter使用的版本 3.13.8&#xff0c;使用fvm管理版本。 加载动态地图示例&#xff0c;使用的是 lottie。 Container buildMapWidget() {return Container(height: 360,padding: const EdgeInsets.only(top: 100, right: 40, left: 40, bottom: 50),de…

基于QT使用OpenGL,加载obj模型,进行鼠标交互

目录 功能分析&#xff08;需求分析&#xff09;技术点分析OpenGL立即渲染模式可编程渲染管线模式 QOpenGLWidget派生类 glwidget逻辑glwidget.hglwidget.cpp 鼠标交互功能obj格式介绍 效果bunnyCayman_GT 功能分析&#xff08;需求分析&#xff09; 基于QT平台&#xff0c;使…

[工业自动化-5]:西门子S7-15xxx编程 - PLC系统初识别 :PLC概述与发展史

目录 前言&#xff1a; 一、PLC的由来&#xff1a;自动化产线的大脑 二、PLC发展史 三、常见的PLC厂家&#xff1a;欧洲日本 四、PLC VS 电脑 4.1 PLC VS CPU 4.2 PLC VS 单片机 4.3 PLC VS 工控机 五、PLC系统组成 参考&#xff1a; 前言&#xff1a; 一、PLC的由来…

docker部署redis6

前言&#xff1a;在离线服务器上&#xff08;无联网&#xff09;&#xff0c;部署redis的方式&#xff0c;采用docker是比较方便的。下面将描述如何使用docker部署单机版redis 环境&#xff1a;centos 7 redis&#xff1a;6.2.14 docker&#xff1a;20.10.9 1.下载 redis 镜像…

【Hugging Face】如何下载模型文件

参考文章&#xff1a; 1、mac安装Homebrew - 知乎 2、 ssh连接 git lfs install git clone githf.co:bert-base-uncased -- 安装Homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" -- 配置文件生效 source /Use…

electron+vite+vue3项目打包

1.安装打包依赖&#xff0c;调整打包命令 npm install electron-builder -D 2.安装完成后&#xff0c;在 package json 中&#xff0c;配置 build 命令 "build": "vite build && electron-builder", 3.electron/index.js修改 win.loadURL 中…

HTTP协议详解-下(Tomcat)

如何构造 HTTP 请求 对于 GET 请求 地址栏直接输入点击收藏夹html 里的 link script img a…form 标签 通过 form 标签构造GET请求 <body><!-- 表单标签, 允许用户和服务器之间交互数据 --><!-- 提交的数据报以键值对的结果来组织 --><form action&quo…

人工智能模型转ONNX 连接摄像头使用ONNX格式的模型进行推理

部署之后模型的运算基本上能快5倍。本地部署之后&#xff0c;联网都不需要&#xff0c;数据和隐私不像在网上那样容易泄露了。 模型部署的通用流程 各大厂商都有自己的推理工具。 训练的归训练&#xff0c;部署的归部署&#xff0c;人工智能也分训练端和部署端&#xff0c;每一…