7-6 打印沙漏 (20 分)
东软学习小组:烈焰
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
输入样例:
19 *
输出样例:
2
#include<stdio.h>
int main() {int N;char sign;scanf("%d %c", &N, &sign);if (N < 7) {printf("%c\n%d", sign, N - 1);return 0;}int topLevel = 0;int curLeverCount = 1;int useNum = 1;while (useNum + (curLeverCount + 2) * 2 <= N) {curLeverCount += 2;useNum += curLeverCount * 2;topLevel++;}// 打印上部分for (int i = 0; i < topLevel; i++) {for (int k = 0; k < i; k++) {putchar(' ');}for (int j = 0; j < curLeverCount; j++) {putchar(sign);}curLeverCount = curLeverCount - 2;putchar('\n');}// 打印中间for (int k = 0; k < topLevel; k++) {putchar(' ');}printf("%c\n", sign);// 打印下部分for (int i = topLevel - 1; i >= 0; i--) {curLeverCount = curLeverCount + 2;for (int k = i; k > 0; k--) {putchar(' ');}for (int j = 0; j < curLeverCount; j++) {putchar(sign);}putchar('\n');}printf("%d", N - useNum);return 0;
}
修改
#include<iostream>#include<math.h>
using namespace std;
int len=0;
int main(){int n;char c;cin>>n>>c;int sum=0;len=(sqrt( (n-1)/2+1 )-1);sum=4*len+2*len*len+1;len=len*2+1;
// cout<<"len="<<len<<" sum="<<sum<<endl;//总行数 len/2为上下部分的行数 //上半部分 for(int i=0;i<len/2;++i){// for(int j=0;j<i;++j){//计算打印的空格个数,当前的行数 cout<<" ";}for(int j=0;j<2*(len/2-i)+1;++j){cout<<c;}cout<<endl;}for(int i=len/2;i>=0;--i){for(int j=0;j<i;++j){cout<<" ";}for(int j=0;j<2*(len/2-i)+1;++j){cout<<c;}cout<<endl;}cout<<n-sum<<endl;return 0;
}
7-6 打印沙漏 (20 分)相关推荐
- C语言程序练习-L1-002 打印沙漏 (20分)
L1-002 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数 ...
- C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...
- 7-138 打印沙漏 (20 分)
7-138 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓" ...
- 7-1 打印沙漏 (20 分)
** 7-1 打印沙漏 (20 分) ** 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓&q ...
- PTA练习题1027 打印沙漏 (20分)
1027 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符 ...
- 打印沙漏 (20 分)
打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行 ...
- 1027 打印沙漏 (20 分)
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...
- 7-1 打印沙漏 (20分)
所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组 ...
- PTA乙级 1027 打印沙漏——20分
本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓"沙漏形状",是指每行输出奇 ...
- 1027 打印沙漏 (20分)——27行代码AC(结构清晰)
立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ********** ...
最新文章
- 个人使用OKR目标管理工具的感悟
- win2012 R2的ntp时间同步设置解析
- 【分组背包问题 (HDU 3535 )】
- 计算机网络课程设计子网划分,计算机网络实验三 子网掩码与划分子网
- SpringMVC+RestFul详细示例实战教程(实现跨域访问)
- 计算机硬件:关于CPU的12个硬核干货!
- tasker使用手册_如何开始使用Tasker调整Android手机
- Django 源码阅读
- w ndows2000,华塑CAE软件简介
- Dell Alienware 13 R3 win10 安装 ubuntu 18.04 总结
- 【转】HTTP响应报文与工作原理详解
- 深度学习文本分类|模型代码技巧
- 论文赏析[NAACL19]无监督循环神经网络文法 (URNNG)
- 良心推荐:40个Google Chrome扩展程序
- Visio 下载,及密钥
- 【每日最爱一句】2013.07.31
- 计算机课外活动兴趣小组内容,学校课外兴趣小组活动总结
- Parallels Desktop 安装 Windows10 提示“安全启动功能防止操作系统启动”怎么解决?
- 测试中常用的批处理命令
- SVN更新或提交时出现冲突该如何解决
热门文章
- 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系
- 2022年1月国产数据库排行榜:TiDB霸榜两年势头不减,openGauss与OceanBase分数大涨
- excel数据匹配_Python 自动整理 Excel 表格
- 智能车入门——元素识别与循迹
- 00.敏捷项目管理——前序笔记
- 分水岭算法java,C++实现分水岭算法(Watershed Algorithm)
- wps怎么添加附录_如何将附录生成目录 - 卡饭网
- 位图(bitset)的使用【STL】
- 拉钩招聘信息爬取以及可视化
- 算法(5)动态规划法