问题描述
我正在用 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