繁体   English   中英

检查数字是否为回文:如果不是,则将数字和数字相反的数字相加并继续检查

[英]Check if a number is a palindrome: if not sum the number and the number with reversed digits and continue checking

我正在学习 C 并做第二个任务,即检查一个整数是否是回文。 如果是,我将返回号码; 如果不是,我将把数字和数字相反的数字相加并再次检查。

示例:编号:195

  • 195 + 591 = 786
  • 786 + 687 = 1473
  • 1473 + 3741 = 5214
  • 5214 + 4125 = 9339(回文)

如果程序检查了 20 次仍然不是回文,我将返回 0。

我的程序是这样的:

int addRev(int n) {
    int count;
    int reversed = 0;
    int remain;
    int original;
    original = n;
    while (n != 0) {
        remain = n % 10;
        reversed = reversed * 10 + remain;
        n /= 10;
    }
    if (original==reversed){
        return original;
    }
    else{
        original+=reversed;
    }
    return original;
}

到目前为止,我已经检查了该程序。 如果我用 191 测试它,它是一个回文并返回它。 如果我用 195 测试,它不是回文,函数返回 786。

但是下一步是什么? 我是否需要第二个 while() 才能继续使用 786?

关键是要求最多进行 20 次测试。

所以算法可能看起来像这样

for i = 1 up to 20
{
    reversed = .......
    if original == reversed
        return original // it's a palindrome
    original += reversed
}
return 0 // no palindrome after 20 iterations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM