【题目链接】

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

  1. *****
  2. ***
  3. *
  4. ***
  5. *****

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

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

输入格式:

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

输出格式:

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

输入样例:

  1. 19 *

输出样例:

  1. *****
  2. ***
  3. *
  4. ***
  5. *****
  6. 2

【提交代码】

  1. #include <stdio.h>
  2.  
  3. int count(n)
  4. {
  5. if(n == )
  6. return ;
  7. else
  8. return count(n-)+*n-;
  9. }
  10.  
  11. void printf_t(int N, int n, char c)
  12. {
  13. int i;
  14. if(n == )
  15. {
  16. for(i = ; i < N - n; i++)
  17. printf(" ");
  18. printf("%c", c);
  19. printf("\n");
  20. return ;
  21. }
  22. else
  23. {
  24. for(i = ; i < N - n; i++)
  25. printf(" ");
  26. for(i = ; i < *n-; i++)
  27. printf("%c", c);
  28. printf("\n");
  29. printf_t(N, n-, c);
  30. }
  31. }
  32.  
  33. void printf_b(int N, int n, char c)
  34. {
  35. int i;
  36. if(n == N)
  37. {
  38. for(i = ; i < * n + ; i++)
  39. printf("%c", c);
  40. printf("\n");
  41. return ;
  42. }
  43. else
  44. {
  45. for(i = ; i < N - n; i++)
  46. printf(" ");
  47. for(i = ; i < * n + ; i++)
  48. printf("%c", c);
  49. printf("\n");
  50. printf_b(N, n+, c);
  51. }
  52. }
  53.  
  54. void printf_n(int n, char c)
  55. {
  56. int i, j;
  57.  
  58. for(i = n; i > ; i--)
  59. {
  60. for(j = n - i; j > ; j--)
  61. printf(" ");
  62. for(j = ; j < * i - ; j++)
  63. printf("%c", c);
  64. printf("\n");
  65. }
  66.  
  67. for(i = ; i < n; i++)
  68. {
  69. for(j = n - i; j > ; j--)
  70. printf(" ");
  71. for(j = ; j < * i + ; j++)
  72. printf("%c", c);
  73. printf("\n");
  74. }
  75. }
  76.  
  77. int main(void)
  78. {
  79. char c;
  80. int n, N, T1, T2;
  81.  
  82. scanf("%d %c", &N, &c);
  83.  
  84. n = ;
  85. while(N >= (T1 = count(n)))
  86. {
  87. n++;
  88. T2 = T1;
  89. }
  90. n--;
  91.  
  92. //printf_t(n, n, c);
  93. //printf_b(n-1, 1, c);
  94. //printf("%d", N - T2);
  95.  
  96. printf_n(n, c);
  97. printf("%d", N - T2);
  98.  
  99. return ;
  100. }

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. linux web php 安全相关设置

    1 隐藏apache 或者 nginx的版本号 2 隐藏php的版本号 3 php 程序做好基本的防注入 xss之类的攻击 4 禁用PHP一些危险的函数 比如 phpinfo.system之类的 5 ...

  2. C#识别验证码技术-Tesseract

    相信大家在开发一些程序会有识别图片上文字(即所谓的OCR)的需求,比如识别车牌.识别图片格式的商品价格.识别图片格式的邮箱地址等等,当然需求最多的还是识别验证码.如果要完成这些OCR的工作,需要你掌握 ...

  3. 关于linux服务器的批量维护、批量升级、

    由于版权费用原因,众多中小服务器采用linux服务器进行功能处理.在进行批量升级.更新业务程序时.可以采用如下批量方案: 1.打包成rpm包,并配置yum源服务器,以支持个人的yum服务器进行处理.一 ...

  4. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  5. 使用AlarmManager定时更换壁纸----之二

    import java.io.IOException; import android.app.Service;import android.app.WallpaperManager;import an ...

  6. [Js]Ajax

    一.什么是Ajax 不刷新的情况下读取数据或提交数据 (最早出现ajax:谷歌地图,拖动一下出现一片新的视野) 应用:用户注册.在线聊天.微博 特性:只能从服务器上去读取数据(所以我们需要配置自己的服 ...

  7. JS访问剪切板中的图片

    google出来一个html2canvas,它利用canvas来渲染读取的DOM树,也就是说它只能截取document里的内容,如果要像qq截图那样,应该怎么做?用过百度的Ueditor编辑器的朋友都 ...

  8. java.lang.ExceptionInInitializerError

    java.lang.ExceptionInInitializerError at com.csdhsm.compiler.test.DevTest.testReadInput(DevTest.java ...

  9. hihocoder 1236(2015北京网络赛 J题) 分块bitset乱搞题

    题目大意: 每个人有五门课成绩,初始给定一部分学生的成绩,然后每次询问给出一个学生的成绩,希望知道在给定的一堆学生的成绩比这个学生每门都低或者相等的人数 因为强行要求在线查询,所以题目要求,每次当前给 ...

  10. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...