pat乙级1027

1027. 打印沙漏(20)
本题要求你写个程序把给定的符号打印成沙漏的形状。
例如给定17个“*”,要求按下列格式打印
*****
***
*
***
*****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;
相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大
顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏
能用掉尽可能多的符号。

输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出
剩下没用掉的符号数。
输入样例:
19 *
输出样例:
*****
***
*
***
*****
2

先写出上面一半,后写出下面一半,进行拼接

#include
using namespace std;
int main(){
    int num;
    char ch;
    cin>>num>>ch;
    int n=1;
    while(num>=(2*n*n-1)){
        n++;
    }
    n-=1;
    //2n-1即为行和列数
    int i,j,m;
    for(i=0;ifor(j=0;jcout<<' ';
        for(m=0;m<(2*n-1-2*i);m++)
            cout<cout<for(i=n;i<2*n-1;i++){
        for(j=0;j<2*n-2-i;j++)
            cout<<' ';
        for(m=0;m<(-2*n+3+2*i);m++)
            cout<cout<int a=num-(2*n*n-1);
        cout<

你可能感兴趣的:(PAT)