这是我第一次上编程课,我有几个问题,关于我们布置的作业。
我正尝试将以下图案打印到屏幕上:
*
***
*****
*******
图案应该包含5行,每一个后续的行有2个额外的星号从上面的行,使大致金字塔形状。
我一直在使用for
循环(这是指令的一部分)来创建代码,下面是我目前所做的:
int main ()
{
int row;
int col;
for (row = 1; row <= 5; row++) //rows
{
for (col = 1; col <= row; col++) //columns
{
printf_s("*");
}
printf_s("\n");
}
return 0;
}
我的代码的问题是我没有考虑到正确对齐所需的空格。对于上面的代码,输出如下所示:
*
**
***
****
*****
我希望有人能给我指出正确的方向,告诉我如何重写代码以获得正确的对齐方式和正确的前导空格数。
先谢谢你。
4条答案
按热度按时间xeufq47z1#
您有一个循环来打印星号,但不会打印出星号之前的任何空格。
而且你打印的星号的数目不正确。例如你的输出在第二行只有2个
*
s,而实际上应该有3个。你可以
打印
NUM
空格,而不是使用单独的循环。就像
如果行号从
0
开始,则每行中的星号数为行号的两倍多一。ROWS
表示要打印的行数。dkqlctbz2#
外循环用于每一行,内循环在该行中打印许多星号。您忽略了在该行前面添加适当数量的空格。
如果将外部回路更改为更常规的:
它使字符计数算法更简单。
4 - row
空格。row * 2 + 1
星号。abithluo3#
试试这个:
r -行数
s -增量
i -行索引
j列索引
start -开始计数 *
t30tvxxf4#
在屏幕上打印以下形状
#**###########################