本文共 941 字,大约阅读时间需要 3 分钟。
#includeintmain() { int N, i, j, k, maxi; char s; scanf("%d %c", &N, &s); /* * i为单独一个"*"上面可能的层数,计算最大的i */ for( i = 1; ; i++ ) { if( 2 * (i * i + 2 * i) + 1 > N ) { i--; break; } } maxi = i; //printf("i: %d\n", maxi); // 打印沙漏上半部分,不包括单独的"*" for( i = maxi; i >= 1; i-- ) { for( j = 0; j < maxi - i; j++ ) { printf(" "); } for( k = 1; k <= (2 * i + 1); k++ ) { printf("%c", s); } printf("\n"); } // 打印沙漏下半部分,包括"*" for( i = 0; i <= maxi; i++ ) { for( j = maxi - i; j > 0; j-- ) { printf(" "); } for( k = 1; k <= (2 * i + 1); k++ ) { printf("%c", s); } printf("\n"); } // 判断符号是否有剩余 maxi++; if( 2 * (maxi * maxi + 2 * maxi) + 1 > N ) { maxi--; printf("%d\n", N - (2 * (maxi * maxi + 2 * maxi) + 1)); } return 0;}
转载地址:http://dpkxi.baihongyu.com/