当我在devc ++编译器中编译时,不打印输出。有任何逻辑错误吗?该程序应接受用户编号,打印最大回文大于给定数字。
这是SPOJ PALIN的问题
使用namespace std;
int main() {
int t;
cin>>t;
cout<<endl;
while(t--)
{long long int i;
long long int k;
int flag=1;
long long int n;
int a[10000000];
cin>>n;
n++;
start:
i=0;
while(n!=0)
{
a[i]=n%10;
i++;
n=n/10;}
i--;
k=i;
for(int j=0;j<=k;j++)
{
if(a[i]!=a[j])
{flag=0;break;}
else
i--;
}
if(flag==1)
cout<<n<<endl;
else
{n++;goto start;}
}
return 0;
}
答案 0 :(得分:0)
您尚未初始化标志变量。如果(a [i] == a [j])那么该标志将保持未初始化并且可能在检查if条件时产生问题,除非默认值为0(我不确定它是否会)。我还可以看到,根据你的代码,flag的值永远不会变为1。
#include<iostream>
using namespace::std;
int main()
{
int t;
cin>>t;
cout<<endl;
while(t--)
{
long int i, k, n; int a[1000]; int flag = 1, duplicaten;
cin>>n;
n++;
start:
//cout<<"inside start : n = "<<n<<"\n";
flag=1; i=0;
duplicaten=n;
while(n!=0)
{
a[i]=n%10;
i++;
n=n/10;
}
n=duplicaten;
i--;
k=i;
//cout<<"number of digits of n = "<<i+1<<"\n";
for(int j=0;j<=k;j++)
{
if(a[i]!=a[j])
{
flag=0;
break;
}
else
i--;
}
//cout<<"flag = "<<flag<<endl;
if(flag==1)
{
//cout<<"FOUND!!\n";
cout<<n<<endl;
}
else
{
n++;
//cout<<"NOT found\n";
goto start;
}
}
return 0;
}
您可以自行更改数据类型的大小,并至少对此答案进行投票。 < Output before using duplicaten : link to image >