博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018秋寒假作业4—PTA编程总结1
阅读量:4606 次
发布时间:2019-06-09

本文共 1197 字,大约阅读时间需要 3 分钟。

7-1 打印沙漏 (20 分)

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

***** ***  * ********2 1).实验代码
#include
int main(){ int a,b,h,d,e,x,y,z; char op; while(1) { scanf("%d %c",&a,&op); if(a>0&&a<=1000) break; } b=a-1; for(e=0;d>=1;d-=2,e++){ for(x=0;x
=2*d;d+=2){ b=b-2*d; } d-=2; h=d; for(y=3;y<=h;y+=2,z--){ for(x=0;x

  

2) 设计思路

首先要把那个输出多少个数的那个数进行分解,就是倒过来思考,假如我要输出17个*,那么 17 我从中间那层开始分解,中间那层说好了必须是1 所有  17-1=16    这是第一层    然后中间这层往两边走 都是加2 也就是说  1+2=3 这是第二层要输出的个数  也就是说   16-3*2=10   第三层 是 3+2=5  正好 5*2=10  这样来计算出从中往外走着几层应该输出几层  然后每层输出多少, 通过一个循环  没递进一层 就是++,然后用for循环来判断我减了数字是否还大于我要计算的最后那层的个数,如果大于或等于就进入下一个循环。用第一个for来打印上沙漏上部分,再嵌套两个for,第一个用来输出符号,第二个用来输出空格,最后用一个计数器计算第一个for用了多少个符号,第二个for用来输出沙漏下部分,同上。

 

 

 

 3)本题调试过程碰到问题及解决办法

1,第一次编写出现了错误,因为思路错误,有些代码直接被跳过,导致图形只有四分之一个沙漏,将for循环的顺序进行了调整后成功打出了沙漏形状

 

 

4).运行结果截图

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/lpf666/p/10369670.html

你可能感兴趣的文章
个人介绍
查看>>
使用python动态特性时,让pycharm自动补全
查看>>
MySQL数据库免安装版配置
查看>>
你必知必会的SQL面试题
查看>>
html5 Canvas绘制时钟以及绘制运动的圆
查看>>
Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
查看>>
JavaScript空判断
查看>>
洛谷 P1439 【模板】最长公共子序列(DP,LIS?)
查看>>
python timeit
查看>>
Wireless Network 并查集
查看>>
51nod 1019 逆序数
查看>>
20145202马超《JAVA》预备作业1
查看>>
云推送注意(MSDN链接)
查看>>
OpenMobile's Application Compatibility Layer (ACL)
查看>>
竞价广告系统-广告检索
查看>>
强哥PHP面向对象学习笔记
查看>>
[转]基于.NET平台常用的框架整理
查看>>
Symbian (Read Inbox)读取收件箱的内容
查看>>
良好的编程规范
查看>>
struts2 入门
查看>>