打印菱形


遇到一个面试题:用最少的for打印如下菱形

1
2
3
4
5
6
7
   *
***
*****
*******
*****
***
*

写了很久,最后用了五个for解决/(ㄒoㄒ)/~~,怕是最笨的办法:上半部分先正常打印三角形,下半根据规律推算循环条件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main(){
int n = 7; // 行数,只能输入奇数
for(int i=0;i<n;i++){
if(i<=n/2){
for(int j=(n/2-i);j>0;j--){
printf(" ");
}
for(int k=0;k<(2*i+1);k++){
printf("*");
}
printf("\n");
}else{
for(int l=0;l<(i-n/2);l++){
printf(" ");
}
for(int m=0;m<2*(n-i-1)+1;m++){
printf("*");
}
printf("\n");
}
}
return 0;
}