设计一个结构型,存放职工的编号、姓名、是否退休(已退休为'y'或'Y'、未退休为'n'或'N')和工资。编一个程序,输入20名职

设计一个结构型,存放职工的编号、姓名、是否退休(已退休为'y'或'Y'、未退休为'n'或'N')和工资。编一个程序,输入20名职工的上述信息,统计并输出退休职工的人数、工资总额和平均工资,以及未退休职工的人数、工资总额和平均工资。


【正确答案】:

#include

struct worker

{char hum[3]; char flag[2]; char name[8]; int wage;}

w[20];

main()

{

int i,n1,n2; float sum_y,ave_Y,sum_n,ave_n;

struct worker*P;P=w;

nl=n2=sum_y=sum_n=ave_y=ave_n=0;

for(i=0;i<20;i++)

{

printf("\n请输入职工%d的情况:\n",i+1);

printf("编号:"); scanf("%s",w[i].num);

printf("姓名:"); scanf("%S",W[i].name);

printf("是否退休:"); scanf("%S",W[i].flag);

printf("工资:"); scanf("%d",&w[i].wage)

}

for(i=0;i<20;i++)

{

if(toupper((P+i)->flag[0])=='Y')

{n1++;sum_y+=(P+i)一>wage;}

if(toupper((P+i)->flag[0])=='N')

{n2++;sum_n+=(P+i)->wage;}

}

ave_y=sum_y/nl;ave_n=sum_n/n2;

printf("已退休人数%d,工资总数%d,平均工资为%d\n",nl,sum_y,ave_y);

printf("未退休人数%d,工资总数%d,平均工资为%d\n",n2,sum n ave_n);

}