c++这个程序如何设计?

来源:百度知道 编辑:UC知道 时间:2024/06/18 07:06:51
困扰了我好久
编程实现,输入一个数,程序便让这个数和其反序数相加,得出一个新的数,然后再让这个新的数和其反序数相加,一直加到这个数是回文数为止,最后输入一共进行了多少次运算。
例如:95+59=154,154+451=605,605+506=1111,则一共进行了三次运算。
所谓回文数就是类似12321,67576这种前后对称的数字,谢谢各位~~~
再说一下,那个数据类型可不可以没有长度的限制啊?因为int整数定义型已经超出范围了,所以出现的数字并不正确~~~

//回文数,无长度限制(修改N即可),大整数加减,已验证结果正确性
//你有什么看不懂的可以百度hi我或者发消息

#include<iostream.h>
#define N 10000 //数字位数
int fun(int *,int);
void main()
{
int a[N]={0},i,n=0,m=0; //m是计数器
char s;
cout<<"请输入一个数字"<<endl;
for(i=0;i<N;i++)
{
cin.get(s);
if(s=='\n')
break;
else
{
a[i]=s-'0';
n++;
}
}
while(fun(a,n)!=1)
{
m++;
for(i=0;i<n;i++)
cout<<a[i];
cout<<'+';
if(a[n-1]!=0)
cout<<a[n-1];
for(i=1;i<n;i++)
cout<<a[n-i-1];
cout<<'=';
for(i=0;i<n/2.0;i++)
{
a[n-i-1]=a[i]=a[i]+a[n-i-1];
}
if(a[0]>=10)
{
for(i=n;i>0;i--)
a[i]=a[i-1];
n++;
a[0]=0;
}
for(i=n-1;i>0;i--)
if(a[i]>=10)
{
a[i-1]+=a[i]/10;
a[i]=a[i]%10