C中的回文数程序

问题描述 投票:-3回答:4

我正在尝试创建一个C语言程序,该程序确定5位整数是否是回文。我苦苦挣扎的部分没有使用循环,因为我知道如何使用循环。但是,我应该不使用它,而是使用嵌套的if语句。我已经弄清楚了如何反转3位数字而不是5位,然后从那里继续。这是我到目前为止所拥有的。我只是在学习,所以也很难。

#include "pch.h"
#include <iostream>
using namespace std;

int main()
{
    int a, b, c, d, e , num, reversed;
    cout << "\n Enter a five digit number";
    cin >> num;
    a = num / 100;
    b = (num % 100) / 10;
    c = num % 10;
    d = num % 10;
    e = num % 10;
    reversed = 100 * c + 10 * b + a;
    cout << " " << reversed;
    return 0;
}

再次,我不能让它使用5位数字,但我假设之后使用if else语句,我可以将其反转,并将原始数字与%相关联,以查看它是否是回文。

c++ if-statement palindrome
4个回答
1
投票
num = numInput;

a = num % 10; num /= 10;
b = num % 10; num /= 10;
c = num % 10; num /= 10;
d = num % 10; num /= 10;
e = num % 10;

reversed = ((((( a * 10) + b ) * 10 + c ) * 10 + d ) * 10 ) + e;

isPalindrome = ( (numInput == reversed) ? 1 : 0 );

或者,如果您想要代码的某些“对称性”(绝对不需要):

rev = 0;
rev += a; rev *= 10;
rev += b; rev *= 10;
rev += c; rev *= 10;
rev += d; rev *= 10;
rev += e;

但是使用循环会更好。


0
投票

这是因为这些语句中的变量num没有更改:

c = num % 10;
d = num % 10;
e = num % 10;

您根本没有更新num,因此变量cde的值相同。因此,在取一模数之后,您还应该将num变量除以10,以将一位后移。

a = num % 10;  // get the last digit of num
num /= 10;     // update the last digit (num reduced by 1 digit, '12345' will become '1234')
b = num % 10;
num /= 10;
c = num % 10;
num /= 10;
d = num % 10;
num /= 10;
e = num % 10;

cout << a << b << c << d << e << endl;

由于您仅在代码中打印反转的数字,因此无需再次构造反转的数字。但是,如果这样做,一旦有了数字,它就变得微不足道了。

reversed = 10000 * a + 1000 * b + 100 * c + 10 * d + e;

我相信您可以从这里(isPalindrome = (reversed == num))开始检查该数字是否是回文。


0
投票

必须


0
投票
只需遵循简单的数字提取算法,即可轻松解决回文,倒数,数字总和等所有程序。
© www.soinside.com 2019 - 2024. All rights reserved.