栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 生成回文数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 生成回文数

一、题目 013:由正整数产生回文数。回文数就是正、反读都相同的数,如:484;4884等等。(根据回文数的计算方法,当进行30次加法后仍得不出回文数,则判定为overflow)(书例3.40) 二、代码实现 思路:由正整数产生回文数,如果它不是回文数,可以将它本身和它的逆序数相加,再次判断,如果还不是则继续上述方法。如123和它的逆序数321相加得到444,即回文数。

代码如下:

//013:由正整数产生回文数。回文数就是正、反读都相同的数,如:484;4884等等。
//根据回文数的计算方法,当进行30次加法后仍得不出回文数,则判定为overflow
#include
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产生的回文数是%dn",m,original);}//输出得到的回文数
    else{printf("overflow!n");}
    printf("ncontinue? y/nn");
    scanf(" %c",&ch);
}while(ch!='N'&&ch!='n');
printf("ENDn");
return 0;
}
运行结果:
请输入正整数:
275
由正整数275产生的回文数是44044

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

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

continue? y/n
N
END

按任意键关闭终端。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010088.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号