如何打印指定星型图案?请讲解C语言实现逻辑
问题分析
你现有代码的问题主要有三个:
- 多余的四层循环:外层
s和k循环完全没有作用,只会让基础的对角线图案重复打印n*n次,没有意义 - 星号匹配条件不全:仅判断了
i + j == n + 1(反对角线),缺少了正对角线i == j的匹配条件,只能打出半幅图案 - 空格宽度不匹配:星号打印的是
*占2个字符宽度,其他位置只打1个空格,会导致整体图案错位
实现逻辑
你要的X形星型图案只需要两层循环即可实现,逻辑如下:
- 外层循环控制行数,遍历1到n的所有行号
i - 内层循环控制列数,遍历1到n的所有列号
j - 对每个坐标点
(i,j)判断:如果是正对角线(行号等于列号),或是反对角线(行号+列号等于n+1),则打印星号,否则打印等宽空格 - 每一行所有列遍历完成后打印换行符,进入下一行
正确实现代码
#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
相关产品推荐
相关产品推荐

