#include <stdio.h> void Lozenge0(int n,char ch) { // 空心菱形 int i,j; for(i = 0;i < n; ++i) { // 上半部分 for(j = 0;j <= n - i; ++j) printf(" "); // 输出每行前导空格 printf("%c",ch); for(j = 0; j < 2 * i - 1; ++j) printf(" "); // 菱形内部空格 if(i) printf("%c",ch); printf("\n"); } for(i = n - 2;i >= 0; --i) { // 下半部分 for(j = 0;j <= n - i; ++j) printf(" "); // 输出每行前导空格 printf("%c",ch); for(j = 0; j < 2 * i - 1; ++j) printf(" "); // 菱形内部空格 if(i) printf("%c",ch); printf("\n"); }} int diffabs(int a,int b) { // 返回a,b差值的绝对值,即|a - b| return (a > b) ? (a - b) : (b - a);} void Lozenge(unsigned int n,char c) { unsigned int i,j,m; for(i = 0;i < n;i++) { m = diffabs(n/2,i); for(j = 0;j <= m;j++) printf(" "); // 输出每行前导空格 for(j = 0;j < (n + 1)/2 - m;j++) printf("%c ",c); printf("\n"); }} int main() { int n = 10; char ch = '*'; Lozenge0(n,ch); Lozenge(n,ch); return 0;}