题目描述
输入一个整数n,(2<=n<=20),输出一个空心菱形,其中每个边由n个’*'组成。
输入
输入包含一个整数,n(2<=n<=20)
输出
输出一个空心菱形,每个边由n个’*'组成
样例输入
5
样例输出
以下代码根据我自己的想法写出的,后续可能会有优化,使得代码更简洁,算法更高级
代码如下
#include<stdio.h>
int main()
{
int n,i,j;
scanf("%d",&n);
//上部分
for(i=1;i<=n;i++)//i行
{
for(j=1;j<=n*2;j++)//j列
{
if(i+j==(n+1) || j-i==(n-1))//符合条件的输出*号
printf("*");
else if(j==n*2)//每一行到达指定位置换行
printf("\n");
else//其余的均输出空格
printf(" ");
}
}
//下部分
for(i=1;i<=n;i++)//i行
{
for(j=1;j<=n*2 ;j++)//j列
{
if(i==1)//下部分特殊,第一行不输出
continue;
else if(i==j || i+j==n*2)
printf("*");
else if(j==n*2)
printf("\n");
else
printf(" ");
}
}
return 0;
}