C语言GOTO问题,为什么if条件不成立了还会执行GOTO语句,各位帮我看看代码,谢谢

#include<stdio.h>intmain(){intn,m,i;inttop,tail,front,back;scanf("%d\n",&n);for(i=0;i... #include <stdio.h>

int main()
{
int n,m,i;
int top,tail,front,back;
scanf("%d\n",&n);
for (i=0;i<n;i++)
{
scanf("%d\n",&m);
int a[100][100];
for (int j=0;j<m;j++)
{
for (int k=0;k<m;k++)
scanf("%d",&a[j][k]);
}
//printf("dont liesh");
for(j=0;j<m;j++)
{
front=0,back= m-1;
while(front<back)
{
if(a[j][front]!=a[j][back])//左右对折
goto st;
front++,back--;
}
for(top=0,tail=m-1;top<tail;top++,tail--)
{
if(a[top][j]!=a[tail][j])
goto st;
}
if (top==tail && j==m-1 )
{
printf("YES\n");

}
}
st:
printf("NO\n");
}
return 0;
}
展开
 我来答
zhoukun44444
2009-06-15 · TA获得超过171个赞
知道答主
回答量:71
采纳率:0%
帮助的人:75.4万
展开全部
scanf("%d\n",&n);//这是第一个问题,如果你里边加了\n 需要敲输入两次数据且回车才能读入第一个数据,并将后一个数据存入STDIN的缓存给下一个输入数据.
第2 :虽然程序写的有点乱但是还是懂了,应该是判断一个2维数组是不是左右上下对称的,结果应该是打印了很多次YES之后还是执行了NO了是不,因为你就算条件全部都不执行GOTO语句,顺序执行也会执行到ST为标号的那句的,因为不知道具体题意,按照自己的理解给改了一下。试一下看可以不
int main()
{
int n,m,i;
int top,tail,front,back;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d",&m);
int a[100][100];
for (int j=0;j<m;j++)
{
for (int k=0;k<m;k++)
scanf("%d",&a[j][k]);
}
//printf("dont liesh");
for(j=0;j<m;j++)
{
front=0,back= m-1;
while(front<back)
{
if(a[j][front]!=a[j][back])//左右对折
goto st;
front++,back--;
}
for(top=0,tail=m-1;top<tail;top++,tail--)
{
if(a[top][j]!=a[tail][j])
goto st;
}
if (top==tail && j==m-1 )
{
printf("YES\n");
}
}
continue;//结束本次循环不执行下面的语句
st:

printf("NO\n");
}
return 0;
}
有问题可以HI我
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式