You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化含多循环的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:10:50