<C语言程序实例>C语言实现菱形输出
前言
这一问题无论是在C语言还是别的编程语言的入门学习中都会遇到,还是比较常见的,要学一下的。
一、菱形
我们先要看一下我们要输出的菱形是什么样子的。这里举一个例子简单说明一下:
大家首先要知道一点的是,我们要输出的菱形,星号的总行数一定是奇数。
偶数的话,输出的样子根本就不是标准菱形的样子。
其次就是,我们在编写程序时,是将这个菱形拆分为上下两个部分进行输出的,即上层的正三角和下层的倒三角。并且我看到有些人会讨论中间最长的星号行,应该属于上层,还是下层,但其实这都不影响。
我们就拿如图的菱形进行举例,我们可以发现,每一层星号距离左边的空格的个数都等于:5-行号(即5-1;5-2;…);而星号的个数则为:2*行号-1;这样我们就发现了输出的规律。下层在实用此规律的基础上,只不过是上层的逆输出。这是我的一种简单的思维方式。
还有一种思维方式,可以向大家介绍:
设菱形的总行数为line,总列数为column,当前行为i,当前列为j。上半部分与下半部分的规律不一样,应该分开讨论。
我们着眼于星号,思考什么条件下输出星号,总结出如下的规律。
1) 对于上半部分(包括中间一行),当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(i-1) (column+1)/2-(i-1)为第i行最左边的星号
j<=(column+1)/2+(i-1) (column+1)/2+(i-1)为第i行最右边的星号
2) 对于下半部分,当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(line-i) (column+1)/2-(line-i)为第i行最左边的星号
j<=(column+1)/2+(line-i) (column+1)/2+(line-i)为第i行最右边的星号
不满足上述条件,则输出空格。
二、代码实现
1.简单化实现方法
代码如下(不适用于长多行的菱形输出):
/* 这里输出的就是我们上面图中的菱形,上层为5,下层为4*/
#include "stdio.h"
void main()
{
int i,j;
for(i=1;i<=5;i++)//这里的5是指上层行数,根据具体题目要求可进行改变
{
for(j=1;j<=5-i;j