Compile Error 这个问题非常困扰我~在我的机器上编译过去了~但是在poj上过不去~~求c语言高手解答

代码#include<stdio.h>#include<math.h>voidmain(){chara[4],b[4];intx,y,n,i;while(scanf("%... 代码
#include<stdio.h>
#include<math.h>

void main()
{
char a[4],b[4];
int x,y,n,i;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%s %s",a,b);
x=abs(a[0]-b[0]);
y=abs(a[1]-b[1]);

if(x==0 && y==0)
printf("0 0 0 0\n");
else
{
if(x<y)
printf("%d",y);
else
printf("%d",x);

if(x==y||x==0||y==0)
printf(" 1");
else
printf(" 2");

if(x==0||y==0)
printf(" 1");
else
printf(" 2");

if(abs(x-y)%2!=0)
printf(" Inf\n");
else if(x==y)
printf(" 1\n");
else
printf(" 2\n");

}

}

}

}

这个问题非常困扰我~在我的机器上编译过去了~但是在poj上过不去~~求c语言高手解答
展开
 我来答
mydevelop_2011
2011-08-25
知道答主
回答量:17
采纳率:0%
帮助的人:19.1万
展开全部
每次使用scanf()前,特别是以字符或字符串方式时,需要使用flush() 刷新缓存。
追问
什么~~是那个问题吗 原来没有遇见过啊 怎么改啊 不会
追答
fflush(stdin) ;   清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)   
/*stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入 */  
以你代码为例,需要在scanf("%s %s",a,b);之前添加fflush(stdin) ;
即修改后代码为:
。。。
for(i=0;i<n;i++)
{
fflush(stdin) ; //增加此处语句,做清空缓存。
scanf("%s %s",a,b);
。。。
}
喜神什么
2011-09-04
知道答主
回答量:9
采纳率:0%
帮助的人:1.4万
展开全部
用fflush(stdin) ;清除缓存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式