zoukankan
html css js c++ java
第九章 结构体与共用体
C程序设计实验报告
实验项目:
###9.3.1 结构体变量的应用 ###9.3.2 结构体数组的应用 ###9.3.3 共用体的应用 ###9.3.4 结构体指针的应用 ##姓名:罗龙妹 实验地点: 514实验室 实验时间:2019年6月26日 ##一、本章要点 - 结构体、联合体和枚举,要注意类型定义与变量定义的区别; - 若将结构变量作为函数的参数,它只是起传值作用; - 只有当函数的参数为指向结构型变量的指针时,才可以起到传址的作用; - 要认真的辨别变量到底是传值还是传址; - 结构类型的定义可以嵌套,结构类型与联合类型的定义也可以嵌套,只是要注意被嵌套的类型必须先有定义。
##二、实验目的与要求
###9.3.1 结构体变量的应用 - 定义结构体类型struct date,它含有年、月、日3个成员; - 定义struct date类型的变量,并从键盘输入初值; - 利用循环语句,计算天数; - 利用分支结构,判断闰年。 ###9.3.2 结构体数组的应用 - 定义候选人struct person结构体数组,含有姓名、得票数两个成员; - 定义struct person结构体数组,人数自定,初始票数为0; - 利用循环输入候选人名字,该人员票数加1; - 输入的候选人不是规定的候选人时,相当于废票,不累计。 ###9.3.3 共用体的应用 - 定义结构体类型,其成员有编号、姓名、职业和班级(或职务); - 定义该结构体类型的数组,可有若干个数组元素; - 利用该循环语句输入每条记录的数据,若该记录的职业为‘s’,则该记录是学生,输入该学生的班级;若该记录的职业是’t‘,则该记录是教师的,输入该教师的职务; - 根据记录的职业来判断,使用哪个printf()语句输出记录。 ###9.3.4 结构体指针的应用 - 定义结构体类型,其成员有人员编号、下一人员编号(地址); - 定义该结构体类型的数组,可有n个数组元素; - n个人围成一圈,可以考虑用结构体数组元素中的“下一人员编号”来实现,但最后一个元素的“下一人员编号”指向第一个。
##三、实验内容
##9.3.1 :结构体变量的应用 - 问题的简单描述:试利用结构体类型描述年、月、日,输入一个日期,统计该日期是该年度第多少天。 - 流程图如图所示:  - 实验代码1: ``` #include
main() { struct date { int year; int month; int day; }; struct date a; int i,days=0; printf("输入年,月,日:"); scanf("%d,%d,%d",&a.year,&a.month,&a.day); for(i=1;i

##9.3.2 :结构体数组的应用 - 问题的简单描述: 在选举中,假设有6位候选人,有10个人参加投票(只能对一位候选人投票),用结构体数据统计各候选人的得票数。 - 流程图如图所示:  - 实验代码: ``` #include
#include
struct person { char name[20]; int count; }a[6]={"zhang",0,"li",0,"wang",0,"zhao",0,"liu",0,"zhu",0}; main() { int i,j; char abc[20]; for(i=1;i<=10;i++) { printf("输入候选人:"); scanf("%s",abc); for(j=0;j<6;j++) if(strcmp(abc,a[j].name)==0) a[j].count++; } for(j=0;j<6;j++) printf("%s,%d ",a[j].name,a[j].count); } ``` 3问题分析:(重点分析在实验过程中出现的问题,及解决方法。) 这道题需要用到strcmp()比较函数进行比较来判断该候选人的票数是否要加1,若输入姓名与给定候选人名字相等,则对于的票数加1;若不相等,则为废票。 - 程序运行如下: 
##9.3.3:共用体的应用 - 问题的简单描述: 编写程序填写表格。从键盘输入学生和教师的信息,若是学生,则班级职务栏填写班级;若是教师,则班级职务栏填写职称。 - 流程图如图所示:  - 实验代码: ``` #include
#include
struct { int number; char name[30]; char job; union { int classes; char position[10]; }category; }person[2]; main() { int i; for(i=0;i<2;i++) { fflush(stdin); scanf("%d%s%s",&person[i].number,&person[i].name,&person[i].job); if(person[i].job=='s') { printf("请输入班级:"); scanf("%d",&person[i].category.classes); } else if(person[i].job=='t') { printf("请输入职业:"); scanf("%s",&person[i].category.position); } else { printf("input error!"); abort(); } } printf(" "); printf("编号 姓名 职业 班级/职务 "); for(i=0;i<2;i++) if(person[i].job=='s') printf("%d %s %c %d ",person[i].number,person[i].name,person[i].job,person[i].category.classes); else printf("%d %s %c %s ",person[i].number,person[i].name,person[i].job,person[i].category.position); } ``` - 问题分析:(重点分析在实验过程中出现的问题,及解决方法。) 首先这道题的示例输入与给出的实验代码在输入的编号、姓名、职业的顺序中不是对应的,然后我一开始也没搞懂这个程序输入的先后顺序,导致这道题一直运行不成功,后来搞清楚输入的先后顺序后终于将程序运行成功了,这道题还要注意的是这个程序中若输入的职业是错误的,则要调用abort()函数退出程序,这时候就要包含stdlib.h的头文件。 - 程序运行结果如下:

##9.3.4:结构体指针的应用 - 问题的简单描述: n个人围成一个圈,从第s个人开始按顺时钟1,2,3,...,m的顺序报数,数到m的人出圈,然后从出圈的下一个人开始重复此过程,输出所有出圈人的顺序,n,s,m从键盘输入。 - 流程图如图所示:  - 实验代码: ``` #include
#define N 10 struct child { int no; int next; }; struct child link[N]; main() { int i,n,m,s,count,h; printf("输入围圈人数:出圈报数,开始报数位置:"); scanf("%d,%d,%d",&n,&m,&s); for (i=1;i<=n;i++) { if(i==n) link[i].next=1; else link[i].next=i+1; link[i].no=i; } count=0; if(s==1)h=n;else h=s-1; printf("出圈顺序为:"); while(count

##三、实验小结(在本次实验中收获与不足) 这节实验课进行的是关于结构体和共用体的一些相关实验,让我对结构体类型变量、数组、指针的定义有了进一步的了解,学会了怎么引用结构体中的成员,知道了结构体中数组变量的输入可以不使用‘&’取地址运算符,怎么在结构体中嵌套使用函数定义,在输出的时候要逐级输入结构体名称。
查看全文
相关阅读:
shell 脚本实现yum安装 LAMP 架构的 wordpress
redis主从及哨兵和cluster集群
扫描网段中服务器显示状态
利用for循环输出九九乘法表
正则表达式取文件后缀
利用正则表达式实现yes/no判断
判断输入的IP地址是否合法
Shell脚本编程基础之shell脚本条件测试命令
Shell脚本编程基础之shell脚本逻辑运算
Shell脚本编程基础之shell脚本算术运算
原文地址:https://www.cnblogs.com/luolongmei/p/11108961.html
最新文章
hive的数据定义之创建数据库和表
Linux shell 计算两个文件的并集、交集、差集
ELK集群搭建 --(二)
ELK集群搭建 --(一)
KVM创建多网卡桥接网络虚拟机
利用loganalyzer 展示数据库中的日志,并使用logrotate做日志转储
编译安装基于 FASTCGI 模式LAMP架构多 虚拟主机WEB应用
Centos6误删除grub文件夹通过光盘启动恢复
IP 地址分类和各自的私网或特殊地址范围
检查出最近一小时内访问nginx服务次数超过3次的客户端IP
热门文章
简述TCP三次握手的过程
Centos设置外发邮箱
定时任务cron
Nginx 实现后端 tomcat 的负载均衡调度
ubuntu 安装zabbix
用户访问网站基本流程及原理
docker的基本操作
docker容器启动后怎么修改端口映射
DR模式和实现使用 nfs 时实时挂载
通过编写 shell 脚本实现二进制安装 LAMP 架构的 word press
Copyright © 2011-2022 走看看