问答详情
源自:4-12 循环结构之多重循环

求大神指导,为什么我这个输出的不是菱形

#include <stdio.h>

int main()

{

    int i, j, k;

    for(i=1; i<5; i++)

    {

        /* 观察每行的空格数量,补全循环条件 */

        for(    j=i ;  j<5 ;  j++  )  

        {

            printf(" ");    //输出空格

        }

        /* 观察每行*号的数量,补全循环条件 */

        for( k=0 ;  k<2*i-1 ;  k++     ) 

        {

            printf("*");   //每行输出的*号

        }

        printf("\n");     //每次循环换行

    }

  


  /*jjjdjdjdjd*/

//sgrgttt

    for(i=1;i<8;i++)

     {

         if(i<5)

         {

             

         

         for(j=i;j<5;j++)

         {

             printf(" ");

         }

         for(k=0;k<2*i-1;k++)

         {

             printf("*");

         }

         printf("\n");

         }

         

         else

         {

             for(j=0;j<=i-4;j++)                                        为什么这里(j=i;j>i-3;j--)是错的,输出全是三空格

 

 

            {

                printf(" ");

            }

            for(k=1;k<=15-2*i;k++)                            为什么这里k要等于1,k=0时输出的*不对为什么

            {

                printf("*");

            }

            printf("\n");

            

         }

     }

         return 0;

     }

代码是对的

提问者:YINXUAN 2018-09-07 00:35

个回答

  • 慕九州5552665
    2018-09-07 12:59:23

    你这个太复杂了用用我这个:


    #include <stdio.h>

    int main()

    {

        int i, j, k;

        for(i=1; i<5; i++)

        {

            /* 观察每行的空格数量,补全循环条件 */

            for(j=i;j<5;j++)  

            {

                printf(" ");    //输出空格

            }

            /* 观察每行*号的数量,补全循环条件 */

            for(k=0;k<2*i-1;k++) 

            {

                printf("*");   //每行输出的*号

            }

            printf("\n");     //每次循环换行

        }

        return 0;

    }