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

如何修改C语言代码以实现指定行数的特定星号图形输出?

C语言星号图形输出问题修正

问题描述

需实现C语言程序,根据用户输入的奇数行数打印特定样式星号图形:

  • 输入7行预期输出:


**
*
**



  • 输入5行预期输出:

**
*
**


现有代码运行后不符合预期,例如输入9行时输出:




**
*
**




需修改代码以得到正确图形。

现有代码

#include <stdio.h>

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

    // 提示用户输入行数
    printf("请输入要绘制的行数: ");
    scanf("%d", &n);

    // 验证输入是否为奇数
    if (n % 2 == 0) {
        printf("行数必须为奇数。\n");
        return 1; 
    }

    // 打印图形上半部分
    for (i = 0; i < n/2+1; i++) {
        for (j = 0; j < i; j++) {
            printf(" ");
        }
        for (k = 0; k < n/2+1-i; k++) {
            printf("*");
        }
        printf("\n");
    }

    // 打印图形下半部分
    for (i = n/2-1; i >= 0; i--) {
        for (j = 0; j < i; j++) {
            printf(" ");
        }
        for (k = 0; k < n/2+1-i; k++) {
            printf("*");
        }
        printf("\n");
    }

    return 0; 
}

问题分析与修正

现有代码的核心问题是下半部分的空格逻辑错误:上半部分通过递增空格、递减星号实现了从多到少的星号排列,但下半部分错误地沿用了上半部分的空格递减逻辑,导致图形呈现对称缩进,不符合需求。

正确的逻辑应为:下半部分所有行的缩进需与中间行(星号最少的行)保持一致,星号数量从2开始递增至与第一行相同。

修改关键点

  1. 新增mid变量存储n/2,简化重复计算,明确中间行的空格数与星号基准值
  2. 下半部分空格循环改为固定打印mid个空格,确保缩进统一
  3. 下半部分星号数量从2开始,每次循环递增1,直至达到mid+1个(与上半部分首行星号数一致)

修正后的代码

#include <stdio.h>

int main() {
    int n, i, j, k;
    int mid;

    // 提示用户输入行数
    printf("请输入要绘制的行数: ");
    scanf("%d", &n);

    // 验证输入是否为奇数
    if (n % 2 == 0) {
        printf("行数必须为奇数。\n");
        return 1; 
    }

    mid = n / 2;

    // 打印图形上半部分(从最多星号到中间行的1个星号)
    for (i = 0; i <= mid; i++) {
        // 打印i个空格
        for (j = 0; j < i; j++) {
            printf(" ");
        }
        // 打印(mid + 1 - i)个星号
        for (k = 0; k < mid + 1 - i; k++) {
            printf("*");
        }
        printf("\n");
    }

    // 打印图形下半部分(从2个星号递增到最多星号)
    for (i = 1; i <= mid; i++) {
        // 固定打印mid个空格
        for (j = 0; j < mid; j++) {
            printf(" ");
        }
        // 打印(i + 1)个星号
        for (k = 0; k < i + 1; k++) {
            printf("*");
        }
        printf("\n");
    }

    return 0; 
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:45:33