运行结果是ld returned 1 exit status.应该是我的函数有问题,如何改正?

原题是:自动寄存柜有n个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时,只要在投币控制器中投入一个1元硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就会自动打开,顾客取走物品后,关上门。
输入数据时,可先输入寄存箱总数n, 再由用户选择是“投硬币”还是“输密码”。
如果选择“投硬币”,则只有硬币值是1时才开箱。如果有空闲的箱子,则输出箱子编号及密码(4位数字); 如果无空闲的箱子,则提示“本柜已满”。
如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示“密码错误”。
万能密码:假定有一个密码000086,该密码用于营业结束后整理寄存柜。先在菜单中输入隐藏的选项5,然后提示请输入万能密码,密码输入后,打开所有的箱子,如有箱子中客户没有取走东西,则提示:请重点检查某编号的箱子是否有物留存。
我的程序稍作改变,大致意思不变。
谢谢啦~

#include<stdio.h>
#include<time.h>
#include<stdlib.h> 
#include<string.h>
 //寄存柜结构
 struct lockers{
    int used;  //空0用1 
    int password;
 }locker[100]={0};
  int NewLocker();
  int TakeOut(int pword);
  int KeeperCheck();
 int main()
 {  
    int opennum=5;
    printf("目前开放箱数:");//管理员输入投入使用箱数 
    scanf("%d",&opennum);
    printf("-----【用户界面】-----\n");
    printf("1-寄存(需投入1元硬币)\n2-取物\n0-退出\n");
    int choice;
    int coin;
    int pword;
    char key[7]={'0','0','0','0','8','6'};
    char keeper[7];
    scanf("%d",&choice);
    switch(choice){
        case 1:
            srand(time(NULL));
            printf("请投入硬币:");
            scanf("%d",&coin);
            if(coin==1){
                NewLocker();
                break;
            }
            else
            break;
        case 2:
            printf("输入密码:");
            scanf("%d",&pword); 
            TakeOut(pword);
            break;
        case 0:
            printf("您已退出\n");
            break;
        case 5:
            printf("输入管理员密码:");
            scanf("%s",&keeper);
            if(strcmp(key,keeper)==0){
                KeeperCheck();
            }
            break;      
    }
    return 0; 
 } 

 //开启新箱子(判断是否存满并给出对应密码) 
  int NewLocker(int opennum){
    int i;
    for(i=0;i<=opennum;i++){
        if(locker[i].used==0){            //找空箱子 
            printf("箱子号码:%d\n",i);
            locker[i].used=1;             //使用标记
            locker[i].password=rand()%(9999-1000+1);  //存密码
            printf("密码为:%d\n",locker[i].password);
            break;
          }
        if(locker[opennum].used==1){
            printf("本柜已满\n");
            break;
        }
      }
      return 0;
  }
  //判断密码,取出物品归0并清空密码信息 
  int TakeOut(int pword){
    int j;
    int opennum;
    for(j=0;j<=opennum;j++){
        if(pword==locker[j].password){
            locker[j].used=0;
            locker[j].password=0;
            printf("欢迎下次再来!\n");
            break;
          }
        else
        printf("密码错误!\n");
        break;
      }
      return 0;
  }
  //管理员检查 
  int KeeperCheck(){
    int p;
    int opennum;
    for(p=0;p<=opennum;p++){
        if(locker[p].used==1){
            printf("%d 号箱有东西遗漏\n",p);
          } 
          else
          break; 
      }
      return 0;
  }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问