东软学习小组:烈焰
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定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 分)相关推荐

  1. C语言程序练习-L1-002 打印沙漏 (20分)

    L1-002 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数 ...

  2. C++学习之路 | PTA乙级—— 1027 打印沙漏 (20 分)(精简)

    1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...

  3. 7-138 打印沙漏 (20 分)

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

  4. 7-1 打印沙漏 (20 分)

    ** 7-1 打印沙漏 (20 分) ** 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ************ ***** 所谓&q ...

  5. PTA练习题1027 打印沙漏 (20分)

    1027 打印沙漏 (20分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符 ...

  6. 打印沙漏 (20 分)

    打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个符号:各行 ...

  7. 1027 打印沙漏 (20 分)

    1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 所谓"沙漏形状",是指每行输出奇数个 ...

  8. 7-1 打印沙漏 (20分)

    所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组 ...

  9. PTA乙级 1027 打印沙漏——20分

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

  10. 1027 打印沙漏 (20分)——27行代码AC(结构清晰)

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ********** ...

最新文章

  1. 个人使用OKR目标管理工具的感悟
  2. win2012 R2的ntp时间同步设置解析
  3. 【分组背包问题 (HDU 3535 )】
  4. 计算机网络课程设计子网划分,计算机网络实验三   子网掩码与划分子网
  5. SpringMVC+RestFul详细示例实战教程(实现跨域访问)
  6. 计算机硬件:关于CPU的12个硬核干货!
  7. tasker使用手册_如何开始使用Tasker调整Android手机
  8. Django 源码阅读
  9. w ndows2000,华塑CAE软件简介
  10. Dell Alienware 13 R3 win10 安装 ubuntu 18.04 总结
  11. 【转】HTTP响应报文与工作原理详解
  12. 深度学习文本分类|模型代码技巧
  13. 论文赏析[NAACL19]无监督循环神经网络文法 (URNNG)
  14. 良心推荐:40个Google Chrome扩展程序
  15. Visio 下载,及密钥
  16. 【每日最爱一句】2013.07.31
  17. 计算机课外活动兴趣小组内容,学校课外兴趣小组活动总结
  18. Parallels Desktop 安装 Windows10 提示“安全启动功能防止操作系统启动”怎么解决?
  19. 测试中常用的批处理命令
  20. SVN更新或提交时出现冲突该如何解决

热门文章

  1. 用Python中的py2neo库操作neo4j,搭建简单关联图谱—基于家有儿女中的人物关系
  2. 2022年1月国产数据库排行榜:TiDB霸榜两年势头不减,openGauss与OceanBase分数大涨
  3. excel数据匹配_Python 自动整理 Excel 表格
  4. 智能车入门——元素识别与循迹
  5. 00.敏捷项目管理——前序笔记
  6. 分水岭算法java,C++实现分水岭算法(Watershed Algorithm)
  7. wps怎么添加附录_如何将附录生成目录 - 卡饭网
  8. 位图(bitset)的使用【STL】
  9. 拉钩招聘信息爬取以及可视化
  10. 算法(5)动态规划法