[英]Unexpected behavior for a particular input
我编写了以下代码,以求出幂a ^ b ( http://www.spoj.com/problems/LASTDIG/ )的单位位置的值。 对于所有测试用例,它都工作正常,除非a = 1 。 当a = 1时,它将开始在命令提示符下(尽管不在在线编辑器上)无限打印输出(即1)。 另外,仅当输入如下时,才会显示此意外行为:1 1(此处为指数的任何数字),而不是以下情况:1(1以外的任何数字)(此处为指数的任何数字)。
代码如下:
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
int a;
scanf("%d",&a);
if(a==1){ //Although a==1 the continue statement behaves abnormally
printf("1\n");
continue;
}
printf("Hello man 2! :)\n");
int end=1,i,unit[500],temp=1;
long long b;
scanf("%lld",&b);
if(b==0){
printf("1\n");
continue;
}
unit[0]=1;
bool goOn=true,marker=false;
while(goOn){
temp*=a;
for(i=0; i<end; i++){
if(unit[i]==(temp%10) && (temp%10)!=1)
marker=true;
}
if(marker)
goOn=false;
if(!marker){
unit[end]=(temp%10);
end++;
}
}
int tmp=b%(end-1);
if(tmp==0)
printf("%d\n",unit[(end-1)]);
else
printf("%d\n",unit[(tmp)]);
}
return 0;
}
是什么原因导致这种异常行为,我该如何纠正?
我检查了代码,它工作正常。 如您所指出的,此错误仅在命令提示符下发生,而不在在线编辑器上发生,可能的原因可能是编译器。 您使用哪一个? 或者,您可以提供其他一些详细信息。
我已经附上了下面的截图,该截图可以在我的终端上使用。 仅供参考,我使用的是gcc版本4.9.1。
编辑:我现在将输出写入文件。 它仍然没有出现任何问题。 我需要您提供更多信息。 在较轻的一面,您是否尝试过重新打开计算机电源?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.