我创建了一个代码,通过输入值来制作钻石。上面三角形的输出很好,但我对反转三角形感到困扰。我认为//反转三角形有问题,所以我改变了i
条件表达式,但问题没有解决。我应该如何制作反转三角形?
#include <stdio.h>
int main() {
int n, i, j, k;
scanf("%d", &n);
//an upper triangle
for (i = 0; i < n; i++)
{
for (j = 0; j < n - i - 1; j++) {
printf(" ");
}
for (k = 0; k < 1 + i * 2; k++) {
printf("*");
}
printf("\n");
}
//reverse triangle
for (i = 0; i < n - 1; i++) {
for (j = 0; j < 1 + i; j++) {
printf(" ");
}
for (k = 0; k < n - i * 2; k++) {
printf("*");
}
printf("\n");
}
return 0;
}
字符串
2条答案
按热度按时间a64a0gku1#
当你用循环绘图时,首先你必须找到输入值和输出图之间的依赖关系-生成多少行,每行(列)有多少个字符等等。
在你的例子中,你有“n”,你的图形由“(n2)-1”行组成。如果你有“n=3”,你的菱形将是“(32)-1”行= 5行。你的菱形增长到行数“n”,即如果n = 3,上三角形的底部(你称之为)将在第3行。
在第一行,两边各有“n-1”个空格和1颗星星。每隔一行,空格的数量减少,每边1颗,而星星的数量增加,每行2颗。你可以画一行的空格和星星的数量,然后修改它们的值。这一直持续到行号“n”。在绘制行“n”之后-您不得在此方向上进一步修改空格和星号的数量。
现在是“钻石”的第二部分-从第“n+1”行一直到第“(n*2)-1”行。它向后移动-每隔一行,你必须用+1增加星星两边的空间,用每行-2减少星星的数量。首先修改值,然后绘制符号。
以下是我的方法:
字符串
输入:4路输出:
型
输入:5输出:
型
lnvxswe22#
你可以试试下面的代码来创建钻石形状:
字符串