啊哈算法——纸牌游戏,小猫钓鱼问题或有缺失导致无法正常运行

啊哈算法——纸牌游戏,小猫钓鱼问题或有缺失导致无法正常运行_第1张图片

1.读者自检
        如果已经写完代码可以输入数据结合上文正确数据和下文可能导致的错误进行比照,从而判定当前错误与本文是否有关

 

lose1收回牌面的时候没有收回最后一张的t(两人两处),
导致错误:输出数据手中牌和桌子上的牌的总和会小于等于两人初始的牌总数

lose2在q1出完牌之后没有进行检查,导致可能q1出完牌之后游戏还在进行,
导致错误:输出的数据和正确数据在手中牌中==有时==会少一张牌,这张牌会出现在桌子上面

2.啊哈原代码和缺失点解剖

#include 
struct queue 
	{
		int data[1000];
		int tail;
		int head;	
	};
struct stack
	{
		int data[10];
		int top;
	};
	//1.1对 两个人的牌面和桌子上面的牌数量进行设置结构体
int main()
{
	struct queue q1,q2;
	struct stack s;
	int t;//输入的数据
	int i;
	int book[10];
	
	//1.2设相关变量
	q1.head=1;q1.tail=1;
	q2.head=1;q2.tail=1;
	//1.3对结构体进行初始化
	s.top=0;
	//输入结构
//	scanf("%d",&n);
	//2.1输入n组数据
	for(i=0;i<=9;i++)
	{
		book[i]=0;
	}
	for(i=1;i<=6;i++)
	{
		scanf("%d",&q1.data[q1.tail]);
		q1.tail++;
	}
	for(i=1;i<=6;i++)
	{
		scanf("%d",&q2.data[q2.tail]);
		q2.tail++;
	}
	//2.2输入两组数据
	while(q1.head0)
		{
			printf("\n桌上的牌是");
			for(i=1;i<=s.top;i++)
			{
				printf(" %d",s.data[i]);
			}
		}
		else
			printf("\n桌上已经没有牌了");


	}
	else
	{
		printf("小哈win\n");
		printf("小哈当前手中的牌是");
		for(i=q2.head;i<=q2.tail-1;i++)
		{
			printf(" %d",q2.data[i]);
		}
		if(s.top>0)
		{
			printf("\n桌上的牌是");
			for(i=1;i<=s.top;i++)
			{
				printf(" %d",s.data[i]);
			}
		}
		else
			printf("\n桌上已经没有牌了");
	}
//4.输出结构
return 0;

}

3.正确代码(改正之后)

        把三个缺失代码补上之后就可以正常运行了,为防止中间代码还有错误,把正确代码贴在这里,希望有帮助

#include 
struct queue 
	{
		int data[1000];
		int tail;
		int head;	
	};
struct stack
	{
		int data[10];
		int top;
	};
	
int main()
{
	struct queue q1,q2;
	struct stack s;
	int t;
	int i;
	int book[10];
	q1.head=1;q1.tail=1;
	q2.head=1;q2.tail=1;
	s.top=0;
	for(i=0;i<=9;i++)
	{
		book[i]=0;
	}
	for(i=1;i<=6;i++)
	{
		scanf("%d",&q1.data[q1.tail]);
		q1.tail++;
	}
	for(i=1;i<=6;i++)
	{
		scanf("%d",&q2.data[q2.tail]);
		q2.tail++;
	}
	while(q1.head0)
		{
			printf("\n桌上的牌是");
			for(i=1;i<=s.top;i++)
			{
				printf(" %d",s.data[i]);
			}
		}
		else
			printf("\n桌上已经没有牌了");


	}
	else
	{
		printf("小哈win\n");
		printf("小哈当前手中的牌是");
		for(i=q2.head;i<=q2.tail-1;i++)
		{
			printf(" %d",q2.data[i]);
		}
		if(s.top>0)
		{
			printf("\n桌上的牌是");
			for(i=1;i<=s.top;i++)
			{
				printf(" %d",s.data[i]);
			}
		}
		else
			printf("\n桌上已经没有牌了");
	}
return 0;

}


 

你可能感兴趣的:(算法)