1077: 空心菱形
时间限制: 1 Sec 内存限制: 128 MB
提交: 3659 解决: 2199
[提交] [状态] [讨论版] [命题人:admin]
题目描述
输入一个整数n,(1<=n<=20),输出一个空心菱形,其中每个边由n个’*'组成。
输入
输入包含一个整数,n(1<=n<=20)
输出
输出一个空心菱形,每个边由n个’*'组成
样例输入 Copy
5
样例输出 Copy
*
* *
* *
* *
* *
* *
* *
* *
*
这个题当初想的时候想先打印上部再打印下部,得用2次循环,比较复杂。后面想干脆一次打印一行,这样用1次循环就行,简化了许多。下面贴代码。
#include <iostream>
#include <stdio.h>
using namespace std;
void px(int n,int m)//定义函数每行输出星
{//m为传入的行数
int i;
for(i=1;i<=n;i++)//第i行的左边
{
if(i!=n-m+1)//确定星号位置
cout<<" ";
else
cout<<"*";
}
for(i=n-1;i>=1;i--)//第i行的右边
if(i!=n-m+1)//确定星号位置
cout<<" ";
else
cout<<"*";
cout<<endl;//换行
}
int main()
{
int i,n;
cin>>n;
for(i=1;i<=n;i++)//打印上部
{
px(n,i);
}
for(i=n-1;i>=1;i--)//打印下部
px(n,i);
return 0;
}