当前位置: 首页 > 编程日记 > 正文

第九章实验报告

C程序设计实验报告

实验项目:构造数据类型实验

姓名:罗子健 实验地点:物联网实验室 实验时间:2019年6月26日

一、实验目的与要求

(1)掌握结构体类型说明和结构体类型变量、数组、指针的定义方法及使用。

(2)学会引用结构体中的成员。

(3)掌握利用指向结构体的指针成员构成链表的基本算法。

(4)了解联合体类型和枚举类型的说明、其变量的定义及赋初值的方法。

(5)了解联合类型变量中各成员的存储结构,学会引用各成员中的数据。

(6)学习正确引用枚举类型常量,了解如何对枚举类型变量进行操作。


二、实验内容

9.3.1 结构体变量的应用

1、问题的简单描述:试利用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第多少天。算法描述如图所示。

2、实验流程图、代码和结果:

 1 /*ex9_1*/
 2 #include<stdio.h>
 3 main()
 4 { struct date
 5  { int year;
 6    int month;
 7    int day;/*含有年、月、日、3个成员*/ }
 8    a;/*定义结构体变量a*/
 9    int i,days;/*定义其他变量*/
10  printf("输入年、月、日:");/*提示“输入年、月、日”*/
11  scanf("%d%d%d",&a.year,&a.month,&a.day);/*输入“年、月、日”*/
12   for(i=1;i<a.month;i++)
13   { if (i==1||i==3||i==5||i==7||i==8||i==10) days+=31;
14     else if(i==4||i==6||i==9||i==11) days+=30;
15     else if(a.year%100!=0&&a.year%4==0||a.year%400==0) days+=29;
16         else days+=28;} 
17     days+=a.day-1;
18     printf("%d年%d月%d日是该年的第%d天",a.year,a.month,a.day,days);/*输出结果*/ 
19 }

3、问题分析:day要进行-1,不然会比实际天数多1。

9.3.2 结构体数组的应用

1、问题的简单描述:

2、实验流程图、代码和结果:

 1 /*ex9_2.c*/
 2 #include "stdio.h"
 3 #include<string.h>
 4 struct person
 5 { char name[20];
 6   int count;
 7 }a[6]={"zhang",0,"li",0,"wang",0,"zhao",0,"liu",0,"zhu",0};
 8 main()
 9 { int i,j; char abc[20];
10   for(i=1;i<=10;i++)
11   { printf("输入候选人姓名:");/*提示“输入候选人名字”*/
12       scanf("%s",abc); /*输入候选人名字*/
13    for(j=0;j<6;j++)
14    if(strcmp(abc,a[j].name)==0)
15    a[j].count++;};
16    for(j=0;j<6;j++)
17    printf("%s:%d\n",a[j].name,a[j].count);/*输入各候选人的名字和得票数*/ 
18 }

3、问题分析:用到了strcmp比较函数进行比较来判断该候选人的票数是否加一

9.3.3 共用体的应用

1、问题的简单描述:

2、实验流程图、代码和结果:

 1 /*ex9_3.c*/
 2 #include "stdio.h"
 3 #include<stdlib.h>
 4 struct
 5 {    int number;
 6     char name[99];
 7     char job;
 8     union
 9     {    int classes;
10          char position[10];    
11     }category;
12 }person[2];
13 main()
14 {    int i;
15     for(i=0;i<2;i++)
16     {    scanf("%s%d%s",&person[i].name,&person[i].number,&person[i].job);/*输入某人的编号、姓名、职业*/ 
17         if(person[i].job=='s')
18             scanf("%d",&person[i].category.classes);
19         else if(person[i].job=='t') 
20             scanf("%s",&person[i].category.position);/*输入教师的职称*/
21         else
22         {    printf("input error!");
23             abort();/*若输入错误,则退出程序*/ 
24         } 
25     }
26     printf("\n");
27     printf("编号    姓名    职业    班级/职务\n");
28         for(i=0;i<2;i++)
29             if(person[i].job=='s')
30                 printf("%d    %s    %c    %d\n",person[i].number,person[i].name,person[i].job,person[i].category.classes);/*输出学生的记录*/
31             else
32                 printf("%d    %s    %c    %s\n",person[i].number,person[i].name,person[i].job,person[i].category.position);
33 }

3、问题分析:若要调用abort()函数退出程序,就要有包含stdlib.h的头文件。

9.3.4 结构体指针的应用

