1. 介绍
在这篇博客中,我们将详细解析一个用C语言编写的程序,该程序旨在生成具有对称美感的菱形图案。用户可以通过输入指定的长度,程序将输出相应大小的菱形。
2. 代码
注:代码中的注释已经非常详细,也有举例,慢慢理解
// 菱形
#include <stdio.h>int main() {int len = 0;scanf("%d", &len);// 上半部分for (int i = 0; i < len; i++) {// 打印空格for (int j = 0; j < len - i - 1; j++) { // -1 -- 由于最后一行没有空格所以减1, -i -- 因为空格是逐个减少 printf(" ");}// 打印星号for (int j = 0; j < 2 * i + 1; j++) { // (1个* == 2*0+1=1 2个* == 2*1+1=3)->算数规律printf("*");}printf("\n"); // 换行}// 下半部分for (int i = 0; i < len - 1; i++) { // len-1 => 下半部分少一行 所以减1// 打印空格for (int j = 0; j <= i; j++) { // j <= i => 根据i的增长来增加空格printf(" ");}// 打印星号for (int j = 0; j < 2 * (len - 1 - i) - 1; j++) { // 2 * (len -1 - i) - 1 => 11(2*6-1) 9(2*5-1) 7(2*4-1), len -1 - i => (8-1-0=7) (8-1-1=6) (8-1-2=5)printf("*");}printf("\n"); // 换行}return 0;
}
输入
用户输入:8
输出
*************************************************
****************************************************************
逻辑总结
本程序通过嵌套循环结构分别绘制菱形的上半部分和下半部分。在上半部分中,随着行数增加,空格逐行减少而星号逐行增加;而在下半部分中,空格逐行增加,星号逐行减少,最终形成对称的菱形图案。通过精心设计循环条件和内部逻辑,使得输出结果满足菱形的形状特征。