提供一个参考 😁
希望有所帮助 😊
有问题欢迎评论交流~ 😋
实验内容
- 通过scanf输入任意一个正整数(不是字符串);
- 编程实现判断该数是否为回文数,即类似121,1221,6886等左右读数相同的数字;
- 程序运行一次可以判断多个数据,直至输入负数,结束运行;
- 不得使用数组。
算法描述及实验步骤
画了一张乱七八糟的 流程图,仅供参考
运行结果
思路分析
最直观最暴力的解法就是取模出每位的数子,然后存到数组里面进行判断,然而要求不使用数组,所以当然就不能这么做了…
其实解法也是比较简单,举一个例子模拟一下:
假设我们输入的数字是 123
首先取模得到最后一位3,然后将原数字除以10,得到12
然后再取模得到最后当前最后一位2,将上次获得数字3乘以10,相加得到32
再进行一次这样的操作,得到321
可以发现这样就将原来的数字给”倒置“过来了
所以,如果”倒置“后的数字和原数字相同,就能直接证明是一个回文数了
代码
#include<stdio.h>
int main()
{
int temp, sum, n;
scanf("%d", &n);
while (n > 0)
{
temp = n;
sum = 0;
while (temp != 0)
{
sum = sum * 10 + temp % 10;
temp /= 10;
}
if (sum == n)
printf("是回文数\n");
else
printf("不是回文数\n");
scanf("%d", &n);
}
return 0;
}