逆转数字三角形[E]

时间:2017-03-23 12:54:30

标签: c

我有这个代码,它要求用户输入一个范围并输出一个数字三角形。例如,如果输入4,则代码​​执行此操作:

   1
  121
 12321
1234321

问题是代码的减少。我试图改变代码,但由于它输出了1,结果并不顺利。

代码:

#include <stdio.h>  

main(){  
  int i,j,k,l,n;  
  printf("enter the range=");  
  scanf("%d",&n);  
  for(i=1;i<=n;i++){  
    for(j=1;j<=n-i;j++) {  
      printf(" ");
    }  
    for(k=1;k<=i;k++){
      printf("%d",k);  
    }  
    for(l=i-1;l>=1;l--){  
      printf("%d",l);  
    }  
    printf("\n");
  }
}

有没有任何功能或方法,所以我可以有这样的输出?

   1
  121
 12321
1234321
 12321
  121
   1

2 个答案:

答案 0 :(得分:1)

您可以使用此代码,但我建议您了解此代码的工作原理

#include <stdio.h>  

int main(){  
  int i,j,k,l,n,space;
  printf("enter the range=");  
  scanf("%d",&n);  
  for(i=1;i<=n;i++){  
    for(j=1;j<=n-i;j++) {  
      printf(" ");
    }  
    for(k=1;k<=i;k++){
      printf("%d",k);  
    }  
    for(l=i-1;l>=1;l--){  
      printf("%d",l);  
    }  
    printf("\n");
  }

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

答案 1 :(得分:0)

这只是将主要for(i=1;i<=n;i++)循环复制成副本的问题。目前你的for循环从1到n。你应该复制那个循环并让它从n-1变为1.我留给你练习理解为什么你应该从n-1开始,以及如何扭转你的循环方向。

为避免不必要的代码重复,您可以将for循环中的代码隔离在另一个函数中,并从循环内部调用它。