我正在尝试用C:
打印这个模式 *
* *
* * *
* * * *
我提出了类似的事情,但它没有完全一致,请看:
*
* *
* * *
* * * *
* * * * *
有点倾向于右边。我认为我有关于间隔星星的概念是正确的,但有些事情是错的,有人可以帮我解决这个问题吗?
这是我的代码:
#include <stdio.h>
int main() {
int sp, st, i, j, k;
printf("Enter rows: ");
scanf("%d", &st);
sp = st * 2;
for(i = 1; i <= st; i++)
{
for(j = 1; j <= i; j++)
{
if(j == 1)
for(k = 1; k <= sp - i*2; k++)
printf(" ");
printf(" * ");
}
printf("\n");
}
}
请注意,sp =空格数,st =最后一行中的星数
答案 0 :(得分:3)
printf(" * ");
您应该只打印一个空格,可能是"* "
for(k = 1; k <= sp - i*2; k++)
将此更改为k < sp - i*2;
,因为您在开头打印了太多空格。
此外,这在技术上并不是错误的,但我认为你应该从你的第二个for循环中取出你的第三个for循环(带有k
的循环)。你不需要对第二个for循环的每次迭代都进行检查,因为它只是打印初始空格。
答案 1 :(得分:2)
这完全适用:
void main()
{
int i = 0, j = 0, k;
for (i = 0; i < 17; i++)
{
for (k = 16; k >= i; k--)
{
printf(" ");
}
for (j = 0; j <= (i); j++)
{
printf("* ");
}
printf("\n");
}
getch();
}