1、问题的简单描述:

2、实验流程图、代码和结果:

 1 /*ex9_4.c*/
 2 #include<stdio.h>
 3 #define N 10        /*最多围圈人数*/
 4 struct child
 5 {
 6     int no;            /*人员编号*/ 
 7     int next;        /*下一人员编号*/
 8 } ;
 9 struct child link[99];        /*定义结构体数组link[N],描述所有人员*/
10 main()
11 {
12     int i,n,m,s,count,h;        /*定义变量*/
13     printf("输入围圈人数,出圈人数,开始报数位置:");
14     scanf("%d%d%d",&n,&m,&s);/* 输入围圈人数n,出圈人数m,开始报数位置s*/
15     for(i=1;i<=n;i++)
16     {
17         if(i==n)
18             link[i].next=1;
19         else
20             link[i].next=i+1;
21         link[i].no=i;
22     }
23     count=0;
24     if(s==1)h=n;else h=s-1;
25     printf("出圈顺序为:");
26     while(count<n-1)/*出圈人数<围圈人数-1*/ 
27     {
28         i=0;
29         while(i!=m)
30         {
31             h=link[h].next;
32             if(link[h].no)
33                 i++;
34         }
35         printf("%d, ",link[h].no);
36         link[h].no=0;
37         count++;
38     }
39     for(i=1;i<=n;i++)
40     if(link[i].no!=0)
41     printf("%d",link[i].no);/*输出最后留在圈中的人数*/ 
42 } 

3、问题分析:定义数组link[N],N要定义大一些,N要大于n。


三、实验小结(在本次实验中收获与不足)

要调用abort()函数退出程序,就要有包含stdlib.h的头文件。不然就不能中止。

转载于:https://www.cnblogs.com/gnxyxlzj/p/11109990.html

相关文章:

LTE Paging时频资源

介绍PAGING的文章有很多&#xff0c;本文主要介绍Paging的时频资源。 为了达到省电的目的&#xff0c;UE在idle下使用DRX。UE在什么时刻(SFN/subframe)wakeup起来接受Paging 呢? 先介绍2个概念&#xff0c;如下&#xff1a; PO: Paging Occasion, 它是一个子帧&#xff0c;这…

mysql处理上百万条的数据库如何优化语句来提高处理查询效率

1.对查询进行优化&#xff0c;应尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描&#xff0c;如&#xff1a;select id from t whe…

smarty mysql_Smarty处理mysql查询数组

Smarty处理mysql查询数组MySQL的查询结果一般是一个数组&#xff0c;而不是所有结果集。因此我们需要将结果全部存到数组中进行处理&#xff0c;然后就可以很轻松的再Smarty中使用了。PHP Mysql 代码$sql"select article_id,article_title from tbl_article order by arti…

Linux文件压缩与解压缩

什么是压缩文件&#xff1f;原理是什么?简单的说&#xff0c;就是经过压缩软件压缩文件叫压缩文件&#xff0c;压缩的原理是把文件的二进制代码压缩&#xff0c;把相邻的0,1代码减少&#xff0c;例如有000000&#xff0c;可以把它变成6个0的写法60来减少该文件的空间&#xff…

git 使用和一些错误

一、简单使用 Git是目前世界上最先进的分布式版本控制系统&#xff0c;用于自动记录每次文件的改动&#xff0c;但是和所有版本控制系统一样&#xff0c;只能跟踪文本文件的改动&#xff0c;比如TXT文件&#xff0c;网页&#xff0c;所有的程序代码等&#xff0c;而图片、视频这…

LTE Paging消息的接收

Paging消息的内容如下&#xff1a; 在idle和connected 下&#xff0c;UE可以分别接受如下信息&#xff1a; RRC 状态对应的Paging消息内容Idle1.系统消息改变 2. ETWS 3.呼叫请求Connected1.系统消息改变 2. ETWS 寻呼消息的设计初衷是&#xff1a; UE在idle态下&#xff…

android开发之Parcelable使用详解

想要在两个activity之间传递对象&#xff0c;那么这个对象必须序列化&#xff0c;android中序列化一个对象有两种方式&#xff0c;一种是实现Serializable接口&#xff0c;这个非常简单&#xff0c;只需要声明一下就可以了&#xff0c;不痛不痒。但是android中还有一种特有的序…

tomcat mysql 中文乱码_tomcat 中文乱码, mysql 中文乱码_MySQL

