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