如何优化含多循环的C语言星号矩形打印代码使其更简洁?
优化方案:合并循环块
你可以把三个独立的循环合并成一个主循环,通过判断当前行的位置来决定输出内容,这样就能减少循环块的数量,代码也更简洁:
#include <stdio.h> int main(void) { int width, height; printf("Enter width and height: "); scanf("%d %d", &width, &height); // 遍历每一行 for (int i = 0; i < height; i++) { // 判断是否是首行或末行 if (i == 0 || i == height - 1) { // 打印全星号行 for (int j = 0; j < width; j++) { printf("*"); } } else { // 打印中间行:开头* + 中间空格 + 结尾* printf("*"); for (int j = 0; j < width - 2; j++) { printf(" "); } printf("*"); } // 每行结束换行 printf("\n"); } return 0; }
代码说明
- 用一个外层循环遍历所有
height行,避免了三个独立的循环块 - 在循环内部通过
i == 0或i == height - 1判断是否为首尾行,直接打印全星号 - 中间行则固定打印开头和结尾的
*,中间填充对应数量的空格 - 自动处理
height <= 1的边界情况:比如输入高度为1时,只会打印一行全星号
内容的提问来源于stack exchange,提问作者Dimitri Mikhalev
相关产品推荐
相关产品推荐

