【问题标题】:Number triangle using while loops使用 while 循环编号三角形
【发布时间】:2013-10-03 11:39:24
【问题描述】:

我的 C++ 编程课作业有问题。

这是作业:

编写一个读取行数并打印“n”行的程序 位数。

1

12

123

1234

12345

第 i 行是 1234 。 . . k 其中 k = i mod 10. 如果一行 多于 10 位,9 后的数字应从 0 重新开始。 例如,如果行数为 15,则输出应为:1

12

123

1234

12345

123456

1234567

12345678

123456789

1234567890

12345678901

123456789012

1234567890123

12345678901234

123456789012345

这是我目前所拥有的:

#include <iostream>
using namespace std;

int main()
{
    int rows(0);
    int i(0);
    int j(0);

    cout << "Enter number of rows: ";
    cin >> rows;

    int k=rows;
    i=1;

    while (i <= rows)
    {  
        j=1;
        while(j <= i)
    {
        cout << j;
        j++;
    }
        cout << endl ;
        i++;
    }

    return (0);
}

在我到达第 10 行之前,这非常有效。我不知道如何让计数器重置回 0 并再次进入 1-9。我猜是if 声明,但我不知道如何正确实现它。任何帮助将不胜感激。

【问题讨论】:

  • 如果您的代码格式正确,您的帖子会受到更多关注。

标签: c++


【解决方案1】:

使用cout &lt;&lt; j%10 将始终打印j 等于的个位数。所以当j = 10cout &lt;&lt; j%10会打印0等时

【讨论】:

    【解决方案2】:

    稍微扩展一下其他答案:

    % 称为余数运算符。它有时也称为“模数”或“模数”。它返回第一个参数除以第二个参数的余数。因此对于这种情况,既然您希望数字介于 0 和 9 之间,请考虑当您拥有 n % 10 时会发生什么。

    8 / 10 == 0 remainder 8
    9 / 10 == 0 remainder 9
    10 / 10 == 1 remainder 0
    11 / 10 == 1 remainder 1
    12 / 10 == 1 remainder 2
    

    等等

    在 C++ 中,与大多数编程语言一样,您通常从 0 开始计数,并排除范围内的最终数字。所以如果你有n % 56,你从0开始的输出会上升到55,然后再次重置为0。对此的经典论点由 Dijkstra 撰写:

    http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 2011-11-04
      • 2022-08-21
      • 2021-05-09
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多