实验6 结构体的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)在主函数中输入数据,并输出处理结果,测试所写的函数。

(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)

相关文档
最新文档