C语言 生成回文数

一、题目

013:由正整数产生回文数。回文数就是正、反读都相同的数,如:484;4884等等。(根据回文数的计算方法,当进行30次加法后仍得不出回文数,则判定为overflow)(书例3.40)

二、代码实现

思路:由正整数产生回文数,如果它不是回文数,可以将它本身和它的逆序数相加,再次判断,如果还不是则继续上述方法。如123和它的逆序数321相加得到444,即回文数。

代码如下:

//013:由正整数产生回文数。回文数就是正、反读都相同的数,如:484;4884等等。
//根据回文数的计算方法,当进行30次加法后仍得不出回文数,则判定为overflow
#include<stdio.h>
int main()
{
    int original,reverse,org;//original原始数、reverse翻转后的数
    int m,n,t;
    char ch;
    do{
    printf("请输入正整数:\n");
    scanf("%d",&n);
    t=0;//t计数,回文数计算次数
    m=n;//m记录输入的正整数
    do{
    original=n;
    reverse=0;
    org=n;
    do{
        reverse=reverse*10+org%10;
        org=org/10;
    }while(org!=0);//reverse变为original的逆序数
    n=original+reverse;//n由两者相加
    t++;//记录加法次数
    }while(reverse!=original&&t<=30);//当reverse和original相同时则回文数已生成完毕,或者相加30次还未得到回文数,此时退出循环
    if(reverse==original)
    {printf("由正整数%d产生的回文数是%d\n",m,original);}//输出得到的回文数
    else{printf("overflow!\n");}
    printf("\ncontinue? y/n\n");
    scanf(" %c",&ch);
}while(ch!='N'&&ch!='n');
printf("END\n");
return 0;
}

运行结果:

请输入正整数:
275
由正整数275产生的回文数是44044

continue? y/n
y
请输入正整数:
196
overflow!

continue? y/n
y
请输入正整数:
35687
由正整数35687产生的回文数是157751

continue? y/n
N
END

按任意键关闭终端。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值