第九章 结构体与共用体

姓名:吕家浩    实验地点:教学楼514教室    实验时间:4月30日

一、本章要点

1.通过实验理解结构体和共用体的数据结构
2.结构体、共用体中数组的使用及变量的赋值
3.结构体和共用体定义时的嵌套使用(嵌套使用的结构体必须先定义)

二、实验内容

1.实验练习:9.1

问题描述:试利用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第多少天。

流程图

实验代码

#include<stdio.h>
main()
{struct date{int year;int month;int day;};struct date a;int i,days;printf("输入年,月,日:"); scanf("%d%d%d",&a.year,&a.month,&a.day);for(i=1;i<a.month;i++){if(i==1||i==3||i==5||i==7||i==8||i==10)days+=31;else if(i==4||i==6||i==9||i==11)days+=30;else if(((a.year%4==0)&&(a.year%100!=0))||(a.year%400==0))days+=29;elsedays+=28;    }days+=a.day-1;printf("%d年%d月%d日是该年的%d天",a.year,a.month,a.day,days);} 

运行结果:

问题分析:本题无问题,就是需要注意一下最后面计算天数的时候需要-1

2.实验练习9.2

问题描述:在选举中,假设有6位候选人,有10个人参加投票(只能对一位候选人投票)。用结构体数组统计各候选人的得票数。

流程图

实验代码:

#include<stdio.h>
#include<string.h>
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\n",a[j].name,a[j].count);}

运行结果:

问题分析:本题无问题,需注意strcmp函数的用法

 

3.实验练习:9.3

问题描述:

编写程序填写表格,从键盘输入学生和教师的信息,若是学生,则班级/职称栏填入班级;若是教师,则班级/职称栏填入职称。

流程图

实验代码

#include<stdio.h>
#include<stdlib.h>
struct
{int number;char name[20];char job;union{int classes;char position[10];}category;
}person[2];
main()
{int i;for(i=0;i<2;i++){scanf("%s%d %c",&person[i].name,&person[i].number,&person[i].job);if(person[i].job=='s')scanf("%d",&person[i].category.classes);else if(person[i].job=='t')scanf("%s",&person[i].category.position);else{printf("Input error!");abort();}}printf("\n");printf("编号     姓名   职业    班级/职务\n");for(i=0;i<2;i++){if(person[i].job=='s')printf("%d    %s     %c      %d\n",person[i].number,person[i].name,person[i].job,person[i].category.classes);elseprintf("%d    %s     %c      %s\n",person[i].number,person[i].name,person[i].job,person[i].category.position);}
}

运行结果:

问题分析:在程序运行的时候,输入相关的数据按照书上的来回导致程序结果有很大的问题,需要按照程序代码依次输入

4.实验练习:9.4

问题描述:

n个人围成一圈,从第s个人开始按顺时针1,2,3,……,m的顺序报数,数到m的人出圈,然后从出圈的下一个人开始重复此过程,输出所有出圈人的顺序。n,s,m从键盘输入。

流程图

实验代码

#include<stdio.h>
#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;elselink[i].next=i+1;link[i].no=i;}count=0;if(s==1)h=n;elseh=s-1;printf("出圈顺序为:");while(count<n-1){i=0;while(i!=m){h=link[h].next;if(link[h].no)i++;}printf("%d,",link[h].no);link[h].no=0;count++;}for(i=1;i<=n;i++)if(link[i].no!=0)printf("%d",link[i].no); } 

运行结果:

问题分析:无

实验小结:

要明白结构体变量和共同体变量的区别和用法,有时候要注意问题的流程和思路,不能一味地认为书上的就是对的。

 

转载于:https://www.cnblogs.com/ljh26/p/11109454.html

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

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

相关文章

H5-localStorage数据存储总结

一、什么是localStorage、sessionStorage 在HTML5中&#xff0c;新加入了一个localStorage特性&#xff0c;这个特性主要是用来作为本地存储来使用的&#xff0c;解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k)&#xff0c;localStorage中一般浏览器支持的…

iOS开发-证书问题精析~

在iOS开发过程中&#xff0c;不可避免的要和证书打交道&#xff0c;真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题&#xff0c;但是如果掌握了真机调试的原理和本质&#xff1b;遇到问题&#xff0c;我们就更容易定位问题之所在&#xf…

selenium+Java自动化

转载于:https://www.cnblogs.com/arvin-feng/p/11110483.html

npm升级package.json依赖包

使用npm管理node的包&#xff0c;可以使用npm update <name>对单个包升级&#xff0c;对于npm的版本大于 2.6.1,可以使用命令: npm install -g 升级全局的本地包。 对于版本小于2.6.1的一个一个包的升级实在是太麻烦&#xff0c;就想找到一个升级所有本地包的方法&#x…

Minimal coverage (贪心,最小覆盖)

题目大意&#xff1a;先确定一个M&#xff0c; 然后输入多组线段的左端和右端的端点坐标&#xff0c;然后让你求出来在所给的线段中能够 把[0, M] 区域完全覆盖完的最少需要的线段数&#xff0c;并输出这些线段的左右端点坐标。 思路分析&#xff1a; 线段区间的起点是0&#x…

vuex知识点

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式&#xff1b;集中存储和管理应用的所有组件状态。 状态&#xff1a;什么是状态&#xff0c;我们可以通俗的理解为数据。Vue只关心视图层&#xff0c;那么视图的状态如何来确定&#xff1f;我们知道是通过数据驱动&#xff0c…

