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

《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.xdnf.cn/news/17615.html

相关文章:

  • 如何回收内存对象,有哪些回收算法?
  • Fish shell的abbr命令行参数介绍和Bat文件查看工具
  • 【QT】常⽤控件详解(七)容器类控件 GroupBox TabWidget 布局管理器 Spacer
  • 深度学习-卷积神经网络CNN-AlexNet
  • LeetCode 括号生成
  • Hadoop MapReduce过程
  • LeetCode - 搜索插入位置 / 排序链表
  • (LeetCode 面试经典 150 题) 104. 二叉树的最大深度 (深度优先搜索dfs)
  • 【Docker实战入门】从核心概念到镜像构建
  • JavaScript的 fetch() 方法 笔记250810
  • CSS优先级、HTTP响应状态码
  • Android的事件分发流程、Kotlin协程、4大组件、Handler机制、架构设计、性能优化、内存泄漏
  • 第4章 程序段的反复执行2while语句P128练习题(题及答案)
  • 智慧农业-无人机视角庄稼倒伏农作物倒伏检测数据集VOC+YOLO格式541张1类别
  • VSCode添加Python、Java注释技巧、模板
  • 疏老师-python训练营-Day40训练和测试的规范写法
  • NumPy性能飞跃秘籍:向量化计算如何提升400倍运算效率?
  • istio笔记03--快速上手多集群mesh
  • 【C语言】深入探索预处理
  • Matlab 基于BP神经网络结合Bagging(BP-Bagging)集成算法的单变量时序预测 (单输入单输出)
  • 带冷端补偿的热电偶采集方案MAX31855
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • 【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
  • C++2024 年一级
  • Cursor设置
  • 【机器学习深度学习】模型选型:如何根据现有设备选择合适的训练模型
  • 【面试场景题】微博热点新闻系统设计方案
  • 一个“加锁无效“的诡异现象
  • #C语言——刷题攻略:牛客编程入门训练(七):分支控制(一)-- 涉及 %c前加空格:忽略起首的空白字符
  • Spring Boot Starter 自动化配置原理深度剖析