C++ 特定输入的意外行为

C++ 特定输入的意外行为,c++,while-loop,printf,continue,exponential,C++,While Loop,Printf,Continue,Exponential,我已经编写了以下代码,以找出求幂的a^b()的单位位置中的值。除了a=1之外,它在所有测试用例中都可以正常工作。当a=1时,它开始在命令提示符下(而不是在线编辑器上)无限打印输出(即1)。此外,仅当输入如下时,才会显示此意外行为: 1. 1(此处任意数字作为指数) 而不是在以下情况下: 1. (除1以外的任何数字)(此处任何数字作为指数) 代码如下: #include<stdio.h> int main() { int t; scanf("%d",&t); while(t-

我已经编写了以下代码,以找出求幂的a^b()的单位位置中的值。除了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;
}
#包括
int main()
{
int t;
scanf(“%d”、&t);
而(t--){
INTA;
scanf(“%d”和“&a”);
如果(a==1){//尽管a==1,continue语句的行为异常
printf(“1\n”);
持续
}
printf(“你好,男人2:)\n”);
int end=1,i,单位[500],温度=1;
长b;
scanf(“%lld”、&b);
如果(b==0){
printf(“1\n”);
持续
}
单位[0]=1;
bool-goOn=true,marker=false;
while(goOn){
温度*=a;
对于(i=0;i
我检查了代码,它工作正常。正如您所指出的,此错误只发生在命令提示符上,而不是在线编辑器上,可能的原因可能是您的编译器。您使用哪一个?或者您可以提供一些其他详细信息

我在下面附上了一个在我的终端上工作的截图。仅供参考,我使用的是gcc版本4.9.1

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


谢谢,@therainmaker。我也在使用gcc。当我试图将答案导出到一个.txt文件时,它继续在其中无限打印1。可能的原因是什么?@abhishek_-naik。我编辑了答案以回应你的评论。不幸的是,我仍然无法诊断这个问题。我需要你方面的更多信息。看起来只需重新启动命令提示符,机器就成功了。谢谢!你认为这可能是因为我让电脑运行了很长时间,并反复尝试这个例子吗?此外,我尝试重新提交解决方案,但仍然是一个问题(哈哈。我想我的回答是正确的,我说的是关闭电源,然后再打开电源。至于怀疑的原因,你说的话可能有一定的分量,但我缺乏确定的知识。另外,对于这个问题,继续尝试。这总比别人给你正确的代码要好得多。