【题目链接】

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

*****
***
*
***
*****
2

【提交代码】

 #include <stdio.h>

 int count(n)
{
if(n == )
return ;
else
return count(n-)+*n-;
} void printf_t(int N, int n, char c)
{
int i;
if(n == )
{
for(i = ; i < N - n; i++)
printf(" ");
printf("%c", c);
printf("\n");
return ;
}
else
{
for(i = ; i < N - n; i++)
printf(" ");
for(i = ; i < *n-; i++)
printf("%c", c);
printf("\n");
printf_t(N, n-, c);
}
} void printf_b(int N, int n, char c)
{
int i;
if(n == N)
{
for(i = ; i < * n + ; i++)
printf("%c", c);
printf("\n");
return ;
}
else
{
for(i = ; i < N - n; i++)
printf(" ");
for(i = ; i < * n + ; i++)
printf("%c", c);
printf("\n");
printf_b(N, n+, c);
}
} void printf_n(int n, char c)
{
int i, j; for(i = n; i > ; i--)
{
for(j = n - i; j > ; j--)
printf(" ");
for(j = ; j < * i - ; j++)
printf("%c", c);
printf("\n");
} for(i = ; i < n; i++)
{
for(j = n - i; j > ; j--)
printf(" ");
for(j = ; j < * i + ; j++)
printf("%c", c);
printf("\n");
}
} int main(void)
{
char c;
int n, N, T1, T2; scanf("%d %c", &N, &c); n = ;
while(N >= (T1 = count(n)))
{
n++;
T2 = T1;
}
n--; //printf_t(n, n, c);
//printf_b(n-1, 1, c);
//printf("%d", N - T2); printf_n(n, c);
printf("%d", N - T2); return ;
}

PAT (Basic Level) Practise:1027. 打印沙漏的更多相关文章

  1. PAT (Basic Level) Practice 1027 打印沙漏 分数 20

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** *****   所谓"沙漏形状",是指 ...

  2. PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)

    PAT (Basic Level) Practise (中文)-1027. 打印沙漏(20)  http://www.patest.cn/contests/pat-b-practise/1027 本题 ...

  3. PAT (Basic Level) Practise (中文)-1039. 到底买不买(20)

    PAT (Basic Level) Practise (中文)-1039. 到底买不买(20) http://www.patest.cn/contests/pat-b-practise/1039 小红 ...

  4. PAT (Basic Level) Practise (中文)- 1022. D进制的A+B (20)

    PAT (Basic Level) Practise (中文)-  1022. D进制的A+B (20)  http://www.patest.cn/contests/pat-b-practise/1 ...

  5. PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)

    PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...

  6. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  7. PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)

    PAT (Basic Level) Practise (中文)- 1026. 程序运行时间(15)    http://www.patest.cn/contests/pat-b-practise/10 ...

  8. PAT (Basic Level) Practise (中文)-1028. 人口普查(20)

    PAT (Basic Level) Practise (中文)-1028. 人口普查(20)   http://www.patest.cn/contests/pat-b-practise/1028 某 ...

  9. PAT (Basic Level) Practise (中文)-1029. 旧键盘(20)

    PAT (Basic Level) Practise (中文)-1029. 旧键盘(20) http://www.patest.cn/contests/pat-b-practise/1029 旧键盘上 ...

  10. PAT (Basic Level) Practise (中文)-1030. 完美数列(25)

    PAT (Basic Level) Practise (中文)-1030. 完美数列(25)   http://www.patest.cn/contests/pat-b-practise/1030 给 ...

随机推荐

  1. 计算excel列的名字

    #include <iostream> using namespace std; int main() {     unsigned int column;     cin>> ...

  2. thinking in java 之Reference类的使用

    Reference是java中的特殊引用类.描述的是特殊作用(主要是关于垃圾回收对象)的引用. 它有3个子类: 1.SoftReference; 2.WeakReference 3.PhantomRe ...

  3. a标签的css样式四个状态的设计

    表示所有状态下的连接 如 a{color:red} ① a:link:未访问链接 ,如 a:link {color:blue} ② a:visited:已访问链接 ,如 a:visited{color ...

  4. LICEcap

    LICEcap是一款简洁易用的动画屏幕录制软件,它可将屏幕录像的内容直接保存为高质量(每帧颜色数量可超过256)GIF动态图片格式.并且支持特别标记鼠标操作动态效果.

  5. SQL 插入日期时间 变量值

    --看看吧^^ CREATE TABLE #temp ( test datetime ) go --SQL: INSERT #temp SELECT 1.1 UNION ALL GO --SQL: I ...

  6. redis学习(一)

    一.redis简介 Redis是基于内存.可持久化的日志型.key-value高性能存储系统.关键字(Keys)是用来标识数据块.值(Values)是关联于关键字的实际值,可以是任何东西.有时候你会存 ...

  7. zoj 3228 覆盖及非覆盖串的多次匹配

    题目题意: 给定多个小串,在一个长串中寻找这些串的匹配次数,有些统计的是可覆盖的,有些统计的是非覆盖的 先可以简单理解一下,建立ac自动机后,当前节点包含的字符串必然被把它作为fail指针的节点包含, ...

  8. Yslow&PageSpeed– 诊断各种缓慢症状

    Google的PageSpeed和yahoo的yslow是各位不可少的前端工具(同样也都是firebug的插件,安装了firebug之后才可以拥有她们),当各位无法用三寸不烂之舌收拾产品和各种大佬的时 ...

  9. Screen对象

    document.write("Screen-width:"+screen.width+"Screen-height:"+screen.height);docu ...

  10. 一个很好介绍js的例子

    function UpdateInit(opt){ this.init(opt);} UpdateInit.prototype={ loadUrl:null, loadParam:null, befo ...