首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反转数字10 - 99的C++ for循环

反转数字10 - 99的C++ for循环
EN

Stack Overflow用户
提问于 2018-09-26 04:58:37
回答 4查看 145关注 0票数 0

我试图写的代码,将列出和反转所有数字对从01 - 99。01-09很容易,因为你只需要把它乘以10,我也知道至少有一种方法可以逆转一个给定的数字,我只是不知道如何正确地使用它和for循环。

这就是我到目前为止所拥有的。

代码语言:javascript
复制
 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;
                }
            }

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-26 05:16:18

您必须在使用remainder99, reverse99, temp99, num99值之后重新初始化它们。

当你倒转10,20,30等的时候,你也必须把0加到结果的前面。得到01,02,03等.

在进行了必要的更改之后,您的程序将如下所示。

代码语言:javascript
复制
#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;
}

产出如下:

代码语言:javascript
复制
10
20
30
40
50
60
70
80
90
01
11
21
31
41
51
61
71
81
91
02
12
22
32
42
52
62
72
82
92
03
13
23
33
43
53
63
73
83
93
04
14
24
34
44
54
64
74
84
94
05
15
25
35
45
55
65
75
85
95
06
16
26
36
46
56
66
76
86
96
07
17
27
37
47
57
67
77
87
97
08
18
28
38
48
58
68
78
88
98
09
19
29
39
49
59
69
79
89
99
票数 0
EN

Stack Overflow用户

发布于 2018-09-26 05:16:07

您要做的是尝试对循环变量进行操作,这会导致意外的结果。相反,将循环变量和num99变量分开,如下所示:

代码语言:javascript
复制
    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;
            }
        }
    }

我还冒昧地假设,当您反转1020等两位数时,您希望输出是0102,这样,如果这不是您所期望的,您可以删除if条件。

票数 0
EN

Stack Overflow用户

发布于 2018-09-26 05:19:30

提到的代码有很多问题,如

  1. 这里,reverse99 * 10reverse99的初始值是什么?将其分配为0
  2. 在这里,num99 = num99 / 10;您正在修改原始的num99,它是外部循环变量,而不是将num99分配给一些临时变量&使用这个临时变量执行操作。

样本码

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52510214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档