c++实验答案 下载本文

内容发布更新时间 : 2024/4/28 21:17:49星期一 下面是文章的全部内容请认真阅读。

所有取法中字母排列。

(2)定义职工工资结构体类型,描述职工工资的信息有:工号(num)、姓名(name)、基本工资(base_salary)、岗位工资(post_salary)、医疗住房基金(fund)、税金(tax)与实发工资(fact_salary)。用工资结构体类型定义工资结构体变量。用初始化方式输入职工工资各数据成员内容,然后输出职工工资内容。

实验数据:1001,张明,1200,1800,300,100,2600

(3)用实验(2)中的职工工资结构体类型定义某车间职工工资结构体数组。编写四个函数分别用于:

① 输入全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金与税金。 ② 计算每一个职工实发工资,计算公式:

实发工资=基本工资+岗位工资-医疗住房基金-税金。 ③ 按实发工资降序排序。

④ 输出全车间职工的工号、姓名、基本工资、岗位工资、医疗住房基金、税金与实发工资。 在主函数中定义职工工资数组,调用四个函数完成输入、计算实发工资、排序、输出工作。 实验数据:

1001,张明,1200,1800,300,100 1002,周明,1300,2000,310,110 1003,李明,1400,2200,320,120 1004,陈明,1500,2400,330,130 1005,赵明,1600,2600,340,140

(4)定义描述复数的结构体类型Complex,编写加法函数Add()完成两个复数的加法运算。在主函数中定义复数类型变量sum与数组c[5]。用循环语句给数组c的5个元素输入复数值,并调用Add()函数完成sum=c[0]+c[1]+c[2]+c[3]+c[4]的操作,最后输出数组c的5个复数值,及其复数sum的值。 实验数据:

c[0]=10+10i,c[1]=20+20i,c[2]=30+30i,c[3]=40+40i,c[4]=50+50i

(5)定义描述矩形的结构体类型,该结构体类型的数据成员为矩形的左上角坐标(x1,y1),矩形的长length与宽width。编写函数Area()计算出矩形的周长与面积。在主函数中定义矩形结构体变量,输入矩形的左上角坐标与矩形的长与宽,调用Area()计算出矩形的周长与面积,并输出矩形的左上角坐标、周长与面积。 实验数据:

100,100,200,50 4.解答参考 (1)

# include enum letter {A,B,C,D};

void show(letter c) { switch(c)

{ case A : cout<<\ case B : cout<<\ case C : cout<<\ case D : cout<<\ }

cout<<'\\t'; }

void main(void) { letter c1,c2,c3;

for(c1=A ;c1<=D;c1=letter(int (c1) +1)) for(c2=A ;c2<=D;c2=letter(int (c2) +1)) for(c3=A ;c3<=D;c3=letter(int (c3) +1)) { if (c1!=c2 && c1!=c3 && c2!=c3) { show(c1); show(c2); show(c3); cout<<'\\n'; } }

cout<<\共有 \种取法!\}

程序运行结果:

A B C A B D A C B A C D A D B A D C B A C B A D B C A B C D B D A B D C C A B C A D C B A C B D C D A C D B D A B D A C D B A D B C D C A D C B 共有 24 种取法! (2)

# include

struct employee { int num ; char name[8];

float base_salary,post_salary,fund,tax,fact_salary; };

void main(void)

{ employee w={1001,\张明\ cout<<\工号:\ cout<<\姓名:\

cout<<\基本工资:\ cout<<\岗位工资:\ cout<<\医疗住房基金:\ cout<<\税金:\

cout<<\实发工资:\}

程序运行结果: 工号:1001 姓名:张明 基本工资:1200 岗位工资:1800 医疗住房基金:300 税金:100

实发工资:2600 (3)

# include # include # define N 5 struct employee { int num ; char name[8];

float base_salary,post_salary,fund,tax,fact_salary; };

void input(employee s[],int n) { int i;

cout<<\ for(i=0;i

cin>>s[i].num>>s[i].name>>s[i].base_salary >>s[i]. post_salary >>s[i].fund >>s[i].tax ; }

void calcu(employee s[],int n) { int i;

for(i=0;i

s[i].fact_salary = s[i].base_salary +s[i].post_salary-s[i].fund -s[i].tax ;

}

void sort(employee s[],int n) { int i,j,k;

employee temp; for(i=0;i

for (j=i+1;j

if (s[k].fact_salar

{ temp=s[i];s[i]=s[k];s[k]=temp;} } }

void output(employee s[],int n) { int i;

cout<

cout<

<

void main(void) { employee w[N]; input(w,N); calcu(w,N); sort(w,N); output(w,N); }

程序运行结果:

Input employee data:

1001 张明 1200 1800 300 100 1002 周明 1300 2000 310 110 1003 李明 1400 2200 320 120 1004 陈明 1500 2400 330 130 1005 赵明 1600 2600 340 140

Num Name Base_salary Post_salary Fund Tax Fact_salary 1005 赵明 1600 2600 340 140 3720 1004 陈明 1500 2400 330 130 3440 1003 李明 1400 2200 320 120 3160 1002 周明 1300 2000 310 110 2880 1001 张明 1200 1800 300 100 2600 (4)

算法分析提示:

(1)定义描述复数类型的结构体变量,描述复数的成员有两个:描述复数实部的real,描述复数虚部的image;

(2)实现复数加法函数add(),函数的实参肯定是c1和c2。形参是复数类型的任何两个变量如x,y,实现复数加时假设有第三变量z,即: z.real=x.real-y.real;

z.image=x.image-y.image; 函数返回为第三变量z;

(4)在主函数中定义复数类型变量sum与数组c[5]。用循环语句给数组c的5个元素输入复数值,并调用add()函数完成sum=c[0]+ c[1]+ c[2]+ c[3]+c[4] 操作,

(5)最后输出数组c的5个复数值,及其复数sum的值。最后输出c3、c4复数值。 # include # include struct complex { float real; float image; };

complex add(complex c1,complex c2) { complex z;

z.real=c1.real+c2.real;

z.image=c1.image-c2.image; return z; }

void main(void)

{ complex c[5],sum={0,0}; int i;

cout<<\ for (i=0;i<5;i++)

cin>>c[i].real>>c[i].image; for (i=0;i<5;i++) sum=add(sum,c[i]); for (i=0;i<5;i++)

cout<<\ cout<<\}

程序运行结果:

input 5 complex data: 10 10 20 20 30 30 40 40 50 50

c[0]=10+10i