当回头看的时候就变得很容易理解了。
在做的过程中感觉最重要的是知道等差数列的公式, 加入for循环的嵌套,然后带入即可。
等差数列:an = a1+(n-1)d;
在上半部分:空格是逐渐减少,‘*’是逐渐增加的
空格的公式:line(要打印的行数)- 目前已经打印的行数
‘*’的公式 :是一个等差数列,1,3,5,6,7,所以an = 1+(n-1)*2=2n-1
在下半部分:空格是逐渐增加的,‘*’是逐渐减少的
空格的公式:逐行+1,
‘*’的公式:(line(打印的行数)-1-i(已打印的行数))*2
在打印下半部分时,注意要少打印一行,不然就不是菱形了。
#include <stdio.h>
int main(){
int line = 0;
int i,j;
scanf("%d",&line);
for(i = 1;i <=line;i++){
for(j = 0;j< line - i;j++){
printf(" ");
}
for(j = 0;j<2*i-1;j++){
printf("*");
}
printf("\n");
}
for(i = 0;i<=line -1;i++){
for(j = 0;j <= i;j++){
printf(" ");
}
for(j = 0;j <(line - i - 1)*2 - 1;j++){
printf("*");
}
printf("\n");
}
return 0;
}
运行结果如图:(以20行为例)。
如有改正,请在评论区踢我。