[论文笔记]CVPR2017_Joint Detection and Identification Feature Learning for Person Search

Title: Joint Detection and Identification Feature Learning for Person Search; aXiv上该论文的第一个版本题目是 End-to-End Deep Learning for Person SearchAuthors: Tong Xiao1* ; Shuang Li1* ; Bochao Wang2 ; Liang Lin2; Xiaogang Wang1 Affilations: 1.The Chines…

.NetCore如何使用ImageSharp进行图片的生成

ImageSharp是对NetCore平台扩展的一个图像处理方案&#xff0c;以往网上的案例多以生成文字及画出简单图形、验证码等方式进行探讨和实践。 今天我分享一下所在公司项目的实际应用案例&#xff0c;导出微信二维码图片&#xff0c;圆形头像等等。 一、源码获取 Git项目地址&…

vue2工程

vue当然可以使用script标签引入&#xff0c;不需任何依赖即可按照vue的语法进行使用。但中大型商用项目中&#xff0c;还是建议使用工程化方式使用vue&#xff0c;vue提供了官方脚手架vue-cli&#xff0c;可以快速构建vue项目&#xff0c;脚手架会帮助开发者创建好建议的工程目…

【GamePlay】入门篇

【GamePlay】入门篇 游戏性编程是指通过一系列游戏系统将游戏想法变成现实的过程。 本次的简例以NPC设计为主。 通常在进行脚本设计前&#xff0c;对NPC的属性进行基本的添加和设定&#xff0c;诸如动画系统、物理系统等等。 1.动画系统 添加Animator组件&#xff0c;绑定骨骼。…

HttpHttps

http协议与https Http 客户端发送一个HTTP请求到服务器的请求消息包括以下格式&#xff1a; **请求行&#xff08;request line&#xff09;、请求头部&#xff08;header&#xff09;、空行 和请求数据四个部分组成。** Get请求例子&#xff0c;使用Charles抓取的request&…

vue2使用axios post跳坑,封装成模块

终于将vue-resource替换成axios了&#xff0c;其中像application/x-www-form-urlencoded发送的头信息以及返回的response结果这两点都需要注意一下。 其实https://github.com/mzabriskie/axios也有说明的。因为我在vue-resource中使用了Vue.http.options.emulateJSON true;&am…

并发与多线程

并发 并发&#xff08;concurrency&#xff09;是指CPU在某个时间段内交替处理多任务的能力。每个CPU不可能只顾着执行某个进程&#xff0c;而让其他进程一直等待被执行。所以&#xff0c;CPU把可执行时间均分成若干份&#xff0c;每个进程执行一份或多份时间后&#xff0c;记录…

synchronize原理

synchronized的三种应用方式 一. 修饰实例方法&#xff0c;作用于当前实例加锁&#xff0c;进入同步代码前要获得当前实例的锁。 二. 修饰静态方法&#xff0c;作用于当前类对象加锁&#xff0c;进入同步代码前要获得当前类对象的锁。 三. 修饰代码块&#xff0c;指定加锁对象&…

不能修改“System Roots”钥匙串

iOS mac添加证书 不能修改“System Roots”钥匙串错误 如图&#xff1a; 解决方式&#xff1a; 打开钥匙串---登录---&#xff0c;直接把证书拖过来 然后&#xff0c;查看--我的证书&#xff0c;里面&#xff0c;找到证书&#xff0c;即可

未来产品的设计

Donald A. Norman继《情感化设计》之后&#xff0c;又一设计精品力作&#xff1a; 未来产品的设计样章试读及本书预定&#xff1a;http://www.china-pub.com/195642市场价 &#xff1a;&#xffe5;39.00 会员价 &#xff1a; &#xffe5;29.25(75折) 【作  者】(美)Donald…

css之字体图标

SVG与字体图标 SVG图片是矢量图片&#xff0c;不会随着图片的伸缩而影响质量&#xff0c;通常把只有一种颜色的图标做成SVG&#xff0c;通过SVG生成字体图标&#xff0c;放到项目中使用。 https://icomoon.io/是一个比较快捷的生成字体图标的线上工具&#xff0c;进入主页后&…

研发阶段模拟接口数据

因为在vue-cli工程中需要创建很多.vue文件&#xff0c;我们希望创建vue文件和创建html、css、js文件一样右键即可选择创建&#xff0c;并且创建的文件中可预先写好模板代码。 webstorm-Preferences打开选项界面 选择File and Code Templates&#xff0c;点击绿色加号 填…

真实项目中 ThreadLocal 的妙用

一、什么是 ThreadLocal ThreadLocal 提供了线程的局部变量&#xff0c;每个线程都可以通过 set() 和 get() 来对这个局部变量进行操作&#xff0c;但不会和其他线程的局部变量冲突&#xff0c;实现了线程间的据隔离。 简单讲&#xff1a;一个获取用户的请求线程 A&#xff0c;…

css之flex布局

flex布局是css3中的重要布局方式&#xff0c;称为“弹性布局”&#xff0c;每次想到它主要是遇到元素垂直居中、元素宽高自适应的问题&#xff0c;这些问题在flex中都能过简单设置就解决&#xff0c;它更像是原生APP中的布局操作&#xff0c;布局不必写N多的盒模型代码来实现&a…