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

修复C语言for循环打印指定宽度菱形图案的代码问题

C语言菱形图案输出代码修复方案

现有代码问题排查

  • 上半部分每行长度不足:原有内容循环仅到2*i-1,少了一个字符位置,导致行尾的\无法打印
  • 上半部分前置空格多1位:空格循环逻辑输出n-i+1个空格,比正确值多1,导致上半部分整体右偏
  • 下半部分行数缺失:原有下半部分循环从i = n-1开始,比需求少1行,缺少最宽的下半部分首行
  • 下半部分字符逻辑颠倒:下半部分应该行首打印\、行尾打印/,原有逻辑和上半部分一致,图案颠倒
  • 下半部分前置空格计数错误:空格逻辑多输出1个空格,导致下半部分整体右偏

修复后完整代码

#include <stdio.h>

int main() {
  int n, i, j, l;

  printf("Enter width: ");
  scanf("%d", &n);

  // 打印上半部分
  for (i = 1; i <= n; i++) {
    // 打印前置空格
    for (j = i; j < n; j++) {
      printf(" ");
    }
    // 打印/ \结构
    for (l = 1; l <= 2 * i; l++) {
      if (l == 1)
        printf("/");
      else if (l == 2 * i)
        printf("\\");
      else
        printf(" ");
    }
    printf("\n");
  }
  // 打印下半部分
  for (i = n; i >= 1; i--) {
    // 打印前置空格
    for (j = i; j < n; j++) {
      printf(" ");
    }
    // 打印\ /结构
    for (l = 1; l <= 2 * i; l++) {
      if (l == 1)
        printf("\\");
      else if (l == 2 * i)
        printf("/");
      else
        printf(" ");
    }
    printf("\n");
  }

  return 0;
}

核心修改说明

  1. 上半部分内容循环长度从2*i-1调整为2*i,匹配每行需要的2个符号+中间空格的总长度
  2. 上半部分空格循环的终止条件从j <=n改为j <n,减少1个多余空格
  3. 下半部分循环起始值从n-1改为n,补全缺失的首行
  4. 下半部分的打印逻辑调整,行首输出\,行尾输出/,符合下半部分图案要求
  5. 下半部分空格逻辑和上半部分对齐,保证左右对齐效果

内容的提问来源于stack exchange,提问作者casual

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:54:01