保守沉稳冷静 2022-11-14 17:43 采纳率: 50%
浏览 17
已结题

为什么输入a01后程序就运行结束了?

大家帮我看一看为什么输入a01后程序就运行结束了?帮我解答一下并希望给出解决办法,谢谢啦!

img

程序代码如下:

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; 
}

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-11-14 17:47
    关注

    你执行的是哪个功能啊???
    scanf("%d",&i);你这员工编号到底啥数据类型啊?这里用%d接收整型,但你又说输入a01,整型怎么输入a01呢???

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 创建了问题 11月14日