2017-03-23 75 views
-2

我有这个代码,它向用户询问一个范围并输出一个数字三角形。例如,如果输入4,代码是这样的:三角形的反转[c]

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 
+0

看起来像一个家庭作业。你有什么尝试?事实上,这看起来很容易。 – zipzit

+0

我复制了我的main for循环并将其逆转,但输出只有'1'。 @zipzit –

+0

因此,显示您尝试的代码。 – zipzit

回答

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"); 
     } 
} 
0

如何,这是简单地使反转副本的主for(i=1;i<=n;i++)循环的问题。目前您的for循环从1到n。你应该复制这个循环,并使它从n-1变成1.我留给你理解为什么你应该从n-1开始,以及如何改变循环的方向。

为了避免不必要的代码重复,您可以将您的for循环中的代码隔离到不同的函数中,并从循环中调用它。