遇到一个面试题:用最少的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; }
|