本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。
输入格式:
输入在一行中给出一个正的奇数n。
输出格式:
输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。
解题思路:寻找行数,空格,*的数量规律即可,注意区分上下三角形部分,代码没有优化。
#include <stdio.h>
int main(){
int n,t;
scanf("%d",&n);
int x=-2;//注意到空格是n-1,n-1-2,n-1-4,与下方x+=2搭配
for(int i=1;i<=n;i++){
t=i;//保护i
if(t>(n+1)/2){//下半部分
t=n+1-t;
x-=2;
}else{
x+=2;
}
for(int j=0;j<n-1-x;j++){
printf(" ");
}
for(int k=0;k<2*t-1;k++){
printf("* ");
}
printf("\n");
}
return 0;
}