某公司根据下面的原则每月支付员工两次薪水:
(1)若员工是领取年薪的,则其工资等级将大于10000元,每年支付24次薪水,则该员工每次收入为“工资等级/24”;
(2)若员工是按小时领取工资的,则其工资等级将介于40~800之间,则该员工每次收入为“工资等级*小时数”;
(3)若员工的工资等级小于40,或介于800~10000之间,为非法数据。
用结构体存储每个员工的工号、工资等级、工作小时数和收入:
#include<stdio.h>
struct People{
int num;
int level;
int hour;
int sum;
};
int main(){
void get_data(struct People *a);
void count_data(struct People *a);
void pay(struct People *a);
void put_data(struct People *a);
struct People a[100];
get_data(a);
count_data(a);
pay(a);
put_data(a);
return 0;
}
void get_data(struct People *a){
int i=0;
printf("请输入第%d位员工数据",i+1);
scanf("%d%d%d",&(a+i)->num,&(a+i)->level,&(a+i)->hour);
while((a+i)->num!=0){
i++;
printf("请输入第%d位员工数据",i+1);
scanf("%d%d%d",&(a+i)->num,&(a+i)->level,&(a+i)->hour);
}
}
void count_data(struct People *a){
int i=0;
while((a+i)->num!=0){
if((a+i)->level>10000){
(a+i)->sum=(a+i)->level;
}else if((a+i)->level>=40&&(a+i)->level<=800){
(a+i)->sum=(a+i)->level*(a+i)->hour;
}else{
printf("error!");
}
i++;
}
}
void pay(struct People *a){
int find,i=0;
printf("输入要找的员工编号:");
scanf("%d",&find);
while((a+i)->num!=0){
if((a+i)->num==find){
printf("%d\n",(a+i)->sum);
break;
}
i++;
}
}
void put_data(struct People *a){
int i=0;
while((a+i)->num!=0){
printf("%d\t%d\t%d\t%d\n",(a+i)->num,(a+i)->level,(a+i)->hour,(a+i)->sum);
i++;
}
}
这里面有注意的点,在输入时大家还是用for循环比较方便,while循环太容易出错了,要先进行输入,除非对数组进行初始化,初始化还是比较有必要的,可以避免很多不必要的麻烦~