我的代码运行不正常而不是打印它应该的所有行

时间:2018-03-13 13:17:10

标签: c

#include <stdio.h>

int main(void) {

    int i,j,n,m;

    printf("enter the numbr of rows : ");
    scanf("%d",&n);
    m=(2*n)+1;
    printf("%d, %d",n,m);
    for(i=0;i<=m;i++)
    {
        for(j=0;j<m;j++)
        {
            if(i==n)
            {
                printf("*");
            }
            else 
            {
                printf(" ");
            }
        } 

        for(j=0;j<i;j++)
        {
            if((i+j)>=m)
               break;
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

我的代码运行不正常而不是打印它应该的所有行。这是打印完整箭头的代码,如

     *
     **
********
     **
     *

这只是一个例子。

3 个答案:

答案 0 :(得分:1)

你的问题是:

m=(2*n)+1;

需要

m=(2*n);

请参阅:Online gcc compiler example draw arrow

答案 1 :(得分:0)

https://onlinegdb.com/rk9U4nUFf

它得到了修复!我运行循环少了一次,所以它正在运行,但没有打印任何东西,因为最后一个循环正在跳过它不应该的循环。以上是正确的代码。

答案 2 :(得分:0)

#include <stdio.h>

    int main(void) {

    int i,j,n,m;

    printf("enter the numbr of rows : ");
    scanf("%d",&n);
    m=(2*n);
    printf("%d, %d",n,m);
    for(i=0;i<=m;i++)
    {
        for(j=0;j<m;j++)
        {
            if(i==n)
            {
                printf("*");
            }
            else 
            {
                printf(" ");
            }
        } 

        for(j=0;j<i;j++)
        {
            if((i+j)>=m)
               break;
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

来源链接:https://www.onlinegdb.com/H1gogfIHYz