我想要制作一个这样的星形图案。
*
* * *
* * * * *
* * *
*
我正在使用此代码。
for (int i=1; i<=3; i++) {
for (int j=1; j<=3-i; j++) {
printf(" ");
}
for (int k=1; k<=2*i-1; k++) {
printf("x");
}
printf("\n");
}
这将给出
*
* * *
* * * * *
我将如何以递减顺序迭代。
when I am using
for (int i=3; i>=0; i--) {
for (int j=1; j<=3-i; j++) {
printf(" ");
}
for (int k=1; k<=2*i-1; k++) {
printf("x");
}
printf("\n");
}
xxxxx
xxx
x
我们如何合并?
答案 0 :(得分:4)
这里的另一个逻辑
int x=11;
int y=x/2;
int z=1;
BOOL b1=true;
BOOL b2= true;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
printf(" ");
}
for(int k=0;k<z;k++)
{
printf("*");
}
if(y==0) b1=false;
if(z==x) b2=false;
y=b1?y-1:y+1;
z=b2?z+2:z-2;
printf("\n");
}
答案 1 :(得分:3)
尝试以下逻辑,
for (int i=1; i<=3; i++) {
for (int j=1; j<=3-i; j++) {
printf(" ");
}
for (int k=1; k<=2*i-1; k++) {
printf("*");
}
printf("\n");
}
for (int i =2; i>=0; i--) {
for (int j=1; j<=3-i; j++) {
printf(" ");
}
for (int k=1; k<=2*i-1; k++) {
printf("*");
}
printf("\n");
}
输出看起来像:
*
***
*****
***
*
答案 2 :(得分:0)
给定的模式是简单的金字塔星型和倒金字塔星型的组合。它由 N * 2-1 行组成(在这种情况下,N = 3)。每行包含按升序和降序打印的空格和星星。
星星按升序打印,直到第N行。在第N行之后,星星按降序打印。
以降序打印空格,直到第N行。在第N行之后,以递增的顺序打印行距。将鼠标指针悬停在图案上以计算总空间。
逐步进行描述性逻辑印刷菱形星形图案。
rows
中。stars=1
和spaces=N-1
。rows*2-1
的外部循环。循环结构应类似于for(i=1; i<rows*2; i++)
。for(j=1; j<=spaces; j++)
。在此循环内打印单个空格。1 to stars*2-1
运行另一个内循环。循环结构应类似于for(j=1; j<=stars; j++)
。在此循环中打印星星。if(i < rows)
,然后增加星号并减少空格。否则增加空间并减少星星。尝试以下代码:-
int i, j, rows;
int stars, spaces;
printf("Enter rows to print : ");
scanf("%d", &rows);
stars = 1;
spaces = rows - 1;
/* Iterate through rows */
for(i=1; i<rows*2; i++)
{
/* Print spaces */
for(j=1; j<=spaces; j++)
printf(" ");
/* Print stars */
for(j=1; j<stars*2; j++)
printf("*");
/* Move to next line */
printf("\n");
if(i<rows)
{
spaces--;
stars++;
}
else
{
spaces++;
stars--;
}
}