如何使用Java for循环实现要求的钻石打印图案?
钻石图案实现方案
核心逻辑
钻石图案为上下对称结构,按两段拆分实现即可:
- 设定奇数参数
n作为钻石最宽位置的星号数量,同时也是整个图案的总行数 - 上半段(含中间最宽行):第
i行(从0开始计数)先输出(n - 2i - 1) / 2个空格,再输出2i + 1个星号 - 下半段:倒序遍历上半段除中间行外的所有行,重复空格+星号的输出规则即可
代码实现
Python 版本
# n可自定义为任意奇数,代表钻石最宽处星号数 n = 5 # 输出上半段+中间行 for i in range((n // 2) + 1): print(" " * ((n - 2 * i - 1) // 2) + "*" * (2 * i + 1)) # 输出下半段 for i in range((n // 2) - 1, -1, -1): print(" " * ((n - 2 * i - 1) // 2) + "*" * (2 * i + 1))
C 语言版本
#include <stdio.h> int main() { // n可自定义为任意奇数,代表钻石最宽处星号数 int n = 5; // 输出上半段+中间行 for (int i = 0; i <= n / 2; i++) { for (int j = 0; j < (n - 2 * i - 1) / 2; j++) { printf(" "); } for (int j = 0; j < 2 * i + 1; j++) { printf("*"); } printf("\n"); } // 输出下半段 for (int i = n / 2 - 1; i >= 0; i--) { for (int j = 0; j < (n - 2 * i - 1) / 2; j++) { printf(" "); } for (int j = 0; j < 2 * i + 1; j++) { printf("*"); } printf("\n"); } return 0; }
运行示例
n=5时输出效果如下:
* *** ***** *** *
内容的提问来源于stack exchange,提问作者Afghan Eka Pangestu
相关产品推荐
相关产品推荐

