#include"stdio.h"
#include"string.h"
#define face
    " ******************************菜单*******************************************\n\n\
  1.此操作无效
                       2.显示所有员工信息\n\
  3.显示员工信息
                     4.最大应发工资和实发工资人员数据\n\
  5.查看各工种保险费占其应发工资比率 6.查看工资总额和各工种实发工资总额\n\n\
 *****************************************************************************\n"
                 
 
struct information{
int
  num;
  /////////工号
char
  name[15]; ///////姓名
int
   age;
   //////////年龄
char
  type[15];
  /////工种
int
   b_salary;
  ///////////基本工资
float p_salary;
  ///////////岗位工资
float safe_cost; /////////////保险费用
int
   r_salary;
  ////////实发工资
}info[6]={01,"叶成",19,"清洁工",350,150.0,10.0,490,
02,"彭冬花",20,"清洁工",350.0,150.0,10.0,490.0,
03,"程虹",20,"清洁工",350.0,150.0,10.0,490.0,
04,"胡盼",20,"经理",500.0,200.0,50.0,650.0,
05,"刘光强",20,"经理",500.0,200.0,50.0,650.0,
06,"董瑶",20,"经理",500.0,200.0,50.0,650.0,};
   
int
  show_info(information info[6],int);////按姓名及工号输出工资清单
  
int
  max_salary(information info[6],int count);/////最大应发工资和最大实发工资函数,输出最大应发工资和最大实发工资人员的数据
int
  safe_cost_rate(information info[6],int);
  ///////////////////////按工种计算保险费占应发工资比率的输出数据
int
  sum(information info[6],int); ////////////////计算工资总额和工种工资总额函数
int
  show_list(information info[6],int count); /////////显示清单
main()
{
    printf(face); 
    int count=0; //////////表中的员工数目
    int i,result=0; 
    while(1)
    {
    
        printf("~~~~~~~~请输入您要选择的操作号码~~~~~~~~\n");
        scanf("%d",&i);
        switch(i){ 
        case 2:
            show_list(info,6);break;
        case 3:
            show_info(info,6);break;
        case 4:
            max_salary(info,6);break;
        case 5:
            safe_cost_rate(info,6);break;
        case 6:
            sum(info,6);break;
        default:
            printf("
  您的输入有误请重新输入\n");
            break;
        }
    }
}
int sum(information info[6],int count) //////////所有员工的工资之和,和同一工种的员工工资之和
{
    int i,sum=0,type_sum=0;
    char type[15];
    printf("请输入工种名\n");
    scanf("%s",type);
    for(i=0;i<count;i++) {
        if(!strcmp(info[i].type,type)) type_sum=type_sum+info[i].r_salary; ////////如果是同一工种求和
        sum=sum+info[i].r_salary; //////////////求总工资
    }
    printf("员工工资总额为:%d\n工种%s工资总额为:%d\n",sum,type,type_sum);
    return 0;
}
int safe_cost_rate(information info[6],int count) //////////保险费用占工种岗位工资的比率
{
    int i;
    char type[15]; 
    printf("请输入工种名\n");
    scanf("%s",type);
    for(i=0;i<count;i++)
        if(!strcmp(info[i].type,type)) {
  /////////////查找出匹配工种,并输出比率
            printf("保险费用占该工种应发工资的比率为:%.3f\n",info[i].safe_cost/info[i].p_salary);
            return 0;
        }
    printf("无此工种\n");
    return 0;
}
int max_salary(information info[6],int count) /////////////输出最大应发工资人员的数据和最大实发人员的数据
{
    int i,s_max=0,r_max=0,s_[15],r_[15],j=0,k=0;
    for(i=0;i<count;i++){
        if(s_max==(int)info[i].p_salary) {j++;s_[j]=i;} /////////如果有一样大的成员记录其在数组中的位置
        if(s_max<info[i].p_salary) {s_max=info[i].p_salary;j=0;s_[j]=i;} ///////////如果出现更大的将J置0,重新开始记录
        if(r_max==info[i].r_salary) {k++;r_[k]=i;}
     ///////////////////原理同上
        if(r_max<info[i].r_salary) {r_max=info[i].r_salary;k=0;r_[k]=i;}
    }
    //////////////以下是输出统计结果
    printf("最大应发工资人员数据为\n");
        for(i=0;i<=j;i++)
            printf("%d\t %s\t %d\t %s\t %d\t %.0f\t %.0f\t %d\n",
            info[s_[i]].num,info[s_[i]].name,info[s_[i]].age,info[s_[i]].type,info[s_[i]].b_salary,
            info[s_[i]].p_salary,info[s_[i]].safe_cost,info[s_[i]].r_salary);
     printf("最大实发工资人员数据为\n");
  
        for(i=0;i<=k;i++)
            printf("%d\t %s\t %d\t %s\t %d\t %.0f\t %.0f\t %d\n",
            info[r_[i]].num,info[r_[i]].name,info[r_[i]].age,info[r_[i]].type,info[r_[i]].b_salary,
            info[r_[i]].p_salary,info[r_[i]].safe_cost,info[r_[i]].r_salary);
        
        return 0;
}
int show_info(information info[6],int count) ///////////根据员工姓名显示其数据
{
     char name[15];
     int i;
     printf("请输入您要查看的员工姓名\n");
     scanf("%s",name);
     for(i=0;i<count;i++)
         if(!strcmp(info[i].name,name)) { /////////对输入的员工姓名进行匹配,如果有则进行输出
             printf("%d %s %d %s %d %.0f %.0f %d\n",info[i].num,info[i].name,info[i].age,info[i].type,
                 info[i].b_salary,info[i].p_salary,info[i].safe_cost,info[i].r_salary);
             return 0;}
     printf("不存在该员工\n");
         return 0;
}
int show_list(information info[6],int count) ///////////显示清单,即所有员工的数据
{
    int i; 
        printf("工号
     姓名
    年龄
    工种
    基本工资 岗位工资
  保险费
  实发工资\n");
    for(i=0;i<count;i++)
        printf("%-5d\t %-5s\t %-5d\t %-5s\t %-5d \t
   %-5.0f
    %-5.0f
   %-5d\n",info[i].num,info[i].name,info[i].age,info[i].type,
        info[i].b_salary,info[i].p_salary,info[i].safe_cost,info[i].r_salary);
    return 0;
}
总是错误..