#include"stdio.h"
int main(){
int n,i,j;
printf("设置一个有n行的菱形"); //由菱形这一条件我们可以知道n为奇数
scanf("%d",&n);
for(i=1;i<=(n+1)/2;i++){
for(j=1;j<=(n+1)/2-i;j++){
printf(" ");
} //通过两个for循环去控制上半三角形空格的数量
for(j=1;j<=2*i-1;j++){
printf("*");
} //用*号输出上半三角形
printf("\n");
}
for(i=n;i>(n+1)/2;i--){
for(j=1;j<=n-i+1;j++){
printf(" ");
} //下半三角形空格数量
for(j=1;j<=2*i-n-2;j++){
printf("*");
}
printf("\n");
}
return 0;
}
总体思路:1.首先将菱形分成两个三角形来进行分步解决。
2.我们可以发现当我们需要n行的菱形时,*号最多的数也是n。我们可以仔细发现,上半个三角形空格的数量有一定的规律得出(n+1)/2-i。
3.这样的题目,我们需要找到数据中空格数量变化的规律,与*号数量的规律就能进行解决。