大家帮我看一看为什么输入a01后程序就运行结束了?帮我解答一下并希望给出解决办法,谢谢啦!
程序代码如下:
void induction(struct list* l,struct staff s){//员工入职
int i;
if(l->sta[i].id==s.id||l->sta[i].name==s.name||l->sta[i].duty==s.duty)
{
printf("工号已存在\n");
}
else
{
l->count++;
l->sta[l->count]=s;
printf("添加成功!\n");
}
}
int search(struct list*l,int id){//根据工号查找员工,若存在则返回位置,若不存在则返回-1
int i;
for(i=0;i<=l->count;i++)
{
if(l->sta[i].id==id)
{
return i;
return 0;
}
}
return -1;
}
void quit(struct list* l,int id){//员工离职
int loc=search(l,id);
int i;
if(loc==-1)
printf("不存在该职工\n");
else {
for(i=loc;i<=l->count;i++){
l->sta[i]=l->sta[i+1];
}
l->count--;
printf("删除成功!\n");
}
}
void print(struct list* l){//打印当前员工信息
int i;
for(i=0;i<=l->count;i++){
printf("姓名:%s 工号:%d 职务:%s\n",l->sta[i].name,l->sta[i].id,l->sta[i].duty);
}
}
void show(struct list*l){//查找当前员工信息
printf("请输入要查看的员工编号:");
int i;
scanf("%d",&i);
for(i=0;i<=l->count;i++){
if(i==l->count)
printf("姓名:%s 工号:%d 职务:%s\n",l->sta[i].name,l->sta[i].id,l->sta[i].duty);
}
}
int main(){
struct staff s;
struct list li;
struct list* l=&li;
int id;
int system;
l->count=-1;
printf("-----------------员工管理系统------------------\n");
printf("*****菜单*****\n");
printf("1.入职\n2.离职\n3.打印\n4.查找\n");
printf("请输入您选择的操作:\n");
int choose;
while(scanf("%d",&choose)==1)
{
switch (choose){
case 1:
printf("请输入要添加职工的姓名,工号,职务:\n");
scanf("%s%d%s",s.name,&s.id,s.duty);
induction(l,s);
break;
case 2:
printf("请输入要删除职工的工号\n");
scanf("%d",&id);
quit(l,id);
break;
case 3:
print(l);
break;
case 4:
show(l);
break;
}
}
return 0;
}