实验报告

Posted gnxyxlzj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验报告相关的知识,希望对你有一定的参考价值。

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的头文件。不然就不能中止。

以上是关于实验报告的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-2 20165215 实验四《Android开发基础》实验报告

《网页设计》实验报告

求网页制作实验报告

《Java 程序设计》实验报告汇总

20165314实验五《网络编程与安全》实验报告

网页设计的实验报告,求大神指教!