特定输入的意外行为

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 版。

编辑:我现在将输出写入文件。它仍然没有出现任何问题。我需要你提供更多信息。在较轻松的方面,您是否尝试过关闭并重新打开计算机?