c++ 请帮我把百位数按逆序打印出来[关闭]

xam8gpfp  于 2023-04-08  发布在  其他
关注(0)|答案(2)|浏览(80)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我想比较两个数字的大小,并反向打印较大的值。但是,输出值与我预期的不同。

#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中。
1.它比较两个值,并使用if语句将较大的值存储在名为“bigger”的变量中。
1.将除以10的余数存储在q中
除以100减去q的余数存储在w中
从存储在'bigger'中的值中减去q和10乘以w,并将结果存储在'e'中。
1.不带空格的e,w,q的输出值。
输入123 456输出123 456 input123456 bigger456 654
但这是结果。123 456 input123 456 bigger456 650-50
我搜索了这个问题。this question它显示了如何用内置函数向后打印数字。所以我问了新的问题。

dvtswwa3

dvtswwa31#

您可以使用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;
fhity93d

fhity93d2#

计算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;
}

相关问题