实验6 结构体的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6 结构体的应用
实验目的
1.掌握结构体类型及结构体变量的定义和使用。
2.掌握结构体类型数据在函数中的应用。
3.掌握结构体数组的使用。
实验内容
1.下列程序完成对一名职工的姓名、出生年月、基本工资的初始化。从键盘输入奖金金额,输出对应职工的姓名、年龄、基本工资和应领金额等信息。阅读、写出并分析运行结果。
#include
using namespace std;
struct Date
{ int year,month;
};
struct Person
{ char name[20];
Date birth;
float money,salary; // money 为基本工资;salary 为应领金额
};
int main()
{ Person p={"张三",{1982,3},1250,0};
float num;
cout<<"请输入"<< <<"的奖金金额:";
cin>>num;
p.salary=p.money+num;
cout<<<<"年龄:"<<(2011-p.birth.year)<< "\t基本工资:"<
cout<<"应领金额:"<
}
思考: 1)职工的数据由键盘输入,该如何修改程序?
2)如何使用结构体数组,完成五个职工数据的键盘输入工作?
3)如何求出五个职工的平均工资和平均奖金。
2.编程题
(1)定义职工工资结构体类型salary,描述职工工资的信息有:工号(num)、姓名(name)、基本工资(base_salary)、岗位工资(post_salary)、医疗住房基金(fund)、税金(tax)与实发工资(fact_salary)。用工资结构体类型定义工资结构体变量。用初始化方式输入某职工工资各数据成员内容,然后输出职工工资内容。测试数据自定。
(2)用实验(1)中的salary类型定义某车间职工工资结构体数组。编写四个函数分别用于:
1)输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。
2)计算每一个职工实发工资,计算公式:
实发工资=基本工资+岗位工资-医疗住房基金-税金。
3)输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。
4)在主函数中定义职工工资数组,调用四个函数完成输入、计算实发工资、排序、输出。
提示:为方便测试,可将职工人数定为N人,N为常量3。
问题讨论
比较结构体与数组,分析在什么情况下使用数组?什么情况下使用结构体?什么情况下使用结构体数组?
#include
#define N 3
#define M 3
using namespace std;
int select(int a[N][M],int *p) //用指针p作为函数参数,传回最大值所在的行下标
{ int i,j,row=0,colum=0;
for(i=0;i for(j=0;j if(a[i][j]>a[row][colum]) { row=i; colum=j; } *p= ; return ; } int main() { int a[N][M]={9,11,23,6,1,15,9,17,20}; int max,n; max=select(a,&n); cout<<"max="< return 0; } 思考:如果在select函数中想通过引用作为函数参数,传回最大 值所在的行下标,应该如何修改程序? 3.编程题 设计一个程序,完成删除一个整数数组中所有的负数。要求: 1)整数数组中的元素个数n由运行程序时指定(提示:使用动态存储分配)。 2)用函数input(int a[],int n)完成a数组的n个元素的输入; 用函数find_elem(int a[],int n)返回n个元素的数组a中的第一个负数; 用函数delete_elem(int a[],int &n,int x)完成对有n个元素的数组a中下标为x的元素进行删除工作。 3)在主函数中输入数据,并输出处理结果,测试所写的函数。 (学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)