统计功能没法循环使用 求助 谢谢!
程序代码:
#include<string.h> #include<stdlib.h> #include <stdio.h> typedef struct employee { char num[10]; //保存职工编号 char name[15]; //保存职工姓名 char sex[4]; //保存职工性别 int danwei; //保存职工所属二级单位 char majoy[10]; //保存职工所学专业 char call[15]; //保存职工职称 int salary; //保存职工月工资 char tell[10]; //保存职工电话号码 }worker; void menu() { printf("****************************欢迎来到高校职工管理界面****************************\n"); printf("================================================================================"); printf(" ① 输入记录 ② 删除记录 ③ 增加记录\n"); printf(" ④ 查询记录 ⑤ 统计记录 ⑥ 排序操作\n"); printf(" ⑦ 保存记录 ⑧ 显示记录 ⑨ 退出界面\n"); printf("================================================================================\n"); printf("二级单位如下表:\n"); printf(" ┌─────────────────────────────┐\n"); printf(" │ 1.财务部 │ 2.行政部 │ 3.人事部 │\n"); printf(" │ 4.教学部 │ 5.校长办公室 │ 6.学院办公室 │\n"); printf(" │ 7.学生处 │ 8.后勤部 │ 9.保卫处 │\n"); printf(" └─────────────────────────────┘\n"); printf("请输入功能键(①-⑨):\n"); } (中间省略其他功能函数) int count(worker a[],int y) //统计指定二级单位人数及工资总额 { int q[9]={0,0,0,0,0,0,0,0,0}; int sum[9]={0,0,0,0,0,0,0,0,0}; int x; int i=0; for(i=0;i<y;i++) { if(a[i].danwei==1) { q[0]++; sum[0]+=a[i].salary; } if(a[i].danwei==2) { q[1]++; sum[1]+=a[i].salary; } if(a[i].danwei==3) { q[2]++; sum[2]+=a[i].salary; } if(a[i].danwei==4) { q[3]++; sum[3]+=a[i].salary; } if(a[i].danwei==5) { q[4]++; sum[4]+=a[i].salary; } if(a[i].danwei==6) { q[5]++; sum[5]+=a[i].salary; } if(a[i].danwei==7) { q[6]++; sum[6]+=a[i].salary; } if(a[i].danwei==8) { q[7]++; sum[7]+=a[i].salary; } if(a[i].danwei=9) { q[8]++; sum[8]+=a[i].salary; } } printf("请输入需要统计的二级单位代号:"); scanf("%d",&x); switch(x) { case 1: printf("1.财务部的人数为%d,工资总额为:%d\n",q[0],sum[0]); break; case 2: printf("2.行政部的人数为%d,工资总额为:%d\n",q[1],sum[1]); break; case 3: printf("3.人事部的人数为%d,工资总额为:%d\n",q[2],sum[2]); break; case 4: printf("4.教学部的人数为%d,工资总额为:%d\n",q[3],sum[3]); break; case 5: printf("5.校长办公室的人数为%d,工资总额为:%d\n",q[4],sum[4]); break; case 6: printf("6.学院办公室的人数为%d,工资总额为:%d\n",q[5],sum[5]); break; case 7: printf("7.学生处的人数为%d,工资总额为:%d\n",q[6],sum[6]); break; case 8: printf("8.后勤部的人数为%d,工资总额为:%d\n",q[7],sum[7]); break; case 9: printf("9.保卫处的人数为%d,工资总额为%d\n",q[8],sum[8]); break; default:printf("查找不到该二级单位代号,请重新输入!\n"); } return y+1; } (中间再次省略功能函数) void main() //主函数 { int selete,c=0; int i=0; int z=0; char q,p,x,s; worker b[100]; FILE *fp; if((fp=fopen("worker++.txt","rb"))==NULL) printf("Not Found!\n"); else { do { fread(&b[i],sizeof(struct employee),1,fp); i++; }while(!feof(fp)); fclose(fp); c=i-1; } while(1) { menu(); //菜单 scanf("%d",&selete); if(selete==9) { printf("感谢您的使用,再见!\n"); break; } switch(selete) { case 1: c=input(b,c); break; case 2: { do { c=del(b,c); printf("是否继续删除,是按y,否则请按任意值\n"); getchar(); scanf("%c",&p); }while(p=='Y'||p=='y'); break; } case 3: { do { c=add(b,c); printf("是否继续插入,是按y,否则请按任意值\n"); getchar(); scanf("%c",&s); }while(s=='Y'||s=='y'); break; } case 4: { do { search(b,c); printf("是否继续查找,是按y,否则请按任意值\n"); getchar(); scanf("%c",&x); }while(x=='Y'||x=='y'); break; } case 5: { do { c=count(b,c); printf("是否继续统计,是按y,否则请按任意值\n"); getchar(); scanf("%c",&q); }while(q=='Y'||q=='y'); break; } case 6: sort(b,c); display(b,c); break; case 7: save(b,c); break; case 8: display(b,c); break; default:printf("请重新输入!\n"); } } }情况就是使用统计功能时候 提示是否继续统计,选择y后,输入二级单位代码,但是输出的二级单位人数跟工资总额都是为0,哪里出错了?谢谢~