打印沙漏

来源:互联网 发布:淘宝被挤爆了怎么回事 编辑:程序博客网 时间:2024/05/16 23:41

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

***** ***  * ********

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

输入格式:

输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。

输出格式:

首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

输入样例:
19 *
输出样例:
***** ***  * ********2
简单题(等差数列):

#include <stdio.h>#include <string.h>#include <iostream>#include <string>#include <algorithm>#include <math.h>using namespace std;int main(){    char c;    int num, n;    while(cin >> num >> c)    {        n = int(sqrt((num + 1) / 2));        int x = 1;        for(int i = n; i >= 1; i --, x ++)        {            for(int j = 1;j < x; j ++)                cout << " ";            int a = 1 + (i - 1) * 2;            for(int k = 0;k < a;k ++)                cout << c;            cout << endl;        }        -- (-- x);        for(int i = 2; i <= n; i ++, x --)        {            for(int j = 1; j < x;j ++)                cout << " ";            int a = 1 + (i - 1) * 2;            for(int k = 0;k < a;k ++)                cout << c ;            cout << endl;        }        cout << num - (2 * n * n - 1) << endl;    }}




0 0
原创粉丝点击