#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};
茅塞顿开,感谢