c语言200例 066

大家好,欢迎来到无限大的频道

今天给大家带来的是c语言200例。

要求:
根据输入的职业表示,区分是老师还是学生,然后根据输入的信息,将对应的信息输出,如果是学生,则输出班级,如果是老师则输出职位。其中“s”表示学生,“t”表示老师

#include <stdio.h>
#include <string.h>// 定义共用体,用于存储学生或老师的信息
typedef union {struct {char class[50];  // 学生的班级} student;struct {char title[50];  // 老师的职位} teacher;
} PersonInfo;// 定义枚举类型,以更好地表示身份
typedef enum {STUDENT,TEACHER
} PersonType;int main() {PersonInfo person;PersonType type;char input[10];// 用户输入身份类型printf("请输入身份类型(s表示学生,t表示老师):");scanf("%s", input);// 判断身份并输入相应信息if (strcmp(input, "s") == 0) {type = STUDENT;printf("请输入班级:");scanf("%s", person.student.class);printf("学生班级: %s\n", person.student.class);} else if (strcmp(input, "t") == 0) {type = TEACHER;printf("请输入职位:");scanf("%s", person.teacher.title);printf("老师职务: %s\n", person.teacher.title);} else {printf("输入错误,请输入's'或't'.\n");}return 0;
}

在这里插入图片描述

在 C 语言中,共用体(Union)是一种数据类型,它允许在同一内存位置储存不同的数据类型。共用体的大小是其最大成员的大小,这使它非常节省内存。共用体的一个主要作用是实现内存的共享,提供了一种灵活的数据管理方式,尤其在需要处理不同类型数据时非常有用。

代码解释:

  1. 共用体定义:我们定义了一个 PersonInfo 的共用体,它包含两个结构体:一个用于学生(带有班级信息),另一个用于老师(带有职位信息)。
  2. 枚举类型PersonType 枚举类型帮助我们在程序中清晰地表示是学生还是老师。
  3. 输入身份信息:程序首先询问用户的身份(学生或老师)。根据输入,程序会提示用户输入班级或职位,并相应地存储在共用体中。
  4. 输出信息:根据输入的身份,输出班级或职位的信息。

共用体的作用:

  • 内存共享:同一个内存地点用于储存不同数据,节省内存。
  • 多态性:能够根据需求存储多种类型数据,使程序更加灵活。

下面是更新拓展后的代码,它允许用户持续输入学生或老师的信息,并在每次输入时要求输入姓名。用户可以选择打印所有存储的内容,并且提供了退出程序的选项。

#include <stdio.h>
#include <string.h>#define MAX_RECORDS 100// 定义共用体,用于存储学生或老师的信息
typedef union {struct {char name[50];  // 学生的姓名char class[50]; // 学生的班级} student;struct {char name[50];  // 老师的姓名char title[50]; // 老师的职位} teacher;
} PersonInfo;// 定义枚举类型,以更好地表示身份
typedef enum {STUDENT,TEACHER
} PersonType;int main() {PersonInfo records[MAX_RECORDS];PersonType types[MAX_RECORDS];int count = 0;char input[10];while (1) {// 用户输入身份类型printf("请输入身份类型(s表示学生,t表示老师,q表示退出):");scanf("%s", input);if (strcmp(input, "q") == 0) {break; // 退出循环}if (count >= MAX_RECORDS) {printf("已达到记录上限,无法输入更多信息。\n");continue;}if (strcmp(input, "s") == 0) {types[count] = STUDENT;printf("请输入姓名:");scanf("%s", records[count].student.name);printf("请输入班级:");scanf("%s", records[count].student.class);count++;} else if (strcmp(input, "t") == 0) {types[count] = TEACHER;printf("请输入姓名:");scanf("%s", records[count].teacher.name);printf("请输入职位:");scanf("%s", records[count].teacher.title);count++;} else {printf("输入错误,请输入's'、't'或'q'。\n");continue;}// 选择打印所有存储的内容char printChoice[10];printf("是否要打印所有记录? (yes/no): ");scanf("%s", printChoice);if (strcmp(printChoice, "yes") == 0) {for (int i = 0; i < count; i++) {if (types[i] == STUDENT) {printf("学生姓名: %s, 班级: %s\n", records[i].student.name, records[i].student.class);} else if (types[i] == TEACHER) {printf("老师姓名: %s, 职位: %s\n", records[i].teacher.name, records[i].teacher.title);}}}}return 0;
}

在这里插入图片描述

代码解释:

  1. 循环输入:使用 while (1) 永远循环,直到用户输入 q 退出。
  2. 记录存储:使用数组 records 来存储每次输入的学生和老师信息,同时使用 types 数组来记录每条记录的类型(学生或老师)。
  3. 姓名输入:在输入学生或老师信息时,增加了姓名字段的输入。
  4. 打印选择:在每次输入后,询问用户是否要打印所有存储的记录。
  5. 限制记录数量:设置了最大记录数量 MAX_RECORDS,防止在内存中存储过多记录。

这种结构使得程序更加灵活且用户友好,允许多个输入和查询,同时保持存储的信息清晰地组织。

(当然你可以选择继续优化)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子连接器信号完整性仿真实训教程 一

电子连接器信号完整性仿真学习除需要熟悉软件的基本操作外&#xff0c;还需要基本的实际操作练习才能完全掌握&#xff0c;学以致用。因此推出几期实训教程&#xff0c;教程中将不再详细讲怎么一步一步操作软件&#xff0c;重点讲一些步骤&#xff0c;及一些技巧。也会将连接器…

人工值守向无人值守转变的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用…

OpenCV图像文件读写(4)解码图像数据函数imdecode()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从内存缓冲区读取图像。 imdecode 函数从指定的内存缓冲区读取图像。如果缓冲区太短或包含无效数据&#xff0c;函数将返回一个空矩阵 (Mat::dat…

基于STM32的无人驾驶汽车路径规划与视觉识别系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 摄像头图像采集与处理路径规划算法实现实时视觉障碍物检测电机控制与执行应用场景结论 1. 引言 无人驾驶技术是当前自动化和人工智能领域的热门课题之一&#xff0c;涉及到复杂的感知、…

(二)Mat类

构造函数 Mat m(3, 2, CV_8UC3, Scalar(0, 0, 255)); std::cout << m << std::endl;创建一个行数为3&#xff0c;列数为2&#xff0c;图像元素是8位无符号整型&#xff0c;且有3个通道&#xff0c;图像所有像素值被初始化为(0,0,255) opencv中默认的颜色顺序为BGR…

第五十八周周报 FE-GNN

文章目录 week58 FE-GNN摘要Abstract一、大数据相关1. 完全分布式zookeeper2. 污水处理过程2.1 污水处理的基本方法2.2 污水处理基本工艺流程 二、文献阅读1. 题目2. Abstract3. 文献解读3.1 Introduce3.2 创新点 4. 网络框架4.1 特征子空间平坦化4.2 结构化主成分4.3 结论 5. …

OJ在线评测系统 前端创建题目(增) 更新题目(改) 题目列表(查) 以及做题页面的开发 基于VUECLI脚手架画界面

目录 前端创建页面的开发一 创建一个路由 用acro design写 前端创建页面的开发二 题目管理页面 搜索 最終效果 题目更新页面的开发 携带参数的那种 修改路由 页码更新细节 我们先处理菜单项的权限控制和权限隐藏 在这里改 属性绑定一个函数 可以参考聚合搜索项目…

Spring Boot项目连接Oracle数据库启动报错:Undefined Error

描述&#xff1a;远程拉下来的代码&#xff0c;配置了maven仓库后&#xff0c;未进行其他修改&#xff0c;自己本地启动报错。 报错现状&#xff1a; 解决&#xff1a;添加参数-Duser.nameuser后&#xff0c;启动成功。 原因分析&#xff1a; 分析一&#xff1a; maven仓…

第三节-类与对象(中)

1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类&#xff08;空类大小为1&#xff09;。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a;…

【html网页制作】旅游风景主题网页制作含css动画及js特效(8页面附效果源码)

HTMLCSS旅游风景主题旅游网页制作 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、网页主题&#x1f333;二、网页效果菜单切换效果PageA、整体页Page1、首页Page2、旅行趣事页Page3、旅行美景页Page4、旅行指南页Page5、旅行视频页Page6、留言页Page7、西湖简介…

论文阅读(十一):CBAM: Convolutional Block Attention Module

文章目录 1.Introduction2.Convolutional Block Attention ModuleExperimentsConclusion 论文题目&#xff1a;CBAM: Convolutional Block Attention Module&#xff08;CBAM&#xff1a;卷积注意力机制&#xff09;   论文链接&#xff1a;点击跳转   代码链接&#xff1a…

汽车3d动画渲染选择哪个?选择最佳云渲染解决方案

面临汽车3D动画渲染挑战&#xff1f;选择正确的云渲染服务至关重要。探索最佳解决方案&#xff0c;优化渲染效率&#xff0c;快速呈现逼真动画。 汽车3d动画渲染选择哪个&#xff1f; 对于汽车3D动画渲染&#xff0c;选择哪个渲染器取决于你的项目需求、预算和期望的效果。Ble…

Llama 3.1 技术研究报告-2

3.3 基础设施、扩展性和效率 我们描述了⽀持Llama 3 405B⼤规模预训练的硬件和基础设施&#xff0c;并讨论了⼏项优化措施&#xff0c;这些措施提⾼了训练效率。 3.3.1 训练基础设施 Llama 1和2模型在Meta的AI研究超级集群&#xff08;Lee和Sengupta&#xff0c;2022&#x…

探索存内计算的未来,高能效内存计算实训专场有感~

写在前面&#xff0c;首先感谢活动方&#xff1a;存内计算开发者社区的邀请来参加本次探索存内计算的未来&#xff0c;高能效内存计算实训专场。下面我给大家分享一下本次的活动实操感受&#x1f600;。 活动议程 本次活动邀请存内技术专家李阳老师分享存内计算是什么&#xf…

Subdominator:一款针对漏洞奖励计划的子域名安全枚举工具

关于Subdominator Subdominator是一款针对漏洞奖励计划的子域名安全枚举工具&#xff0c;可用于在漏洞搜寻和侦察过程中进行被动子域名枚举。它旨在通过高效枚举子域名和各种免费被动资源来帮助研究人员和网络安全专业人员发现潜在的安全漏洞。 Subdominator 与各种免费和付费…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24 1. Enriching Datasets with Demographics through Large Language Models: What’s in a Name? K AlNuaimi, G Marti, M Ravaut, A AlKetbi, A Henschel… - arXiv preprint arXiv …, 2024 通过大型语言…

python获取百度地图路径规划

自制语音助手想做一个查询交通路线的功能&#xff0c;于是就想到了百度地图。在百度地图的服务器端应用中&#xff0c;提供了“轻量级路线规划”API接口&#xff0c;正好可以满足需求。要用这个接口&#xff0c;需要注册百度地图账号并创建一个服务器端的应用。有关开通百度地图…

Docekrfile和docker compose编写指南及注意事项

Dockerfile 基础语法 我们通过编写dockerfile,将每一层要做的事情使用语法固定下来&#xff0c;之后运行指令就可以通过docker来制作自己的镜像了。 构建镜像的指令&#xff1a;docker build /path -t imageName:tag 注意&#xff0c;docker build后的path必须是dockerfile…

Selenium与数据库结合:数据爬取与存储的技术实践

目录 一、Selenium与数据库结合的基础概念 1.1 Selenium简介 1.2 数据库简介 1.3 Selenium与数据库结合的优势 二、Selenium爬取数据的基本步骤 2.1 环境准备 2.2 编写爬虫代码 2.3 数据提取 2.4 异常处理 三、数据存储到数据库 3.1 数据库连接 3.2 数据存储 3.3 …

网络编程(10)——json序列化

十、day10 今天学习如何使用jsoncpp将json数据解析为c对象&#xff0c;将c对象序列化为json数据。jsoncp经常在网络通信中使用&#xff0c;也就是服务器和客户端的通信一般使用json&#xff08;可视化好&#xff09;&#xff1b;而protobuf一般在服务器之间的通信中使用 json…