C程序创建一个正方形图案与两个三角形

kknvjkwl  于 2023-01-25  发布在  其他
关注(0)|答案(5)|浏览(131)

因此,输出结果应该是循环数(1,2,3,...)组成的递增三角形和星号组成的递减三角形,如下所示:

1********
12*******
123******
1234*****
12345****
123456***
1234567**
12345678*
123456789

到目前为止,我有这个,但只是不知道如何减少星级。

#include <stdio.h>

int main()
{
    int i, j;
    for(i=1; i<=9; i++)
    {
        for (j=1; j<=i; j++)
        {
            printf ("%d",j);
        }

        int k;
        for(k=8; k>0; k--) {
            printf("*");
        }

        printf("\n");
    }
}

它会打印出:

1*******
12*******
123*******
1234*******
12345*******
123456*******
1234567*******
12345678*******
123456789*******
hfwmuf9z

hfwmuf9z1#

您已经:

  • 对于k在8中下降到0(不包括),
  • 打印*

这总是打印8星,但你想要其中的9-i。

  • 对于i +1至9(包括i +1和9)中的k,
  • 打印*
oxcyiej7

oxcyiej72#

注意,您需要做的只是从预期的(在本例中)9个字符中减去每行打印的数字数量。for(k=9 - i; k>0; k--)

#include <stdio.h>
int main()
{
    int i, j;
    for(i=1; i<=9; i++){
        for (j=1; j<=i; j++){
            printf ("%d",j);
        }
        int k;
        for(k=9 - i; k>0; k--) {
            printf("*");
        }
        printf("\n");
    }
}

输出:

1********
12*******
123******
1234*****
12345****
123456***
1234567**
12345678*
123456789
ztyzrc3y

ztyzrc3y3#

printf具有仅打印字符串的有限部分的内置功能。
这对于解决以下问题非常方便:

#include <stdio.h>
int main(void) {
    int i=9;
    while(i --> 0)
    {
        printf("%.*s%.*s\n", 9-i, "123456789", i, "********");
    }
    return 0;
}

输出

1********
12*******
123******
1234*****
12345****
123456***
1234567**
12345678*
123456789

IDE Link

9w11ddsr

9w11ddsr4#

从一个由9颗星组成的可变字符串开始,然后在循环9次时一次替换一个字符(即:每行输出一次)。

#include <stdio.h>

int main( void ) {
    char stars[] = "*********";

    for( int i = 1; i <= 9; i++ ) {
        stars[i] = (char)(i + '0');
        puts( stars );
    }
    return 0;
}
pdsfdshx

pdsfdshx5#

你需要3个循环。
1.最外层循环(i)跟踪行号
1.第一个内部循环(j)将按等于行数的顺序打印数字
1.第二个内循环(k)将打印 *,因此打印的 * 数为总行数-行号,即(9-i)
https://godbolt.org/z/e65def4P5

#include <stdio.h>

int main()
{
    for(int i=1; i<=9; i++)
    {
        for (int j=1; j<=i; j++)
        {
            printf ("%d",j);
        }
        for(int k=1; k<=9-i; k++) {
            printf("*");
        }

        printf("\n");
    }
}

相关问题