标题:程序出现死循环求帮助
只看楼主
非是菲菲
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2013-12-20
结帖率:83.33%
已结贴  问题点数:16 回复次数:3 
程序出现死循环求帮助
下面这个程序在运行到第二步的时候出现了死循环,找不出原因,望大家帮帮忙



#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
typedef struct seedoctor
{
   char data[100];           /*数据域*/
   struct seedoctor *next;  /*指针域 */
}seetype;          /*键队列节点类型 */

typedef struct
{
seetype *front,*rear;
}linkqueue;          /*键队类型 */

#define null 0
/*#define t

/*登陆界面*/
void jiemian()
{
printf("\t*****************************\n");
printf("\t*****************************\n");
printf("\t*****************************\n");
printf("\t****   病人就医管理系统   ****\n");
printf("\t*****************************\n");
printf("\t*****************************\n");
printf("\t*****************************\n");
}

/*设置密码 */
void cipher()
{
int a,i;
a=123;
printf("\t请输入密码:");
scanf("\t%d",&a);
for(i=1;i<3;i++)
 if(a!=123)
 {
  printf("\t密码错误!请重新输入:");
  scanf("\t%d",&a);
 }
 if(a!=123)
 {
 printf("\t登录失败/n");
 exit(0);
 }
printf("登陆成功\n");
}

void welcome()
{
printf("\t*****************************\n");
printf("\t*****************************\n");
printf("\t*****************************\n");
printf("\t****   病人就医管理系统   ****\n");
printf("\t*****************************\n");
printf("\t*****************************\n");
printf("\t*****************************\n");
}
/*主要功能*/
void module()
{
printf("\t主要功能如下:\n");
}
/*功能的实现*/
void seedoctor()
{
int sel,flag=1;
linkqueue *lq;
seetype *s;
char number[100];
lq=(linkqueue *)malloc(sizeof(linkqueue));
lq->front=(seetype *)malloc(sizeof(seetype));
lq->front->next=null;
lq->rear=lq->front;
  while(flag==1)
/*主要模块*/
  {
   printf("\t*******************************\n");
   printf("\t*******************************\n");
   printf("\t*********  1  2  3  4  ********\n");
   printf("\t** 排队  就诊  查看排队  下班**\n");
   printf("\t请选择:");
   scanf("\t%d",&sel);

   switch(sel)
   {
   /*患者排队 */
   case 1:
     printf("\t********************\n");
     ("\t********************\n");
     printf("\t输入患者病历号\n");
     scanf("\t%s",number);
     s=(seetype *)malloc(sizeof(seetype));
     strcpy(s->data,number);
     s->next=null;
     lq->rear->next=s;
     lq->rear=s;
     break;
    /*患者就诊 */
     case 2:
     if(lq->front=lq->rear)
     printf("\t没有排队的患者\n");
       else
       {
        s=lq->front->next;
        if(lq->rear==s)
        lq->rear=lq->front;
        printf("\t患者%s就诊\n",s->data);
        lq->front->next=s->next;
        free(s);
       }
     break;
   /*查看排队 */
    case 3:
    if(lq->front==lq->rear)
    printf("\t没有排队的患者\n");
      else
      {
        s=lq->front->next;
        printf("\t排队患者:\n");
        while(s!=null)
        {
         printf("\t%s",s->data);
         s=s->next;
        }
       printf("\n");
      }
    break;
  /*下班*/
case 4:
  if(lq->front!=lq->rear)
  {
      printf("\t请排队的患者明天就诊\n");
      flag=0;
      break;
  }
   }
  }
}
  
/*退出系统*/
void end()
{
    printf("\t**************************\n");
    printf("\t**************************\n");
    printf("\t**************************\n");
    printf("\t 谢谢使用病人就医管理系统 \n");
    printf("\t**************************\n");
    printf("\t**************************\n");
    printf("\t**************************\n");
}
/*主函数 */
 void main()
  {
  long i,t;
  printf("\t*****************************\n");
  printf("\t*****************************\n");
  printf("\t*****************************\n");
  printf("\t****   病人就医管理系统   ****\n");
  printf("\t*****************************\n");
  printf("\t*****************************\n");
  printf("\t*****************************\n");

  cipher();
  welcome();
   seedoctor();
  end();
  for(i=0;i<10000000;i++)
    {
      t=time(null);
      printf("%d%d%d\n");
      printf(ctime(&t));
    }
  }
搜索更多相关主题的帖子: include null 
2014-05-06 16:45
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:6 
/*患者就诊 */
     case 2:
     if(lq->front=lq->rear)   //这里应该用“==”
     printf("\t没有排队的患者\n");
       else
       {
        s=lq->front->next;
        if(lq->rear==s)
        lq->rear=lq->front;
        printf("\t患者%s就诊\n",s->data);
        lq->front->next=s->next;
        free(s);
       }
     break;

总有那身价贱的人给作业贴回复完整的代码
2014-05-06 16:50
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:6 
我vs无法通过编译呢

1>d:\c_source\w4\w4.cpp(176): warning C4244: “=”: 从“time_t”转换到“long”,可能丢失数据
1>d:\c_source\w4\w4.cpp(178): error C2664: “ctime”: 不能将参数 1 从“long *”转换为“const time_t *”

DO IT YOURSELF !
2014-05-06 16:51
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
得分:0 
以下是引用embed_xuel在2014-5-6 16:50:47的发言:

/*患者就诊 */
     case 2:
     if(lq->front=lq->rear)   //这里应该用“==”
     printf("\t没有排队的患者\n");
       else
       {
        s=lq->front->next;
        if(lq->rear==s)
        lq->rear=lq->front;
        printf("\t患者%s就诊\n",s->data);
        lq->front->next=s->next;
        free(s);
       }
     break;

先把这个错误改了,再试试,一搭眼就看见这个错误了,其他的就没看,不知道还有没有别的问题

总有那身价贱的人给作业贴回复完整的代码
2014-05-06 16:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431092-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021998 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved