当前位置: 首页 > news >正文

《C语言》结构体和联合体练习题--1

《C语言》结构体和联合体练习题–1

1. 定义和初始化结构体

题目描述:
编写一个C程序,定义一个名为Person的结构体,包含成员name(字符串)、age(整数)和height(浮点数)。然后,初始化一个Person类型的变量,并输出其成员的值。

解题思路:
首先,定义一个结构体Person,包含所需的成员。然后,在主函数中声明一个Person变量,并使用初始化列表为其成员赋值。最后,使用printf函数输出各成员的值。

详细代码:

#include <stdio.h>// 定义结构体Person
struct Person {char name[50];int age;float height;
};int main() {// 初始化结构体变量struct Person person = {"Alice", 30, 5.6f};// 输出结构体成员的值printf("姓名: %s\n", person.name);printf("年龄: %d\n", person.age);printf("身高: %.1f 英尺\n", person.height);return 0;
}

代码注释:

  • struct Person:定义一个结构体类型Person,包含nameageheight三个成员。
  • char name[50];:声明一个字符数组用于存储姓名,最大长度为49个字符(留出一个字符用于字符串结束符\0)。
  • struct Person person = {"Alice", 30, 5.6f};:使用初始化列表为结构体变量person的成员赋值。
  • printf:分别输出结构体成员的值。

2. 访问结构体成员

题目描述:
编写一个C程序,定义一个结构体Rectangle,包含成员lengthwidth(均为浮点数)。输入一个Rectanglelengthwidth,计算并输出其面积和周长。

解题思路:
定义结构体Rectangle,包含lengthwidth。在主函数中声明一个Rectangle变量,使用scanf函数读取用户输入的长度和宽度。然后,计算面积(length × width)和周长(2 × (length + width)),并输出结果。

详细代码:

#include <stdio.h>// 定义结构体Rectangle
struct Rectangle {float length;float width;
};int main() {struct Rectangle rect;float area, perimeter;// 输入长度和宽度printf("请输入矩形的长度: ");scanf("%f", &rect.length);printf("请输入矩形的宽度: ");scanf("%f", &rect.width);// 计算面积和周长area = rect.length * rect.width;perimeter = 2 * (rect.length + rect.width);// 输出结果printf("矩形的面积是: %.2f\n", area);printf("矩形的周长是: %.2f\n", perimeter);return 0;
}

代码注释:

  • struct Rectangle:定义一个结构体类型Rectangle,包含lengthwidth两个浮点数成员。
  • scanf:读取用户输入的长度和宽度,并存储到结构体变量rect的相应成员中。
  • areaperimeter:计算并存储面积和周长。
  • printf:输出计算结果。

3. 嵌套结构体

题目描述:
编写一个C程序,定义两个结构体DateEmployeeDate包含成员daymonthyearEmployee包含成员name(字符串)、id(整数)和birthdate(类型为Date的结构体)。输入一个员工的详细信息,并输出。

解题思路:
首先,定义结构体DateEmployee,其中Employee包含一个Date类型的成员birthdate。在主函数中声明一个Employee变量,使用嵌套的scanf函数读取员工的姓名、ID和生日。最后,使用printf函数输出员工的详细信息。

详细代码:

#include <stdio.h>// 定义结构体Date
struct Date {int day;int month;int year;
};// 定义结构体Employee,包含Date类型的成员birthdate
struct Employee {char name[50];int id;struct Date birthdate;
};int main() {struct Employee emp;// 输入员工姓名printf("请输入员工姓名: ");fgets(emp.name, sizeof(emp.name), stdin);// 去除换行符int i = 0;while(emp.name[i] != '\0') {if(emp.name[i] == '\n') {emp.name[i] = '\0';break;}i++;}// 输入员工IDprintf("请输入员工ID: ");scanf("%d", &emp.id);// 输入员工生日printf("请输入员工生日(格式: 日 月 年): ");scanf("%d %d %d", &emp.birthdate.day, 
http://www.dtcms.com/a/324666.html

相关文章:

  • ROS2 学习笔记
  • 基于百度地图API的社区地图展示技术实现
  • 初识STL
  • ADB简介
  • 【redis初阶】--------Set 集合类型
  • Baumer高防护相机如何通过YoloV8深度学习模型实现道路坑洼的检测识别(C#代码UI界面版)
  • Linux操作系统从入门到实战(十六)冯诺依曼体系结构,操作系统与系统调用和库函数概念
  • API 接入终极指南:实时掌握京东商品动态
  • openpnp - 顶部相机如果超过6.5米影响通讯质量,可以加USB3.0信号放大器延长线
  • SpringAI报错:com.github.victools.jsonschema.generator.AnnotationHelper
  • 北京-4年功能测试2年空窗-报培训班学测开-第七十二天
  • Langchain入门:构建一个本地RAG应用
  • 《Go小技巧易错点100例》第三十七篇
  • 深度解析Linux设备树(DTS):设计原理、实现框架与实例分析
  • 阿里云ECS云服务器临时升级带宽方法
  • JP3-4-MyClub后台前端(三)
  • 胖虎的菜品
  • 一劳永逸解决Mayplotlib绘图中中文字体显示乱码的问题
  • 嵌入式软件分层架构的设计原理与实践验证(有限状态机理解及结构体封装理解)
  • 进度、质量、安全的关系随笔
  • 力扣面试150(52/150)
  • NY155NY170美光固态闪存NY175NY184
  • Zabbix优化指南:提升监控效率与性能
  • Pytorch深度学习框架实战教程-番外篇07-Pytorch优化器详解和实战指南
  • 机器学习——DBSCAN
  • 【人工智能99问】LLaMA的训练过程和推理过程是怎么样的?(22/99)
  • 【GPT入门】第43课 使用LlamaFactory微调Llama3
  • AI大模型提示词工程完全指南:从入门到精通
  • 【自用】JavaSE--IO流(二)--缓冲流、转换流、打印流、数据流、序列化流、IO框架
  • 硬件开发_基于STM32单片机的智能电梯系统