| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 777 人关注过本帖
标题:判断回文数
只看楼主 加入收藏
qiqicai
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2021-3-23
结帖率:84.62%
收藏
 问题点数:0 回复次数:1 
判断回文数
#include<stdio.h>
int main()
{
int a,i;
printf("输入一个整数:");
scanf("%d",&a);
int s=0;
for(i=1;i<=a;i*=10)
{
    s=a%(10*i)/i + 10*s;               -> //大家帮我看看这一行代码 要是反着验证我能看懂 但我不知道如果从上先往下写这个是怎么想出来的  求助
}
if(a==s)
printf("这个数是回文数\n");
else
printf("这个数不是回文数\n");

return 0;

   
   
   
}
搜索更多相关主题的帖子: int printf 回文 判断 个数 
2021-04-11 10:33
夏天q
Rank: 4
来 自:七月
等 级:业余侠客
威 望:5
帖 子:33
专家分:227
注 册:2021-4-4
收藏
得分:0 
程序代码:
#include<stdio.h>
int main() {
    int a,i;
    printf("输入一个整数:");
    scanf("%d",&a); //假设输入321 
    int s=0;
    for(i=1; i<=a; i*=10) {
        s=a%(10*i)/i + 10*s; //大家帮我看看这一行代码 要是反着验证我能看懂 但我不知道如果从上先往下写这个是怎么想出来的  求助
        /* 
        
        回文数是指正序(从左到右)读和倒序(从右到左)读都是一样的整数。
        
        第一次循环 s=a%(10*i)/i + 10*s;(输入a = 321)
        321%(10*i) (i=1)保留原数个位 为1
        1/1 +10 *0 = 1 得到最高位数为1 
        s = 1 即反过来的数的百位为 1 
        
        第二次循环
        321%(10*i) (i=10)保留原数十位个位 为21
        21 / 10 得到的是原来十位的数 (反过来的数的十位)= 2
        2 + 10*s(s=1) = 12 (加上百位)
        s = 12 即反过来的数的百位和十位为12
        
        第三次循环
        321%(10*i) (i=100) 保留原数百位十位个位 为321
        321 / 100 = 1 得到的是百位的数(反过来的数的个位) 
        1 + 10*s (s=12) = 123 (加上百位十位)
        s = 123 即反过来的数的百位和十位和个位的数为123
        
        跳出循环
        
        s=123
        
        
        */
    }
    if(a==s)
        printf("这个数是回文数\n");
    else
        printf("这个数不是回文数\n");

    return 0;




}


[此贴子已经被作者于2021-4-11 11:54编辑过]

2021-04-11 11:52
快速回复:判断回文数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.264294 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved