C语言循环嵌套实战:完整菱形与半个菱形输出详解
在C语言编程中,利用循环嵌套控制字符的排列是入门的经典练习。本文将通过具体案例,演示如何编写代码在控制台输出完整的空心/实心菱形以及半边星号图案,重点解析行数、空格数与星号数量之间的数学关系。
利用循环嵌套输出完整菱形
要输出一个规则的菱形,通常需要将其拆分为“上三角”和“下三角”两个部分分别处理。每一行的输出逻辑包含两部分:前导空格和星号(*)。通过外层循环控制行号,内层循环分别控制空格数量和星号数量。
代码逻辑说明:
- 上三角部分:从第1行到第4行,随着行数i增加,前导空格数减少(公式:
4 - i),星号数量增加(公式:1 + 2 * (i - 1))。 - 下三角部分:从第3行倒序回到第1行,逻辑与上三角相反,确保整体对称。
以下是实现该图形的完整代码示例:
#include<stdio.h>
int main()
{
int i, j;
// 上三角控制行
for (i = 1; i <= 4; i++)
{
// 控制每行前导空格
for (j = 1; j <= 4 - i; j++)
printf(" ");
// 控制每行星号数量
for (j = 1; j <= 1 + 2 * (i - 1); j++)
printf("*");
printf("\n");
}
// 下三角控制行
for (i = 3; i >= 1; i--)
{
// 下三角每行空格
for (j = 1; j <= 4 - i; j++)
printf(" ");
// 下三角每行星号
for (j = 1; j <= 1 + 2 * (i - 1); j++)
printf("*");
printf("\n");
}
return 0;
}
运行上述代码后,将在终端显示一个由星号组成的菱形图案。实际输出效果如下所示:
C语言输出半个菱形
除了完整菱形,有时还需要输出仅由星号组成、无空格占位的半个菱形(或称为右半三角形扩展体)。这种图形不需要计算空格,只需关注每行星号数量的递增与递减规律。
图案分析与步骤:
目标图案为13行,以第7行为分界线:
- 上半部分(1-7行):星号数量逐行递增,公式为
2 * i - 1。 - 下半部分(8-13行):星号数量逐行递减,可通过倒序循环从第6行计算至第1行实现。
以下是核心代码实现:
#include <stdio.h>
int main()
{
int i, j;
// 上半部分:1到7行
for (i = 1; i <= 7; i++)
{
for (j = 1; j <= (2 * i - 1); j++)
{
printf("*");
}
printf("\n");
}
// 下半部分:6到1行
for (i = 6; i > 0; i--)
{
for (j = (i * 2 - 1); j > 0; j--)
{
printf("*");
}
printf("\n");
}
// Windows环境下暂停查看结果
system("pause");
return 0;
}
该代码执行后的输出结果为:
总结
通过上述两个实例可以看出,C语言中控制台的图形输出核心在于将视觉形状转化为数学逻辑。完整菱形需要同时处理空白字符和填充字符的空间布局,而半个菱形则更侧重于数列的单调变化控制。掌握循环变量的定义及内外层循环的配合,是解决此类问题的关键。
以上就是C语言利用循环嵌套输出菱形和半个菱形的详细内容,更多关于C语言基础编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













