java第九章实验报告_第九章实验报告

C程序设计实验报告

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

姓名:林胜臣  实验地点:第一教学楼514教室   实验时间:2018年6月26日

一、实验目的与要求

1、掌握结构体类型说明和结构体变量、数组、指针的定义方法及使用。2、学会引用结构体中成员。3、掌握利用指向结构体的指针成员构成链表的基本算法。4、了解联合体类型和枚举类型的说明、其变量的定义及赋初始值的方法。5、了解联合体类型变量中成员的储存结构,学会引用各成员中的数据。6、学习正确引用枚举类型常量,了解如何对枚举类型变量进行操作。

二、实验内容

1、实验练习:结构体变量的应用(9.3.1)

1问题的简单描述:试用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第几天。

2实验流程图:

fc36002016e7bf42454ccd239666837a.png

3实验代码:

#includemain()

{structdata

{intyear;intmonth;intday;

}a;int i,days=0;

printf("请输入年,月,日:\n");

scanf("%d,%d,%d",&a.year,&a.month,&a.day);for(i=1;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)days+=29;else days+=28;

}

days+=a.day;

printf("%d年%d月%d日是该年的第%d天",a.year,a.month,a.day,days);

}

结果:

681dd27416ca0861dc69c8ac4033488e.png

分析:if语句中i=1,3,5,7,8,10应该每个都用或语句。

2、实验练习:结构体数组的应用(9.3.2)

1问题的简单描述:

2实验流程图:

8c382a76bf72244f1a5b8832b52cdf3c.png

3实验代码:

#include "stdio.h"#include

structperson

{char name[20];intcount;

}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[i]);for(j=0;j<6;j++)if(strcmp(a[j].name,&abc[i])==0)

a[j].count+=1;

}for(j=0;j<6;j++)

printf("%s:%d\n",a[j].name,a[j].count);

}

结果:

37376feebe449eae204afa90f51ebc81.png

分析:在此题用到了strcmp函数,使输入的名字与结构体数组里的名字进行对比,若一样就会返回一个值:0,所以只要判断返回值是否为0即可做出此题。

3、实验练习:公用体的应用(9.3.3)

1问题的简单描述:

2实验流程图:

275fb757fa6eb6eb77bfd07f99ab0685.png

3实验代码:

#include"stdio.h"#include

struct{intnumber;char name[10];charjob;

union

{intclasses;char position[10];

}category;

}person[2];

main()

{inti;for(i=0;i<2;i++)

{

fflush(stdin);

scanf("%c,%d,%s",&person[i].job,&person[i].number,person[i].name );if(person[i].job=='s')

{

printf("请输入班级\n");

scanf("%d",&person[i].category.classes);

}else if(person[i].job=='t')

{

printf("请输入职业\n");

scanf("%s",person[i].category.position);

}else{

printf("input error!");

abort();return 0;

}

}

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);

}

}

结果:

c1112afb94c40184f12b85b11f0025a7.png

分析:根据书本上的代码没有成功输出,与同学讨论后结构体中的char *name,在输入时一直没有读取值,改成数组才能读取。

4、实验练习:结构体指针的应用(9.3.4)

1问题的简单描述:

2实验流程图:

0f0c8e8063c66d46cacc49c589c52ed5.png

3实验代码:

#include

#define N 10

structchild

{intno;intnext;

};structchild link[N];

main()

{inti,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;else h=s-1;

printf("出圈顺序为:\n");while(m

{

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[h].next);

}

结果:

6e00d335e85f5536201997cbc657e3bd.png

分析:问题无。

三、实验小结

了解strcmp()函数的用法:

功能:比较字符串a和b。

函数形式:strcmp(a,b)

用法:

当a

当a=b时,返回值=0

当a>b时,返回值>0。

退出程序用abort函数。

书本上也会有错误,有时要用到扎实的基础来改正书本上的一些错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值