位数<=100位,即可能到100位,这时候用数值型的变量肯定是没有办法的。
其实这题使用数组是很简单的。
#include
#include
int main()
{
char Input[100]; //字符数组
int Length; //输入的长度
int i; //循环使用的变量
while(1)
{
scanf("%s",Input);
Length = strlen(Input); //获取输入的长度
if(Length==1 && Input[0] == '0') //输入0退出
{
break;
}
printf("位数:%d\n",Length);
for(i=0;i
if(Input[i] != Input[Length-i-1])
{
i=Length; //若有其中任何数不相等,则退出,同时置个标志表示一下
break; //下面好进行判断
}
}
if(i==Length) //上面设的判断标志
{
printf("NO\n");
}
else //如果是YES i的值永远也不会大于 Length/2
{
printf("YES\n");
}
}
return 0;
}
当然这代码中我是没有进行输入的合法性判断。即要求输入的是数字。
如果需要,可以自行添加。
你想用2^64的数量级的变量来接受表示0~10^99数量级的数,明显不行。
对于大数的处理,最好自己定义结构。