我正在尝试编写列出和反转01-99中所有数字对的代码。01-09很简单,因为您只需将其乘以10。我也知道至少一种反转给定数字的方法,我只是不知道如何在for循环中正确使用它。
这是我到目前为止所拥有的。
for ( int num99 =1 ; num99 > 0 && num99 < 100; num99 = num99+1)
{
if (num99 <10){
temp99 = num99 * 10;
cout << temp99 << endl;
}
else {
while (num99 != 0) {
remainder99 = num99 % 10;
reverse99 = (reverse99 * 10) + remainder99;
num99 = num99 / 10;
}
cout << reverse99 << endl;
}
}
谢谢您的帮助。
答案 0 :(得分:0)
您要尝试执行的操作是对循环变量进行操作,这会导致意外结果。而是将循环变量和num99
变量分开,如下所示:
for (int i = 1; i < 100; i++) {
int num99 = i;
if (num99 < 10) {
temp99 = num99 * 10;
cout << temp99 << endl;
} else {
remainder99 = num99 % 10;
num99 = num99 / 10;
if (remainder99 == 0) {
cout<<"0"<<num99<<endl;
} else {
reverse99 = remainder99 * 10 + num99;
cout << reverse99 << endl;
}
}
}
我也冒昧地假设,当您反转10
,20
等两位数字时,您希望输出为01
,{{1} },这样,如果这不是您期望的,则可以删除02
条件。
答案 1 :(得分:0)
使用if
的值后,必须重新初始化它们。
当您反转10、20、30等...以获得01、02、03等...时,还必须在结果前加上0。
进行必要的更改后,您的程序将如下所示。
remainder99, reverse99, temp99, num99
输出为:
#include<iostream>
using namespace std;
int main(void)
{
int remainder99 = 0;
int reverse99 = 0;
int temp99 = 0;
for ( int num99 =1 ; num99 > 0 && num99 < 100; num99 = num99+1)
{
if (num99 <10){
temp99 = num99 * 10;
cout << temp99 << endl;
}
else {
temp99 = num99;
while (num99 != 0) {
remainder99 = num99 % 10;
reverse99 = (reverse99 * 10) + remainder99;
num99 = num99 / 10;
}
if(reverse99 < 10) cout << 0;
cout << reverse99 << endl;
reverse99 = 0;
remainder99 = 0;
num99 = temp99;
}
}
return 0;
}
答案 2 :(得分:0)
提到的代码有很多问题,例如
reverse99 * 10
是reverse99
的初始值?将其分配为0
。num99 = num99 / 10;
中,您要修改原始num99
的外部循环变量,而不是将num99
分配给某些临时变量并对该临时变量执行操作。示例代码
int main(void) {
int temp99 = 0,remainder99 = 0, reverse99 = 0/* must initialize with 0 */ ;
for ( int num99 =1 ; num99 > 0 && num99 < 100; num99 += 1) {
if (num99 <10){
temp99 = num99 * 10;
std::cout << num99 << std::endl;
}
else {
reverse99 = 0;/*make it as 0 again for every iteration */
temp99 = num99; /* assign loop variable to temp99 & do the operation with that */
while (temp99 != 0) {
remainder99 = temp99 % 10;
reverse99 = (reverse99 * 10) + remainder99;
temp99 /= 10;
}
std::cout << reverse99 << std::endl;
}
}
return 0;
}
答案 3 :(得分:0)
面向C ++ 11的解决方案:
#include <vector>
#include <iostream>
#include <numeric>
#include <algorithm>
int main()
{
std::vector<int> in(99);
std::iota(in.begin(), in.end(), 1);
std::for_each(in.begin(), in.end(), [](int& i)
{
i = (i % 10)*10 + (i / 10);
}
);
for (const auto& val : in)
{
std::string out = std::to_string(in);
if (out.size() == 1)
{
out = '0' + out;
}
std::cout << out << std::endl;
}
return 0;
}