印刷一半金字塔
问题描述:
我想金字塔看起来像这样如果输入的是6印刷一半金字塔
0
12
345
6789
567890
这里是我的代码
void HalfPyramid(int num)
{
for (int a=0; a<num; a++)
{
for (int b=0; b<num-a; b++)
{
cout << " ";
}
for (int c=0; c<a; c++)
{
cout << a;
}
cout << endl;
}
}
我越来越
1
22
333
4444
55555
不知道如何以显示数字不断增加,我试图输出a
和a+1
。
答
您需要另一个变量。该变量需要从0开始并在每次打印时增加。然后,因为您需要在打印9后回到0,我们将使用模运算符将输出限制在[0,9]的范围内。与所有你得到
void HalfPyramid(int num)
{
int output = 0;
for (int a=1; a<num+1; a++)
{
for (int b=0; b<num-a; b++)
{
cout << " ";
}
for (int c=0; c<a; c++)
{
cout << output++ % 10;
}
cout << endl;
}
}
答
void HalfPyramid(int num)
{
int cur = 0;
for (int a=0; a<num; a++)
{
for (int b = 1; b < num - a ; b++)
{
cout << " ";
}
for (int c=0; c < a + 1; c++)
{
cout << cur;
cur = (cur+1)%10;
}
cout << endl;
}
}
+0
@RSahu 是的。你说得对。我编辑答案。坦克 –
答
其他答案已经提供HalfPyramid
工作版本。希望这个答案能让你以不同的方式思考逻辑和功能。我喜欢创建捕捉我想要做的事情的小函数,而不是使用语言来实现它。
bool isSpace(int num, int a, int b)
{
return ((a + b) < (num - 1));
}
int getNextDigit(int in)
{
return (in+1)%10;
}
void HalfPyramid(int num)
{
int digit = 0;
for (int a = 0; a < num; ++a)
{
for (int b = 0; b < num; ++b)
{
if (isSpace(num, a, b))
{
cout << " ";
}
else
{
cout << digit;
digit = getNextDigit(digit);
}
}
cout << endl;
}
}
不打印出增加的数字 – Zarari