统计功能没法循环使用 求助 谢谢!
程序代码:#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,哪里出错了?谢谢~









