*
* *
* *
* *
* *
* *
*
要打印出如上图所示的菱形,我曾想了一个非常没有技术含量的程序,就是先列举出来,再用puts()打印,程序如下:
#include <stdio.h> int main() { int i; char lx[8][8] = {{' ',' ',' ','*',' ',' ',' '}, {' ',' ','*',' ','*',' ',' '}, {' ','*',' ',' ',' ','*',' '}, {'*',' ',' ',' ',' ',' ','*'}, {' ','*',' ',' ',' ','*',' '}, {' ',' ','*',' ','*',' ',' '}, {' ',' ',' ','*',' ',' ',' '}}; for (i = 0; i < 8; i++) { puts (lx[i]); } return 0; }
之后我又想到了一个利用循环来实现的,先打印上半部分,在打印下半部分,要保证打印的行数为奇数。程序如下:#include <stdio.h> #include <string.h> int main() { char a[100][100]; int i,j; int n; scanf("%d", &n); // 要打印的行数 n = n/2*2+1; // 保证是奇数 // 打印上半部分 for (i=0; i<n/2; i++) { for (j=0; j<n; j++) { if (j == n/2-i || j == n/2+i) { a[i][j] = '*'; } else { a[i][j] = ' '; } } } // 打印下半部分 for (i=n/2; i<n; i++) { for (j=0; j<n; j++) { if (j == i-n/2 || j == n-(i-n/2)-1) { a[i][j] = '*'; } else { a[i][j] = ' '; } } } for (i=0; i<n; i++) { for (j =0; j <n; j++) { printf ("%c", a[i][j]); } printf ("\n"); } return 0; }