Tomcattomcat中文乱码 get 请求.修改server.xml中的添加URIEncodingUTF-8tomcat中文乱码 post 版另外HttpURLConnection上传参数的时候要转码成url编码 outStream.writeBytes("&" URLEncoder.encode(key, "utf-8") "" URLEncoder.encode(…

自己写的Python数据库连接类和sql语句拼接方法

这个工具类十分简单和简洁。 sql拼接方法 # encodingutf-8 from django.http import HttpResponse from anyjson import serialize from django.http import HttpResponse from anyjson import serialize import MySQLdbdef safe(s):return MySQLdb.escape_string(s)def get_i_…

Koa 本地搭建 HTTPS 环境

openssl 首先本地需要安装 openssl&#xff0c;用于生成自签名证书。 $ brew install openssl检查安装&#xff1a; $ openssl version LibreSSL 2.6.5生成证书 执行以下命令生成证书&#xff1a; openssl req -nodes -new -x509 -keyout server.key -out server.cert Generati…

eDRX中的Paging

在idle下&#xff0c;Legacy LTE的DRX周期最大值为2.56s, 频繁的唤醒会消耗UE的电量。为了降低功耗&#xff0c;延长待机时间&#xff0c;在Release 13&#xff0c;NB-IOT引入eDRX模式。eDRX就是Extended idle-mode DRX cycle,扩展不连续接受。 下面介绍超帧(Hyper-SFN)的概念…

ios 图片自动轮播

ios 图片自动轮播 #import "NYViewController.h"#define kImageCount 5interface NYViewController () <UIScrollViewDelegate> property (nonatomic, strong) UIScrollView *scrollView; property (nonatomic, strong) UIPageControl *pageControl;property (…

mysql练习题及答案_MySQL经典练习题及答案,常用SQL语句练习50题

#--插入学生表测试数据#(01 , 赵雷 , 1990-01-01 , 男)insert into Student values(01 , 赵雷 , 1990-01-01 , 男);insert into Student values(02 , 钱电 , 1990-12-21 , 男);insert into Student values(03 , 孙风 , 1990-05-20 , 男);insert into Student values(04 , 李云 …

一次因NAS存储故障引起的Linux系统恢复案例

推荐&#xff1a;10年技术力作&#xff1a;《高性能Linux服务器构建实战Ⅱ》全网发行&#xff0c;附试读章节和全书实例源码下载&#xff01;一、故障现象描述NAS操作系统内核为Linux&#xff0c;自带的存储有16块硬盘&#xff0c;总共分两组&#xff0c;每组做了RAID5&#xf…

手机网页H5 自适应不同分辨率的屏幕 必学标签meta之viewport

viewport 语法介绍 <meta name"viewport"content" height [pixel_value | device-height] , width [pixel_value | device-width ] , initial-scale float_value , minimum-scale float_value , maximum-scale float_value , user-scalable [yes | no]…

PSM-省电模式(PowerSaving Mode)

PSM: PowerSaving Mode, 省电模式, 是R12引入的新feature, spec可以参考&#xff1a;3GPP 24.301-5.3.11 Powersaving mode 和 23.682-4.5.4 UEPower Saving Mode.在PSM模式下&#xff0c;网络无法到达UE&#xff0c;UE无法接受来自于网络的数据和请求&#xff0c;类似于关机&…

mysql keepalived低版本_Mysql+keepalived主主切换

Mysqlkeepalived主主切换一&#xff0c;环境介绍网络结构&#xff1a;VIP :192.168.1.30MYSQL A:192.168.1.21MYSQL B:192.168.1.22二、mysql主主同步要实现mysqlkeepalived主主切换&#xff0c;首先要实现的就是两台mysql服务器的主主同步&#xff0c;查看http://smalldeng.bl…

Android环境搭建和Android HelloWorld—Android开发环境搭建

Android_Android开发环境搭建-搭建Android的开发环境 1.我考虑先下载JDK7.0,在JDK的安装中&#xff0c;考虑一般SDK都是向上兼容的&#xff0c;于是选择了最高的版本7.0这里是我总结的详细的JDK配置以及路径配置的过程&#xff1a; JavaSDK安装&#xff1a;安装JDK.exe然后配置…

30个在线学习设计与开发的站点

转&#xff1a;http://www.w3cschool.cc/w3cnote/30-best-websites-to-learn.html

【07月01日】A股滚动市净率PB历史新低排名

2010年01月01日 到 2019年07月01日 之间&#xff0c;滚动市净率历史新低排名。 上市三年以上的公司&#xff0c;2019年07月01日市净率在30以下的公司。 来源&#xff1a;A股滚动市净率(PB)历史新低排名。 1 - XD中国石(SH601857) - 历史新低 - PB_TTM&#xff1a;1.03 - PE_TTM…

LTE-连接态下的DRX

C-DRX: Connectedmode DRX,连接态下的DRX UE在连接态下&#xff0c;如果没有数据传输的话&#xff0c;会根据DRX的规则停止监听PDCCH(监听PDCCH可参考&#xff1a;PDCCH),从而达到省电的目的。一个DRX周期包含On Duration 和Opportunity for DRX 两个时间段。3GPP - 36.321中示…

mvc mvp mvvm的区别与联系_MVC,MVP,MVVM比较以及区别(上)

MVC&#xff0c;MVP&#xff0c;MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式&#xff0c;以前只是对他们有部分的了解&#xff0c;没有深入的研究过&#xff0c;对于一些里边的概念和区别也是一知半解。现在一边查资料&#xff0c;并结合自己的理解&#xff0c;来谈一…

【性格心理学】为什么我在关键时刻总是紧张?

为什么我在关键时刻总是紧张&#xff1f; ~这是一种“对人恐惧症”&#xff0c;因为害怕失败~ 当在众人面前讲话时&#xff0c;或者公司会议中轮到自己发言时&#xff0c;有的人就会大汗淋漓、面红耳赤&#xff0c;甚至心跳不已&#xff0c;结结巴巴地连话都说不出来。在重大场…

iOS图片模糊效果

增加 CoreImage.framework CoreGraphic.framework 等库 在使用时引入&#xff1a;#import <Accelerate/Accelerate.h> &#xff0c;支持iOS 5.0 及以上。 -(void)show { UIImage* img [self getBlurImage:[UIImage imageNamed:"Default-568h.png"]]; [_bgIm…

YOLOv7-Pose 姿态估计-环境搭建和推理

终端,进入base环境,创建新环境,我这里创建的是p38t17(python3.8,pytorch1.7)安装pytorch:(网络环境比较差时,耗时会比较长)下载好后打开yolov7-pose源码包。imgpath:需要预测的图片的存放路径。modelpath:模型的存放路径。Yolov7-pose权重下载。打开工程后,进入设置。

分治——最近点对问题 hdu1007

问题描述 n个点在公共空间中&#xff0c;求出所有点对的欧几里得距离最小的点对。 解法1&#xff1a; 很明显的&#xff0c;暴力解决是$O(N^2)$ 解法2&#xff1a; 利用分治的思想&#xff0c;我们可以把算法优化到$O(nlogn*logn)$&#xff0c;甚至$O(nlogn)$ 我们先对所有的点…

NBIOT-NPSS/NSS/NPBCH的资源位置

1.NPSSNarrowbandPrimary Synchronization Signal时域位置每1个SFN存在一个NPSSSFNSubframeSymbol长度每个SFN5最后11个symbol11个symbols频域位置NB-IOT下行带宽固定180kHz&#xff0c;一个PRB&#xff0c;12个子载波。NPSS信号占用11个子载波2.NSSSNarrowbandSecondary Synch…

数组的排序与查找

/**对如下一个数组int[] iarr{34,67,1,56,32,78,12,45,79,4,57,102,123,3};进行排序(采用自己擅长的排序算法)&#xff0c;然后查询排序之后的采用二分查找*法查找45在在数组的索引值 &#xff0c;排序、查找封装成方法&#xff0c;然后在main方法中调用测试。*/ public class …

0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

原标题&#xff1a;零基础学习Python难不难&#xff1f;Python有什么优势&#xff1f;Python是一种计算机程序设计语言。首先&#xff0c;我们普及一下编程语言的基础知识。用任何编程语言来开发程序&#xff0c;都是为了让计算机干活&#xff0c;比如下载一个MP3&#xff0c;编…

浅谈 MySQL 子查询及其优化

2019独角兽企业重金招聘Python工程师标准>>> 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验&#xff0c;在子查询上都认为数据库已经做过优化&#xff0c;能够很好的选择驱动表执行&#xff0c;然后在把该经验移植到mysql数据库上&#xff0c;但是…