为什么会出现这种情况

#include <iostream>
#include <cmath>
using namespace std;
int isprime(int n)
{
    for(int i=2;i<sqrt(n);i++)
    {
        if(n%i==0)
        {
            return 0;
        }
    }
    return 1;

}
int ishw(int n)
{
    int x=n;
    int k[10];
    int i=0;
    while(x!=0)
    {
        k[i]=x%10;
        x=x/10;
        i++;
    }
    int t=0;
    while(i!=-1)
    {
        x=x+k[t]*pow(10,(i-1));
        i--;
        t++;
}
if(x==n)
{return 1;
}
return 0;
}
int main()
{
    int n;
    cin>>n;
    cout<<isprime(n);
    cout<<ishw(n);
    if(isprime(n)==1&&ishw(n)==1)
    {
    cout<<"wow";
    }else
    {cout<<"no";
    }
}

红框处的判断次数多了一次,以你输入的11为例,前面的运算得到的i值为2,如果以i!=-1为判断条件,则循环将执行3次,由于数组k没有初始化,那么k[2]的值就是随机的,那么同样的参数,每次结果都可能不一样。

解决办法:

第一种:将红框处的判断条件改为i!=0

第二种:将数组k初始化为0,即int k[10] = {0};

茅塞顿开,感谢