简易连连看(本题的坑巨多!我帮大家总结一下)
发布日期:2021-05-06 03:52:58 浏览次数:21 分类:技术文章

本文共 1003 字,大约阅读时间需要 3 分钟。

简易连连看

题目

在这里插入图片描述

答案

#include
int main(){ int n; scanf("%d",&n); getchar(); n=n*2; //将n乘2以方便后续的代码编写 char a[n][n]; int i,j,k; for(i=0;i

总结遇到的坑

  1. 在遇到输入字符的题目时,一定要注意对于空格、回车等字符的特殊处理,拿本题来说,每行都要分情况处理并在最后加一个getchar();同时,在输入整数和输入字符之间也要加一个getchar()吸收回车。代码如下:
scanf("%d",&n);	getchar();	n=n*2;	char a[n][n];	int i,j,k;	for(i=0;i
  1. 如题所说,注意格子的行、列编号是从1到2N,所以在输入坐标后,要将他们都减一,以此来和数组适配。代码如下:
int x1,y1,x2,y2;	scanf("%d %d %d %d",&x1,&y1,&x2,&y2);	x1--,y1--,x2--,y2--;
  1. 在判断是否连连看成功时,要注意,如果两个字符已经是*了,就还是要输出Uh-oh,而非进行后续的打印操作。代码如下:
if(a[x1][y1]==a[x2][y2]&&a[x1][y1]!='*'&&a[x2][y2]!='*')
  1. 这里判断是否全部匹配成功,不需要每次都遍历数组判断是否都为*,只需创建一个count2变量用以记录匹配成功的次数,当匹配的次数与数组内总字符数量的一半相等时,就是全部匹配成功的时刻。(这个算是注意事项)

  2. 在打印第三次Uh-oh后,要马上输出Game Overbreak,而非将所有的‘*’打印出来。所以这个地方要注意判断count2(匹配成功的次数)的位置.代码如下:

if(a[x1][y1]==a[x2][y2]&&a[x1][y1]!='*'&&a[x2][y2]!='*')	{   		count2++;		if(count2==n*n/2)		{   			printf("Congratulations!\n");			break;		}		a[x1][y1]='*';		a[x2][y2]='*';		for(j=0;j

最后

当你绕过上述的所有坑后,恭喜你!你已经能顺利通过测验了。

既然都看到这了,大家能不能为这篇文章点上一个宝贵的赞呢?十分感谢大家!

上一篇:字符串字母大小写转换
下一篇:数字加密(总结有一个节点出错的原因)

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月04日 08时45分05秒