当前位置: 首页 > news >正文

寒假一:打印沙漏

7-1 打印沙漏 (20 分)

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

*****
 ***
  *
 ***
*****
2


实验代码
#include<stdio.h>
int main(void)
{
    int N,i,j,m,a,n;
    char ch;
    scanf("%d %c",&N,&ch); n = N-1;
    for(i=3;n>=2*i;i+=2)  //将除1之外的最小奇数赋值给i,打印出剩下没用掉的符号数
    {
        n = n-2*i;
    }
    i-=2;
    a = i;  //用于下半部分的打印,作用等同于上半部分的i
    for(m=0;i>=1;i-=2)  //确定打印行数,打印上半部分字符
    {
        m++;
        for(j=1;j<m;j++)  //打印空格
            printf(" ");
        for(j=0;j<i;j++)  //打印符号,转行
            printf("%c",ch);
            printf("\n");
    }
    for(i=3;i<=a;i+=2)  //打印下半部分,确定行数,同上半部分原理
    {
        m--;
        for(j=1;j<m;j++)
            printf(" ");
        for(j=0;j<i;j++)
            printf("%c",ch);
            printf("\n");
    }
    printf("%d",n);

    return 0;
}

  设计思路

我的思路

1.这道题与之前的打印空心菱形的题目相似,需要用到for语句嵌套循环,参考了一下之前的题目然后试着做的

 

2.这种要输出上下对称图形字符的题目首先要考虑的就是上下两部分的输出

 

3.首先我先考虑了要输出的剩余字符数,然后是字符行数,字符前面要打出的空格和每行需要打出的不同的字符数

 

4.这道题前几次做错了,通过调试改正的,需要注意不能把剩余字符数的输出忘记,仔细读题

 

3.本题调试过程碰到问题及解决方法

问题:没有注意for循环嵌套里面的条件,导致条件不成立
解决方法:仔细检查了一遍,发现条件不成立,漏了一个条件

运行结果截图

 

 

 

 

 

 

转载于:https://www.cnblogs.com/li-xue/p/10395386.html

相关文章:

  • unity depth texture-01
  • LinearEyeDepth和Linear01Depth
  • 打印沙漏
  • SQLAlchemy增删改查 一对多 多对多
  • 体积光,体积雾——链接
  • python 变量搜寻顺序法则LEGB之E注意事项
  • 体积雾
  • Java线程池详解(一)
  • 穷人为什么穷?
  • 【bzoj4567】[Scoi2016]背单词
  • Python基础python是如何进行内存管理的
  • Scriptable Render Pipeline-Custom Pipeline
  • C面试题1
  • [虚树][lca][dfs] 洛谷 P3233 世界树
  • Python Mysql 批量导入数据问题
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ES学习笔记(12)--Symbol
  • Fundebug计费标准解释:事件数是如何定义的?
  • idea + plantuml 画流程图
  • Just for fun——迅速写完快速排序
  • laravel 用artisan创建自己的模板
  • learning koa2.x
  • Map集合、散列表、红黑树介绍
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • vue2.0项目引入element-ui
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小程序 setData 学问多
  • 自定义函数
  • linux 淘宝开源监控工具tsar
  • ​【已解决】npm install​卡主不动的情况
  • ​如何在iOS手机上查看应用日志
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (java)关于Thread的挂起和恢复
  • (SpringBoot)第七章:SpringBoot日志文件
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (算法二)滑动窗口
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)Windows2003安全设置/维护
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET6实现破解Modbus poll点表配置文件
  • .net专家(张羿专栏)
  • @media screen 针对不同移动设备
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [ANT] 项目中应用ANT
  • [AUTOSAR][诊断管理][ECU][$37] 请求退出传输。终止数据传输的(上传/下载)
  • [BZOJ2208][Jsoi2010]连通数