回 帖 发 新 帖 刷新版面

主题:请高手看下我这里哪里错了

题目是比如输入4,依次类推
4 4 4 4 4 4 4
  3 3 3 3 3 
    2 2 2 
      1  
    2 2 2 
  3 3 3 3 3
4 4 4 4 4 4 4



#include<stdio.h>
main()
{
    int x,a[100][200],i,j;
    printf("input hang=");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        for(j=1;j<=2*(x-i-1)+1;j++)
            a[i][j]=x-i;
    }
    for(i=0;i<x;i++)
    {
        for(j=1;j<i+1;j++) printf(" ");  
        for(j=1;j<=2*(x-i-1)+1;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }
    for(i=x-1;i>=0;i--)
    {
        for(j=1;j<i+1;i++) printf(" ");
        for(j=i+1;j<=2*(x-i)+1;j++);
           printf("%d",a[i][j]);
        printf("\n");
    }
}


    

回复列表 (共16个回复)

沙发

line 21: i++ -> j++;
还有些小错误自己改吧,仔细点。其实lz算法有点麻烦。想想怎么简化下、、

板凳

最后几行哪三个for嵌套有很大问题 现改正如下 for(i=x-2;i>=0;i--)
    {
        for(j=1;j<i+1;j++) printf(" ");
        for(j=1;j<=2*(x-i-1)+1;j++)
           printf("%d",a[i][j]);
        printf("\n");
    }
lz还是要多细心些
至于算法什么的就不说了 
毕竟这种东西还是要不断编写代码才能得到好的么

3 楼


#include<stdio.h>
main()
{
    int x,a[100][200],i,j;
    printf("input hang=");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        for(j=1;j<=2*(x-i-1)+1;j++)
            a[i][j]=x-i;
    }
    for(i=0;i<x;i++)
    {
        for(j=1;j<i+1;j++) printf(" ");  
        for(j=1;j<=2*(x-i-1)+1;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }
    for(i=x-2;i>=0;i--)
    {
        for(j=1;j<i+1;i++) printf(" ");
        for(j=i+1;j<=2*(x-i-1)+1;j++);
           printf("%d",a[i][j]);
         printf("\n");
    }
}
你看下,还是不行啊

4 楼


不懂啊
#include<stdio.h>
main()
{
    int x,a[100][200],i,j;
    printf("input hang=");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        for(j=1;j<=2*(x-i-1)+1;j++)
            a[i][j]=x-i;
    }
    for(i=0;i<x;i++)
    {
        for(j=1;j<i+1;j++) printf(" ");  
        for(j=1;j<=2*(x-i-1)+1;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }
    for(i=x-2;i>=0;i--)
    {
        for(j=1;j<i+1;i++) printf(" ");
        for(j=i+1;j<=2*(x-i-1)+1;j++);
           printf("%d",a[i][j]);
         printf("\n");
    }
}
你看下,不行

5 楼


#include<stdio.h>
/*
input:

output:
4 4 4 4 4 4 4
  3 3 3 3 3
    2 2 2
      1
    2 2 2
  3 3 3 3 3
4 4 4 4 4 4 4
*/
int main(void)
{
    int n;// = 4;
    printf("input an integer between: 1 and 9: \n");

    scanf("%d", &n);

    int i=0; 
    int j=0;

    for(i=1; i<=n; i++)
    {
        
        for(j=0; j<i-1; j++)
        {
            printf("  ");
        }
        for(j=2*(n-i+1)-1;j>0;j--)
        {
            printf("%d ", n-i+1);
        }
        printf("\n");
    }

    for(i=n-1; i>0; i--)
    {
        
        for(j=0; j<i-1; j++)
        {
            printf("  ");
        }
        for(j=2*(n-i+1)-1;j>0;j--)
        {
            printf("%d ", n-i+1);
        }
        printf("\n");
    }

    return 0;
}

6 楼

大哥 你仔细点 是   {
        for(j=1;j<i+1;j++) printf(" ");
        for(j=1;j<=2*(x-i-1)+1;j++)
           printf("%d",a[i][j]);
        printf("\n");
    不是  for(i=x-2;i>=0;i--)
    {
        for(j=1;j<i+1;i++) printf(" ");
        for(j=i+1;j<=2*(x-i-1)+1;j++);
           printf("%d",a[i][j]);
         printf("\n");
    }
}第二个for中是j=1不是j=i+1,你可一把我的复制过去啊

7 楼

怎么回事乱码啊,你运行下
#include<stdio.h>
main()
{
    int x,a[100][200],i,j;
    printf("input hang=");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        for(j=1;j<=2*(x-i-1)+1;j++)
            a[i][j]=x-i;
    }
    for(i=0;i<x;i++)
    {
        for(j=1;j<i+1;j++) printf(" ");  
        for(j=1;j<=2*(x-i-1)+1;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }
    for(i=x-2;i>=0;i--)
    {
        for(j=1;j<i+1;j++) printf(" ");
        for(j=1;j<=2*(x-i-1)+1;j++);
           printf("%d",a[i][j]);
         printf("\n");
    }
    return 0;
}

8 楼

#include<stdio.h>
main()
{
    int x,a[100][200],i,j;
    printf("input hang=");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        for(j=1;j<=2*(x-i-1)+1;j++)
            a[i][j]=x-i;
    }
    for(i=0;i<x;i++)
    {
        for(j=1;j<i+1;j++) printf(" ");  
        for(j=1;j<=2*(x-i-1)+1;j++)
         printf("%d",a[i][j]);
        printf("\n");
    }
    for(i=x-2;i>=0;i--)
    {
        for(j=1;j<i+1;j++) printf(" ");
        for(j=1;j<=2*(x-i-1)+1;j++);
           printf("%d",a[i][j]);
         printf("\n");
    }
}
看下这两个程序,明明一样的,但是上面一个运行出来是乱码
#include<stdio.h>

main()
{
   int x,a[100][200],i,j;
   printf("input hang=");
   scanf("%d",&x);
  for(i=0;i<x;i++)
 {
  for(j=1;j<=2*(x-i-1)+1;j++)
   a[i][j]=x-i;
 }

 for(i=0;i<x;i++)
 {
  for(j=1;j<i+1;j++) printf(" ");  
  for(j=1;j<=2*(x-i-1)+1;j++)
   printf("%d",a[i][j]);
  printf("\n");
 }

 for(i=x-2;i>=0;i--)
 {
  for(j=1;j<i+1;j++) printf(" ");
  for(j=1;j<=2*(x-i-1)+1;j++) 
   printf("%d",a[i][j]);
  printf("\n");
 }
}

9 楼


[code=c]
#include<stdio.h>
main()
{
    int x,a[100][200],i,j;
    printf("input hang=");
    scanf("%d",&x);
    for(i=0;i<x;i++)
    {
        for(j=1;j<=2*(x-i-1)+1;j++)
            a[i][j]=x-i;
    }
    for(i=0;i<x;i++)
    {
        for(j=1;j<i+1;j++) printf(" ");  
        for(j=1;j<=2*(x-i)-1;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }
    for(i=x-1;i>=0;i--)
    {
        for(j=1;j<i+1;j++) printf(" ");
        for(j=1;j<=2*(x-i)-1;j++)
           printf("%d",a[i][j]);
        printf("\n");
    }
}[/code]

10 楼

我懂了,原来加了一个分号,在for(j=1;j<=2*(x-i)-1;j++);
不过还是感谢大家的帮忙。

我来回复

您尚未登录,请登录后再回复。点此登录或注册