【发布时间】:2021-09-21 16:20:22
【问题描述】:
任何人都可以为这种模式制定逻辑吗? 我也尝试使用 2 for 循环。 我刚刚接受了一次面试,要求我创建如图所示的星形图案。
#include <stdio.h>
int main()
{
char f;
int n;
printf("Enter the number:");
scanf("%d", &n);
int i, j, s, k, l, m;
for (s = 1; s <= n; s++) //printing
{
for (k = 1; k <= n; k++)
{
for (i = 1; i <= n; i++) //pattern
{
for (j = 1; j <= n; j++)
{
if ((i + j == n + 1)) //star positions
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n"); //next line
}
}
}
return 0;
}
【问题讨论】:
-
我猜这与
printf("* ");打印的字符数是printf(" ");的两倍有关。如果将其更改为printf("*");(没有多余的空格)会发生什么?此外,printf("\n");看起来位置错误(应该只有 n^2 行,而不是 n^3 行)。 -
尝试
if ((k + j) % n == 1){printf("*");}else{printf(" ");}并在i5 循环之后移动@9876543336@。6@5