C 星型对准控制的实践

C 星型对准控制的实践,c,C,我正在练习在下面的结果中生成星星,但我失败了 一, 二, 对于我在这个案例中的逻辑,我认为可以通过在循环中使用宽度对齐控制来生成,但结果表明它是错误的 * * * * * * * * * * * * * * * 使用代码: int i,j; char ch='*';//created for using of alignment for(i=1;i<=5;i++) { for(j=

我正在练习在下面的结果中生成星星,但我失败了

一,

二,

对于我在这个案例中的逻辑,我认为可以通过在循环中使用宽度对齐控制来生成,但结果表明它是错误的

*    *    *    *    *
*    *    *    *
*    *    *
*    *
*
使用代码:

    int i,j;
    char ch='*';//created for using of alignment
    for(i=1;i<=5;i++)
    {
        for(j=5;j>=i;j--)
        {
            printf("%5c", ch);
        }
        printf("\n");
    }
代码为:

    int i,j;
    for(i=1;i<=5;i++)
    {
        for(j=5;j>=i;j--)
        {
            printf("*");
        }
        printf("\n");
    }
inti,j;
对于(i=1;i=i;j--)
{
printf(“*”);
}
printf(“\n”);
}
我对模式1和模式2的制作方法有错误的想法吗?
或者用错误的编码进行正确的思考?

您可以尝试以下两种模式的理论:

假设一个三角形由一个由空间组成的三角形和另一个由恒星组成的三角形组成。在一个for循环中,可以创建另外两个for循环来控制两个三角形


尝试一下我建议的方法,如果你没有成功,请告诉我我会帮助你……

Chirag没有错,但是你不需要三个for循环,只需要两个

以希拉格的建议为例:

假设一个三角形由一个由空间组成的三角形和另一个由恒星组成的三角形组成

现在,将每一条线独立地视为一组星(和空间),它们相对于行数减少/增加。

int i, j;
for (i = 0; i < 5; i++)
{
    printf("\n%*s", i, " "); // Print i spaces
    for (j = i; j < 5; j++)
    {
        printf("*");
    }
}

要对齐,您可能实际上正在绘制一个矩形。在每一行中,输出一系列星号(可能为空,即零星号)和一系列空格(可能为空,即无空格)

这是
(条件)的理想应用?(值如果为真):(值如果为假)
construct。你总是画一个完整的矩形,图案只会因为条件而改变:“这是空格还是星号?”


因此,测试是
((6-j)@VishalSuthar为什么这很重要?@meagar:因为最好是引导学生找到正确答案,同时在代码中省略完整的答案。@EdS.,现在不是了,真的。@chris:好吧,我也不特别关心他们的意见。如果我知道我在回答一个来自家庭作业的问题,我就不会去post是一个完全编码的解决方案。其他人可以自由地做他们认为合适的事情,但我认为这不是一个好主意。这可能无助于他们学会如何自己解决问题,而你可能只是在为他们做作业。堆栈溢出不是为了教育学生。提问者的身份/动机应该绝对与你如何回答他们的问题无关堆栈溢出的目的是帮助未来的用户,而未来的用户不需要“提示”或“在正确的方向上轻轻推动”。如果您觉得这个问题不应该得到回答,请投票关闭它。不要发布部分解决方案或故意隐瞒信息。这与本网站声明的目的直接不符。嗨,niklas,您完全正确……但我希望他自己试试:)。我只是展示了他如何解决这个难题……这是正确的,希拉格·德赛,我关注了评论中的讨论,但我同意这篇文章。您的编辑是正确的,@Michael,但是我不能接受(声誉不够),所以我们只能等待。
*****
****
***
**
*
    int i,j;
    for(i=1;i<=5;i++)
    {
        for(j=5;j>=i;j--)
        {
            printf("*");
        }
        printf("\n");
    }
int i, j;
for (i = 0; i < 5; i++)
{
    printf("\n%*s", i, " "); // Print i spaces
    for (j = i; j < 5; j++)
    {
        printf("*");
    }
}
*****
 ****
  ***
   **
    *
int i, j;
for(i=1;i<=5;i++)
{
    for(j=1;j<=5;j++)
    {
        // This generates a full rectangle
        // printf("%c", '*');
        // This generates an empty rectangle ;-)
        // printf("%c", ' ');
        // This generates a triangle
        printf("%c", (i >= j) ? '*' : ' ');
    }
    printf("\n");
}
   when j is       6-j is
       1              5
       2              4
      ...            ...
       5               1