请问为什么程序不能执行到scan()??
#include<stdio.h>#include <stdlib.h>
#include<conio.h>
#include<windows.h>
struct clerk { /*学生信息结构定义*/
int id;
char name[20]; /* 姓名 */
long jbgz; /* 基本工资 */
long zwgz; /* 职务工资 */
long gwjt; /* 岗位津贴 */
long ylbx; /* 医疗保险 */
long gjj; /* 公积金 */
long total;/*总工资*/
}a[100];
int displayMenu();
void save(int);
int inputData(struct clerk clerks[]);
int scan();
int displayMenu(){
int myChoice;
system("cls");
system("color 2E");
printf ("\t\t**********************************\n");
printf("\t\t|| 职工信息管理系统 ||\n");
printf ("\t\t**********************************\n");
printf("\n");
printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\t\t || 1.输入记录 2.显示记录 ||\n");
printf("\t\t | 3.修改记录 4.查找记录 |\n");
printf("\t\t | 5.删除记录 6.统计 |\n");
printf("\t\t || 7.退出 ||\n");
printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请选择您需要的操作(1~7):");
scanf("%d",&myChoice);
return myChoice;
}
int inputData(struct clerk clerks[])//输入职工的信息
{
int i,n;
system("cls");
printf("\t\t---------职工信息输入------------\n");
printf("请输入职工的人数:") ;
scanf("%d",&n); /*输入职工的人数*/
for(i=0;i<n;i++) {
printf("id号:");
scanf("%d",&clerks[i].id);
printf("姓名:");
scanf("%s",clerks[i].name);
getchar();
printf("基本工资:");
scanf("%d",&clerks[i].jbgz);
printf("职务工资:");
scanf("%d",&clerks[i].zwgz);
printf("岗位津贴:");
scanf("%d",&clerks[i].gwjt);
printf("医疗保险:");
scanf("%d",&clerks[i].ylbx);
printf("公积金:");
scanf("%d",&clerks[i].gjj);
printf("\n");
a[i].total=((a[i].gwjt)+(a[i].zwgz)+(a[i].jbgz)-(a[i].gjj)-(a[i].ylbx));
}
save(n);
}
void save(int n){
FILE*fp;
int i;
if((fp=fopen("clerk_list","wb"))==NULL)//以二进制读,写方式打开文件//
{
printf("File open error!\n");
exit(0);
}
for(i=1;i<=n;i++) /*将内存中输进去的信息存到磁盘中*/
if(fwrite(&a[i],sizeof(struct clerk),1,fp)!=1)
printf("File read error!\n");
fclose(fp);
}
int load()
{
FILE*fp;
int i=0;
if((fp=fopen("clerk_list","rb"))==NULL)
{
printf("can not open file\n");
exit(0);
}
else
{
do{
fread(&a[i],sizeof(struct clerk),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
int scan()
{
int sum=0;
int n,i;
n=load();
system("cls");
printf("---------显示职工的基本信息------");
printf("职工号 姓名 基本工资 职务工资 岗位津贴 公积金 总工资\n");
printf("-------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%d %s %d %d %d %d %d",&a[i].id,a[i].name,&a[i].jbgz,&a[i].zwgz,&a[i].gwjt,&a[i].ylbx,&a[i].gjj);
sum=sum+a[i].total;
}
printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("\n\n<职工平均工资为:%d >\n",sum/n);
printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~\n");
}
int main(void) {
int choice;
struct clerk clerks[100];
int n1,n2;
choice=displayMenu();
while(choice!=0){
switch(choice){
case 1:
n1=inputData(clerks);
break;
case 2:
n2=scan();
break;
}
choice=displayMenu();
}
return choice;
}