首页 > 电脑

请帮我改一改这个代码,让它跑出来,谢谢

更新时间2019-12-23 07:27:50

#include <stdio.h>#include<stdlib.h>typedef struct boxnode{ int mima;//开箱密码  int x;//判断此箱是否有东西:若有则x为1,若无则x为0 struct boxnode *next; int y; //编号 }boxnode;//设置链表 结点

void initnode(boxnode *p); //初始化结点 void createbox(boxnode *p,int n); //前插法创建单链表 void wayone(int num,boxnode *pre);//存物品得密码 void waytwo(int num,boxnode *pre);//用密码取物品 void initnode(boxnode *p) {  p=(boxnode *)malloc(sizeof(boxnode));  p->next=NULL; p->mima=1122; p->x=0; p->y=1; } void createbox(boxnode *p,int n) {  boxnode *s;  int i,m;  for(i=0,m=1134;i<n;++i,m++)  {   s=(boxnode *)malloc(sizeof(boxnode));   s->mima=m;   s->x=0;   s->next=NULL;   s->next=p->next;   p->next=s;  } }int main(){ int c,num; boxnode *p; initnode(p); printf("寄存箱总数"); scanf("%d",&num); createbox(p,num); do{        printf("1.投硬币 2.输密码 0.退出  请选择:");        scanf("%d", &c);        switch (c) {            case 1:                wayone(num,p);                break;            case 2:                waytwo(num,p);                break;            case 0:                break;        }        printf(" ");//换行操作符    }while (c != 0);//当c等于0时退出循环    return 0;}void wayone(int num,boxnode *pre){ int i,b; boxnode *q; initnode(q); printf("请投币"); scanf("%d",&b); if(b==1) {  if(num==0)   printf("本柜已满");  else   for(i=0;i<num;++i)    if(q->x==0)//寻找空柜     {     printf("编号:%d密码:%d",q->y,q->mima);     q->x=1;//此柜已满      break;    }    if(q->x!=0) q=q->next; }   }  void waytwo(int num,boxnode *pre) {  int c,i;  boxnode *q; initnode(q);   printf("请输入密码:");  scanf("%d",&c);  for(i=0;i<num;++i)  {  if(q->mima==c)   {    printf("%d号寄存箱已开",q->y);    q->x=0;//此柜已空     break;   }   else if(q->mima!=c&&i<num) q=q->next;   else    printf("密码错误"); } }  

 

程序至少有一个致命错

你的在createbox中p没有初始化

修改

请帮我改一改这个代码,让它跑出来,谢谢


相关标签:谢谢

上一篇:用c++写一个8进制数转3进制数代码

下一篇:java程序员刚入职都会被分配些什么任务啊,难度大吗