PAT-B 1027. 打印沙漏
2016-07-22 10:57
288 查看
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
输出样例:
程序代码:
***** *** * *** *****
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(<=1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
***** *** * *** *****
2
程序代码:
#include<iostream> #include<math.h> using namespace std; void printf(int n,char s); void space(int n); void out(int n,char s); int main() { int i; int n; char s; cin>>i>>s; n=sqrt((i+1)/2); out(n,s); cout<<i-2*n*n+1; return 0; } void printf(int n,char s) { for(int i=1;i<=n;i++) cout<<s; } void space(int n) { if (n!=0) { for(int i=1;i<=n;i++) cout<<' '; } } void out(int n,char s) { for(int i=n;i>1;i--) { space(n-i); printf(2*i-1,s); cout<<endl; } space(n-1); printf(1,s); cout<<endl; for(int i=2;i<=n;i++) { space(n-i); printf(2*i-1,s); cout<<endl; } }
相关文章推荐
- Java 中的类锁和对象锁
- 数据库智能提示和源代码管理工具(支持SVN)SQLPrompt_7.0.0.40, RedGate_SQL_SourceControl.V3.0.13.4214
- 【札记】SUSE Linux(SLES 11为例)下常用维护命令,文件大小、查找内容、统计、打包、远程拷贝、FTP、SSH
- C语言 随机函数 种子
- maven指定execution id的方式来执行目标
- mac下的常用命令
- spring-restdocs的研究
- [书目20130415]实用IT项目管理
- 可输入的 Combox(DropDownList)
- JavaWeb项目自动化部署测试学习
- 转!!EL表达式大全
- MySQL 5.6的72个新特性(译)
- ORA-02055 ORA-02068 ORA-03113 ORA-01591
- linux系统终端创建虚拟环境
- Android内存泄漏的八种可能
- eclipse加载maven项目初始配置
- Android studio远程主机强迫关闭了一个现有的连接(夜神模拟器)
- Gson解析和json解析
- Eclipse中添加文档注释快捷键
- iOS 直接使用16进制颜色