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

如何打印指定星型图案?请讲解C语言实现逻辑

问题分析

你现有代码的问题主要有三个:

  • 多余的四层循环:外层s和k循环完全没有作用,只会让基础的对角线图案重复打印n*n次,没有意义
  • 星号匹配条件不全:仅判断了i + j == n + 1(反对角线),缺少了正对角线i == j的匹配条件,只能打出半幅图案
  • 空格宽度不匹配:星号打印的是* 占2个字符宽度,其他位置只打1个空格,会导致整体图案错位
实现逻辑

你要的X形星型图案只需要两层循环即可实现,逻辑如下:

  1. 外层循环控制行数,遍历1到n的所有行号i
  2. 内层循环控制列数,遍历1到n的所有列号j
  3. 对每个坐标点(i,j)判断:如果是正对角线(行号等于列号),或是反对角线(行号+列号等于n+1),则打印星号,否则打印等宽空格
  4. 每一行所有列遍历完成后打印换行符,进入下一行
正确实现代码
#include <stdio.h>
int main()
{
    int n;
    printf("Enter the number:");
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (i == j || i + j == n + 1) {
                printf("* ");
            } else {
                printf("  ");
            }
        }
        printf("\n");
    }
    return 0;
}
效果示例

输入n=5时,输出效果如下:

*       * 
  *   *   
    *     
  *   *   
*       * 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:36:04