请帮我以相反的顺序打印百位数字 [已关闭]

Please help me print the hundreds digit in reverse order [closed]

提问人:urie1 提问时间:4/3/2023 最后编辑:Alan Birtlesurie1 更新时间:4/3/2023 访问量:100

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

8个月前关闭。

我想比较两个数字的大小,然后反向打印较大的值。 但是,输出值与我的预期不同。

#include<iostream>
int main() {
    int a, b;
    int big;
    std::cin >> a>>b;
    if (a > b)
        big = a;
    if (a <= b)
        big = b;
    std::cout << "input" << a <<" "<< b<<"\n";
    std::cout << "bigger"<<big << "\n";
    
    int q, w, e;
    e = big % 10;
    w = (big % 100)-e;
    q= big - (e)-(w * 10);
    std::cout << e << w << q;
    return 0;
}
  1. 此代码从用户那里接收两个整数,并将它们存储在变量 a 和 b 中。
  2. 它比较两个值,并使用 if 语句将较大的值存储在名为“bigger”的变量中。
  3. 将除以 10 的余数存储在 q 中 除以 100 减去 q 的余数存储在 w 中,从存储在“bigger”中的值中减去 q
    和 10 倍 w
    ,并将结果存储在“e”中。
  4. e,w,q 的输出值,不带空格。

有一些我预料到的例子。 输入输出123 456123 456 input123456 bigger456 654

但这就是结果。123 456 input123 456 bigger456 650-50

我搜索了这个问题。这个问题它显示了如何使用内置函数向后打印数字。 所以我问了一个新的问题。

C++ 反向 IOstream

评论

0赞 Alan Birtles 4/3/2023
我认为你需要除以十。你应该使用更有意义的变量名称,特别是当你希望其他人(甚至你自己)理解你的代码时w
0赞 Pepijn Kramer 4/3/2023
了解 std::vector<int> + std::reverse 或反向迭代器(或反向视图 C++20)。
0赞 molbdnilo 4/3/2023
如果您按照说明给出的命名方式进行操作,则更有可能成功。
0赞 sweenish 4/3/2023
这回答了你的问题吗?我只是编写一个程序来反转一个数字,但输出不符合我的期望
0赞 sweenish 4/3/2023
我的骗子不是一个完美的匹配,但我对这个问题的回答提供了三个工作样本来反转一个数字。

答:

-2赞 jaswant patel 4/3/2023 #1

w 的计算有问题。在当前代码中,w 的计算方式为 (big % 100) - e,仅当 e 始终为个位数时才有效。但是,如果 e 是一个两位数(即,如果 big 的最后两位数字相同),则 w 将为负数。 要解决此问题,您可以修改 w 的计算以提取 big 的最后两位数字并从中减去 e。


试试这个

#include<iostream>
using namespace std;
int main() {
    int a, b;
    int big;
    std::cin >> a >> b;
    if (a > b)
        big = a;
    if (a <= b)
        big = b;
    std::cout << "input: " << a << " " << b << "\n";
    std::cout << "bigger: " << big << "\n";

    int q, w, e;
    e = big % 10;
    w = (big / 10) % 10; // Extract the second-to-last digit of big
    q = big / 100; // Extract the first digit of big
    std::cout << e << w << q << endl;
    return 0;
}

评论

0赞 Alan Birtles 4/3/2023
e只能是 -,不能是负数09wbig % 100 >= big % 10
1赞 user438383 4/3/2023
你为什么包括?这是糟糕的编程实践。using namespace std;
0赞 jaswant patel 4/3/2023
@user438383对不起我的错误。下次我会重新记住这个小东西
1赞 anatolyg 4/3/2023 #2

您可以使用将数字转换为字符串。std::to_string

然后反转字符串。std::reverse

#include <algorithm>
#include <string>

...

std::string big_s = std::to_string(big);
std::reverse(big_s.begin(), big_s.end());
std::cout << big_s;