我有这个代码,它要求用户输入一个范围并输出一个数字三角形。例如,如果输入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
答案 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循环中的代码隔离在另一个函数中,并从循环内部调用它。