提问人:urie1 提问时间:4/3/2023 最后编辑:Alan Birtlesurie1 更新时间:4/3/2023 访问量:100
请帮我以相反的顺序打印百位数字 [已关闭]
Please help me print the hundreds digit in reverse order [closed]
问:
我想比较两个数字的大小,然后反向打印较大的值。 但是,输出值与我的预期不同。
#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;
}
- 此代码从用户那里接收两个整数,并将它们存储在变量 a 和 b 中。
- 它比较两个值,并使用 if 语句将较大的值存储在名为“bigger”的变量中。
- 将除以 10 的余数存储在 q 中 除以 100 减去 q 的余数存储在 w 中,从存储在“bigger”中的值中减去 q
和 10 倍 w
,并将结果存储在“e”中。 - e,w,q 的输出值,不带空格。
有一些我预料到的例子。
输入输出123 456
123 456 input123456 bigger456 654
但这就是结果。123 456 input123 456 bigger456 650-50
我搜索了这个问题。这个问题它显示了如何使用内置函数向后打印数字。 所以我问了一个新的问题。
答:
-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
只能是 -,不能是负数0
9
w
big % 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;
评论
w