使用while循环的数字三角形

时间:2013-10-03 03:17:03

标签: c++

我的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语句,但我不知道如何正确实现它。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

使用cout << j%10将始终打印j等于的任何数字。因此,当j = 10时,cout << j%10会打印0等等

答案 1 :(得分: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