输出字符菱形
题目描述
用 *
构造一个对角线长 5 5 5 个字符,倾斜放置的菱形。
输入格式
没有输入要求。
输出格式
如样例所示。用 *
构成的菱形。
样例 #1
样例输入 #1
样例输出 #1
*
***
*****
***
*
题解
前言
我们看见这个题第一眼就是用循环打印菱形,但看清这个题的题干,它对于输入是没有要求的,即菱形的高度是确定的,我们直接用 printf 输出即可,当然用循环做的方法也需要掌握。
分析
1. printf 输出
仔细观察,不难发现这个图形由三种元素组成,* ,空格和换行符 (\n) ,使用 printf输出的时候只要注意到这一点,把每一行的空格数和 * 数点好,行与行之间换行就好了。
代码
#include<stdio.h>
int main()
{
printf(" *\n ***\n*****\n ***\n *");
return 0;
}
程序运行结果
2.循环输出
循环输出有一个好处就是可以控制菱形的高度,我们输入一个值 n n n,代表最中间那一行的行数,一共是 2 n − 1 2n-1 2n−1 行,下面我们需要找出每一行的 * ,空格的数目各有什么规律(涉及打印类的题都要找规律),没打印一行记得换行。
我们用 for 循环打印这个图形,用 i i i 表示第几行,用 j j j 来调控每一行打印的个数(即循环次数),由于上半层和下半层的规律不一样,我们可以分两次打印。
上半层
空格规律
第 n n n 行是没有空格的,往上空格数依次加一,第 n − 1 n-1 n−1 行有一个空格,第 n − 2 n-2 n−2 有两个空格,那么就可以找到这样的规律,空格数 = n n n - 该行行数。
空格部分代码
for(j = 1; j <= n - i; j++)
{
printf(" ");
}
* 规律
第一行有一个,第二行有三个,第