实验十一:结构体

  • 一、实验目的

1、掌握结构体类型、共用体类型和结构体类型变量的定义方法;

2、掌握结构体类型变量成员赋值和引用方法;

3、学会使用结构体数组;

4、掌握共用体和枚举类型数据的使用。

  • 二、实验设备及器材

计算机

  • 三、实验内容和要求

1、结构体类型的定义;

2、结构体变量的定义、赋值与使用;

3、结构体数组与结构体指针的定义与使用;

4、共用体类型的定义,共用体变量的定义与使用;

5、枚举类型的定义与使用;

6、自定义类型的使用。

  • 四、实验步骤

一、建立以自己的学号命名的文件夹。

二、上机验证与分析题

1写出程序ex11_1.c运行的结果。

/*文件名ex11_1.c*/
#include <stdio.h>
struct HAR
{
	int x,y;
	struct HAR *p;
}h[2];
int main()
{
	h[0].x=1;
	h[0].y=2;
	h[1].x=3;
	h[1].y=4;
	h[0].p=&h[1];
	h[1].p=h;
	printf("%d %d\n",(h[0].p)->x,(h[1].p)->y);	
return 0;
}

答:3 2.

2写出程序ex11_2.c运行的结果。

/*文件名ex11_2.c*/
#include "stdio.h"
void main()
{
	int z;
	union data
		{
		int x;
		int y;
		}a;
	 a.x=3;
    a.y=6;
	 z=a.x+a.y;
	 printf("z=%d\n",z);
}

答:z=12

3阅读程序ex11_3.c,预测结果并上机验证。

/*文件名ex11_3.c*/
#include <stdio.h>
void main()
{
	union data
	{
		int i;
		char ch;
		float f;
	}a,b,c;
	a.i=9;
	b=a;
	c=b;
	printf("b.i=%d,c.i=%d\n",b.i,c.i);
}

答:b.i=9,c.i=9。

三、编程题:

1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex11_4.c命名,保存在自己的文件夹内。

答:

#include<stdio.h>
typedef struct date
{
	int year;
	int month;
	int day;
}DATE;
typedef struct people
{
	long peopleID;
	char peopleName[10];
	char peopleSex;
	int peopleAge;
	DATE enterDate;
	char peopleCall;
}PEOPLE;
int main()
{
	PEOPLE stu1;
	int i;
	printf("输入数据:\n");
	scanf("%ld",&stu1.peopleID);
	scanf("%s",stu1.peopleName);
	scanf(" %c",&stu1.peopleSex);
	scanf("%d",&stu1.peopleAge);
	scanf("%d",&stu1.enterDate.year);
	scanf("%d",&stu1.enterDate.month);
	scanf("%d",&stu1.enterDate.day);
	scanf("%s",&stu1.peopleCall);
	printf("工号\t\t名字\t性别\t年龄\t参加工作日期\t联系电话\n");
	printf("%10d%10s\t%3c\t%2d\t%4d/%02d/%02d\t%10s\n",
		    stu1.peopleID,stu1.peopleName,stu1.peopleSex,stu1.peopleAge,
			stu1.enterDate.year,stu1.enterDate.month,stu1.enterDate.day,
			stu1.peopleCall);
	return 0;
}

2、5位同学《程序设计基础》课程考核成绩如下表所示:

班级

(char banji)

学号

(int num)

姓名

(char name)

程序设计基础课程考核成绩

(float score)

本网络102班

10002

张小兵

89

本软件103班

20001

李莉嘉

54

本软件106班

30008

王明星

68

本网络103班

40006

刘  伟

92

本网络106班

50007

吴  菲

49

试编程求这5位同学该门课程的平均成绩,并输出成绩不及格的同学的班级、学号、姓名与成绩等信息。源程序以ex11_5.c命名,保存在自己的文件夹内。

答:

:#include<stdio.h>
struct student
{
	char banji[20];
	char num[8];
	char name[20];
	float score;
}stu[5]={{"本网络102班","10002","张小兵",89},
		{"本网络103班","20001","李莉嘉",54},
		{"本网络106班","30008","王明星",68},
		{"本网络103班","40006","刘  伟",92},
		{"本网络106班","50007","吴  菲",49}
		};	
main()
{
	int i;
	float ave, sum=0;
	for(i = 0; i < 5; i++)
	{
		sum=sum+stu[i].score;
		if(stu[i].score<60)
		{
			printf("成绩不及格的同学:%s\t%s\t%s\t%f\n",stu[i].banji,
														stu[i].num,
														stu[i].name,
														stu[i].score);
		}
	}
	ave=sum/5;
	printf("平均成绩为:%.2f",ave);
}

3、5位职工的月收入如下表所示:

部门

(char department)

工号

(char num)

姓名

(char name)

月收入

(float salary)

技术科

010002

张援朝

6800

生产科

020006

李明瑞

2600

检验科

030018

王国庆

4800

后勤部

040026

刘小兵

3700

经营科

050068

吴  伟

1900

试编程求这5位职工的平均月收入,并输出月收入小于3000元的职工的部门、工号、姓名与月收入等信息。源程序以ex11_6.c命名,保存在自己的文件夹内。

答:

#include<stdio.h>
struct worker
{
	char department[20];
	char num[8];
	char name[20];
	float salary;
}wor[5]={{"技术科","010002","张援朝",6800},
		 {"生产科","020006","李明瑞",2600},
		 {"检验科","030018","王国庆",4800},
		 {"后勤科","040026","刘小兵",3700},
		 {"经营科","050068","吴  伟",1900}
		};
main()
{
	int i;
	float ave, sum=0;
	for(i = 0; i < 5; i++)
	{
		sum+=wor[i].salary;
		if(wor[i].salary<3000)
		{
			printf(“月收入低于3000元的员工:%s\t%s\t%s\t%f\n",wor[i].department,
															  wor[i].num,
															  wor[i].name,
															  wor[i].salary);
		}
	}
	ave=sum/5;
	printf("平均月收入为:%.2f",ave);
}
  • 五、实验小结

  •        通过本次实验我掌握了结构体类型、共用体类型和结构体类型变量的定义方法;结构体类型变量成员赋值和引用方法;学会了如何使用结构体数组;以及共用体和枚举类型数据的使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值