实验6 结构体的应用
- 格式:doc
- 大小:33.00 KB
- 文档页数:3
实验6 结构体的应用
实验目的
1.掌握结构体类型及结构体变量的定义和使用。
2.掌握结构体类型数据在函数中的应用。
3.掌握结构体数组的使用。
实验内容
1.下列程序完成对一名职工的姓名、出生年月、基本工资的初始化。
从键盘输入奖金金额,输出对应职工的姓名、年龄、基本工资和应领金额等信息。
阅读、写出并分析运行结果。
#include<iostream>
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基本工资:"<<p.money<<"\t";
cout<<"应领金额:"<<p. salary<<endl;
}
思考: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 <iostream>
#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<N;i++)
for(j=0;j<M;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="<<max<<"line="<<n<<end1;
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)在主函数中输入数据,并输出处理结果,测试所写的函数。