题目描述
打印出一个由符号“*”组成的菱形图案。
输入要求
输入一个整数n(奇数), 表示菱形的行数。
输出要求
菱形用字符 * 表示,每行都没有后缀的空格。
输入样例
5
输出样例
* *** ***** *** *
提示
来源
NBU OJ
#include<stdio.h>
//菱形可以分成两部分输出, 一部分是上半部分加上中间那一行
//第二部分是 中间那一行往下那一部分
//打个比方输出一个5行的菱形,
//上面输出3行,下面输出2两行
//上面那个大for跳出循环的条件是 x = n/2+1;i=1;i<=x;
//下面那个大for跳出循环的条件是 x = n/2+1;i=x-1;i>0;
//这实现上面输出2部分
//主要思路是:
//塞入两个大for循环,
//每个大for循环里塞入2个小for循环,分别实现空格和星号的输出,
//再根据i增加或者减少的规律是实现空格和星号的增加或者减少
void printlingxing(int n)
{
int i=0,j=0;
int x = n/2+1;
for(i=1;i<=x;i++)
{
for(j=0;j<x-i;j++)//随着i的增加,上半部分空格输出逐渐减少
printf(" ");
for(j=0;j<2*i-1;j++)//随着i的增加,上半部分*号输出逐渐增加
printf("*");
printf("\n");//每一行结束都换行
}
for(i=x-1;i>0;i--){
for(j=x-i;j>0;j--)//随着i的减少,下半部分空格输出逐渐增加
printf(" ");
for(j=2*i-1;j>0;j--)//随着i的减少,下半部分*号输出逐渐减少
printf("*");
printf("\n");
}
}
int main(){
int n;
scanf("%d",&n);
printlingxing(n);
return 0;
}