注意:输出时应靠近屏幕最左边,即菱形最中间的一行是顶格输出,没有空格的。
例如下面是分别输入行数10、5、3的打印效果。
#include <stdio.h>
int main(){
//思路:先打印上三角,再复制打印上三角的代码进行修改,弄成下三角
//难点:输入的数、行数、空格数、星号数之间的数学联系
int i,j,m,n; //i为行变量,m为空格变量,j为星号变量,n为输入的值
scanf("%d",&n);
for(i=1;i<=n;i++) //上三角打印 公式;每行空格数 =n-行数
{ // 每行星号数 =2*行数-1
for(m=1;m<=n-i;m++){
printf(" ");
}
for(j=1;j<=2*i-1;j++){
printf("*");
}
printf("\n");
}
for(i=2;i<=n;i++) //下三角打印 公式: 每行空格数 =n-1
{ // 每行星号数 =(2*n+1)-2*行数
for(m=1;m<=i-1;m++){ //【注意】:下三角的首行与上三角的末行重叠 ,因此下三角从第二行开始运算打印
printf(" ");
}
for(j=1;j<=(2*n+1)-2*i;j++){
printf("*");
}
printf("\n");
}
return 0; //疑惑: 规律的发现思路
}