老是编译错误,哪里出问题了吗

不知道为什么老是编译错误,哪里出问题了吗,有人可以帮我看看吗

img

img

后面你在使用这个函数的时候,至少不能在括号后面加分号。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7800859
  • 这篇博客也不错, 你可以看下一群人在玩报三退圈的游戏,问最后留下来的那个人最开始是排在第几位?
  • 除此之外, 这篇博客: (模拟看病)编写一个程序,反映病人到医院看病,排队看医生的情况。中的 前情提要 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 代码使用cpp文件,使用链队。

    在病人排队过程中,主要重复两件事:

    (1)病人到达诊室,将病历交给护士,排到等待队列中候诊。

    (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。

    要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:

    1. 排队——输入排队病人的病历号,加入到病人排队队列中。
    2. 就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。
    3. 查看排队——从队首到队尾列出所有的排队病人的病历号。
    4. 不再排队,余下顺序就诊——从队首到队尾列出所有的排队病人的病历号,并退出运行。
    5. 下班——退出运行,提示未就诊的病人明天再来。
    #include<stdio.h>
    #include<malloc.h>
    typedef struct qnode
    {//链队节点类型
    	int data;
    	struct qnode *next;
    }QNode;
    typedef struct
    {//队头、队尾指针
    	QNode *front,*rear;
    }QuType;
    void Destroyqueue(QuType *&qu)
    {//自由链队
    	QNode *p,*q;
    	p=qu->front;
    	if(p!=NULL)//若链队不为空
    	{
    		q=p->next;
    		while(q!=NULL)
    		{//让队中节点自由
    			free(p);
    			p=q;
    			q=q->next;
    		}
    		free(p);free(q);
    	}
    	free(qu);//自由链队节点
    }
    void SeeDoctor()
    {
    	int sel,flag=1,find,no;
    	QuType *qu;
    	QNode *p;
    	qu=(QuType *)malloc(sizeof(QuType));//创建空队列
    	qu->front=qu->rear=NULL;
    	while(flag==1)//循环执行
    	{
    		printf("1.排队;2.就诊;3.查看排队;4.不再排队,余下依次就诊;5.下班\n");
    		printf("请选择:");scanf("%d",&sel);
    		switch(sel)
    		{
    		case 1:printf("---请输入病例号:");//排队
    			do{
    				scanf("%d",&no);
    				find=0;//如果有重复排队,则为1
    				p=qu->front;
    				while(p!=NULL&&!find)//查看是否重复排队
    				{
    					if(p->data==no)find=1;
    					else p=p->next;
    				}
    				if(find) printf("---输入病历号重复,请重新输入:");
    			}while(find==1);//找到重复的,重新读取
    			p=(QNode *)malloc(sizeof(QNode));//创建新节点
    			p->data=no;p->next=NULL;//节点赋值
    			if(qu->rear==NULL)
    				qu->front=qu->rear=p;//确认第一个节点为p,头结点为p
    			else{
    				qu->rear->next=p;
    				qu->rear=p;
    			}
    			break;
    		case 2:if(qu->front==NULL)//就诊
    				   printf("---没有排队的病人!\n");
    			   else{
    				   p=qu->front;//p节点取第一个节点
    				   printf("---病人%d就诊\n",p->data);
    				   if(qu->rear==p)//如果链队就一个元素,现在便为空
    					   qu->front=qu->rear=NULL;
    				   else//不然前指针就右走一个
    					   qu->front=p->next;
    				   free(p);//自由p节点
    			   }
    			   break;
    		case 3:if(qu->front==NULL)//查看排队
    				   printf("---没有排队的病人!\n");
    			   else{
    				   p=qu->front;//p节点取第一个节点
    				   printf("---排队病人:");
    				  while(p!=NULL)
    				  {
    					  printf("%d ",p->data);
    					  p=p->next;
    			   }
    				  printf("\n");
    			   }
    			   break;
    		case 4:if(qu->front==NULL)//不再排队,余下依次就诊
    				   printf("---没有排队的病人!\n");
    			   else{
    				   p=qu->front;//p节点取第一个节点
    				   printf("---病人按照以下顺序就诊:");
    				  while(p!=NULL)
    				  {
    					  printf("%d",p->data);
    					  p=p->next;
    			   }printf("\n");
    			   }
    			   flag=0;
    			   Destroyqueue(qu);
    			   break;
    		case 5:if(qu->front==NULL)//下班
    			 	  printf("---没有排队的病人!\n");
    			printf("提示未就诊的病人明天再来\n");
    			   flag=0;
    			   Destroyqueue(qu);
    			   break;
    		}
    	}
    }
    
    void main()
    {
    	SeeDoctor();
    }

    输出

     

    输入

    1
    3018
    1
    3019
    1
    3020
    3
    2
    3
    4
    5

  • 您还可以看一下 王剑老师的站长必修课:网站是怎样做出来的?课程中的 运营:才刚开始,站长更重要的工作…小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对编译错误频繁出现的问题,可能原因有很多,以下是一些可能的解决方案:

    1.检查代码语法错误

    编写代码时,语法错误很容易出现,例如拼写错误、大小写错误、括号不匹配等。这些错误通常可以通过编译器的错误输出信息快速定位出来,详细信息包括错误类型、错误行数和错误描述等,需要认真查看。

    2.检查代码逻辑错误

    如果代码的语法正确但逻辑错误,这往往是最难调试的问题。解决这种问题需要仔细检查变量的赋值和计算、循环和条件语句等,排查出代码中的问题后进行修复。

    3.使用调试工具

    调试工具可以帮助开发人员定位和解决问题,提供相关的调试信息,例如内存使用情况、调用堆栈和变量值等。在编译代码时,启用调试模式可以输出调试信息,也可以手动添加调试信息。调试工具包括IDE内置调试器和第三方工具,例如GDB和valgrind等。

    4.优化编译选项

    编译选项可以影响代码的运行效率和可移植性,选择合适的编译选项可以降低代码出错的可能性。例如,开启-Wall选项可以输出所有警告信息,加入-O选项可以优化代码执行效率。

    这些解决方案并不是银弹,每个问题都有其独特的解决方案,需要根据具体情况进行调试和优化。但是,通过多年的实践经验,以上方案是最常见和有效的方法之一。

试了下,没啥问题:

#include <stdio.h>
int Cow(int n);
int main()
{
    int day;
    scanf("%d", &day);
    printf("%d\n", Cow(day));
    return 0;
}

int Cow(int n)
{
    int m;
    if (n < 4)
        m = n;
    else
        m = Cow(n - 1) + Cow(n - 3);
    return m;
}