打印一个系列的C程序

问题描述

我正在用 C 编写一个程序来打印以下系列。

   1
  121
 12321
1234321

下面是我的代码,它工作得很好,但是我可以做任何更改来使程序使用更少的循环。

#include <stdio.h>
int main() {
int num,i,j,terms,x;
printf("ENTER NUMBER OF TERMS: ");
scanf("%d",&terms);
x = terms--;
for(num=1;num<=terms;num++){
    for(i=1;i<=x;i++){
        printf(" ");
    }
    for(i=1; i<=num; i++) {
        printf("%d",i);
    }
    for(j=num-1 ; j>0; j--){
        printf("%d",j);
     }
    printf("\n");
    x--;
   }
}

解决方法

您可以使用 printf 指定要输出的空格数,而不是使用 for 循环

printf("%*c",n,' ');
,
You can fusion the two first loops making an if else statement and using de answer below to print x spaces with one single print

for(i=1;i<=x;i++){
    printf(" ");
}
for(i=1; i<=num; i++) {
    printf("%d",i);
}



printf("%*c",n+1,'1');
for(i=1; i<=num; i++) {
    printf("%d",i);
}

或者像下面的答案一样指定空格数,删除第一个循环

,

我在代码中使用了 3 个循环

#include <math.h>
#include <stdio.h>

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

}
,

您可以尝试只使用一个循环:

将term初始化为1
将IncreaseFactor 初始化为21

每次通过时:
计算空格数
建议打印 pp182 之类的空格(防止零空格)
打印词条
建议打印 pp182 之类的空格(防止零空格)
将 Term 乘以 100,并将增加因子添加到 Term
将IncreaseFactor 乘以10 并加上11