打印沙漏 C语言

2023-11-06

题目

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

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

碎碎念念

首先要知道要打印多少层。

观察发现,第一个有一层就一个,第二个有三层有7个,第三个有五层有17个。

把图案分成上下两部分,先求带尖的,根据等差数列相应公式,公差为2,第n个应该是2n-1,总数应该是n的平方,加上另一部分,总数应该是2*n*n-1,对于第n个图案,应该有2n-1层。

知道了层数,下面就是两个循环嵌套,外循环算层数,内循环算每一层的个数。

代码

#include<stdio.h>
int main()
{
	int num=1,sum,i,j,floor=1,rest;//num存第几个,floor存相应的层数。 
	char sign;
	scanf("%d %c",&sum,&sign);
	while(2*num*num-1<=sum)
	num++;
	num--;//因为跳出循环的时候已经是大于sum了,所以退一步回去。 
	floor=2*num-1;
	rest=sum-2*num*num+1;
	for(i=0;i<=floor/2;i++)//打印图案的上半部分。 
	{
		for(j=0;j<i;j++)
		printf(" ");
		for(j=i;j<floor-i;j++)
		printf("%c",sign);
		if(j==floor-i)
		printf("\n");
	}
	for(i=floor/2-1;i>=0;i--)//打印图案的下半部分。 
	{
		for(j=0;j<i;j++)
		printf(" ");
		for(j=i;j<floor-i;j++)
		printf("%c",sign);
		if(j==floor-i)
		printf("\n");
	}
	printf("%d",rest);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印沙漏 C语言 的相关文章

  • Android之R文件

    首先了解什么是R文件 当 Android 应用程序被编译 会自动生成一个 R 类 其中包含了所有 res 目录下资源 包括布局文件layout 图片文件drawable等 具体的内容如下所示 public final class R 全是以
  • 力扣题---单值二叉树

    题目链接 单值二叉树 先来看下题目与例题 如果二叉树每个节点都具有相同的值 那么该二叉树就是单值二叉树 只有给定的树是单值二叉树时 才返回 true 否则返回 false 示例 1 输入 1 1 1 1 1 null 1 输出 true 示
  • CSV文件在Python中的处理方式

    一 使用Python基本语法读写CSV文件 使用基本语法读取CSV文件中的数据大概思路是 获取文件对象 读取表头 按逗号分隔符拆分表头字段 使用for循环语句获取表体记录数据 拆分后再次写入另一张CSV文件中 如果要将数据写入xls 格式的
  • java怎么复制别人的数据库_java – 在不同数据库之间复制数据(两者都支持jdbc)...

    我想将测试数据库 mysql 中的所有数据复制到生产数据库 hsqldb 我使用了hibernate 让它在我的数据库中创建表 所以结构 架构是相同的 使用mysql dump我可以在两个mysql数据库之间复制数据 但在我的情况下 数据库

随机推荐

  • css选择器

    4 2 CSS选择器 4 属性选择器 Attribute Selectors 2008年05月8日 4 2 CSS选择器 1 通配选择器 类型选择器与ID选择器 4 2 CSS选择器 2 类选择器与包含选择器 4 2 CSS选择器 3 子元
  • 千兆路由器怎么设置网速最快_如何设置路由器使网速最快

    有些时候我们自己家路由器的网速达不到办理宽带时的要求 通讯商又说那边没有问题 改怎么办呢 其实我们可以设置一下路由器进行加快网速 下面是学习啦小编整理的设置路由器网速最快的方法 供您参考 设置路由器网速最快的方法 在浏览器里输入路由器IP地
  • Java 无限级递归树形菜单

    文章目录 建立数据模型SysDept 创建数据库表 建立树形结构工具类 测试 递归生成一个树状json 需要提供一个数据模型Sys Dept和建立树形结构的TreeNodeUtils 首先获取所有节点的父节点 递归创建父节点下的子节点树 并
  • css全站变灰

    css属性全网站变灰 filter grayscale 使用可以调整元素的灰度值 html filter grayscale 0 95 webkit filter grayscale 0 95 moz filter grayscale 0
  • 以组织的名义

    以组织的名义 原创 你兽爷 兽楼处 今年4月17日 是医生谭秦东出狱两周年的日子 那天他发了一条朋友圈 自由两周年纪念 感谢万千朋友的帮助 两年多前 憨厚的谭医生写文章质疑鸿茅药酒的安全性 内蒙古凉城警方千里迢迢从广东把他请回内蒙喝茶 看守
  • flask导入一个模板加CSS js

    from flask import Flask redirect url for render template app Flask name app route def index return render template login
  • ant-vue table换页以后选中的数据无法记住前一页已勾选的数据

    ant vue table换页以后选中的数据无法记住前一页已勾选的数据 解决方法 使用组件自带的onSelect事件和onSelectAll事件来记录 HTML Markup
  • TiDB quick start

    文章目录 使用 TiUP 部署 TiDB 集群 TiUP playground 部署本地测试环境 错误 TiUP cluster 单机模拟生成环境部署 访问集群 报错 附录 topo yaml 网卡配置模板 https docs pingc
  • Springboot中使用线程拿到当前账号信息

    Springboot中使用线程的思想拿到当前账号信息 1 简介 我查看源码发现springboot中有定义好了的线程还有线程池 下面这个类就是关于请求的线程 我们通过线程拿到请求对象 这个线程在用户有效连接服务器就在 所以用户在线的状态下
  • Ubuntu多CUDA版本安装及切换

    可同时安装多个CUDA版本在 usr local路径下 使用软连接实现版本的切换 一 查看已安装的CUDA版本 所有已安装的CUDA版本默认保存在 usr local路径下 cd到该路径下通过ls命令查看 文件夹中cuda 11 0表示当前
  • 谈谈 <script> 标签以及其加载顺序问题,包含 defer & async

  • C语言数组练习

    1 打印杨辉三角 include
  • 底层注解-@Configuration详解 & @Configuration(proxyBeanMethods = true/false)

    一 Configuration详解 Configuration注解的作用 声明一个类为配置类 用于定义配置类 可替换xml配置文件注册bean对象 被注解的类内部包含有一个或多个被 Bean注解的方法 这些方法将会被AnnotationCo
  • 微信公众号网页开发之拍照、上传本地图片

    微信网页开发 JS SDK说明文档 https developers weixin qq com doc offiaccount OA Web Apps JS SDK html 0 绑定域名 登录微信公众平台进入 公众号设置 gt 功能设置
  • 前端blob下载文件

    在一个项目中 需要下载excel pdf word zip等数据模板 而后端返回的是一个文件流 前端就需要使用blob来下载 1 首先要在接口中添加 responseType blob 模板下载 export function downLo
  • wazuh常用内容、防御sql注入

    目录 安装wazuh 常用内容 检测sql注入 主动响应 安装wazuh 本地测试的话建议用ova文件 直接导入虚拟机就能用了 官网 Virtual Machine OVA Installation alternatives 常用内容 目录
  • (字典树)acwing835. Trie字符串统计 算法基础班第二讲

    题目 维护一个字符串集合 支持两种操作 I x 向集合中插入一个字符串 x Q x 询问一个字符串在集合中出现了多少次 共有 N 个操作 输入的字符串总长度不超过 105 字符串仅包含小写英文字母 输入格式 第一行包含整数 N 表示操作数
  • 【目标检测】20、ATSS: bridging the gap between anchor-based and anchor-free detection via ATSS

    文章目录 一 背景和动机 二 方法 2 1 分析不同 2 2 方法 2 3 嵌入 FCOS 三 效果 四 代码 本文贡献点 指出了 anchor based 和 anchor free 方法性能差别的决定性因素 如何定义正样本和负样本 提出
  • WPF编程,Live Charts使用说明(4)——主题

    可以为应用程序中的任何图表设置默认样式 必须根据需要选择颜色 大小和笔触 色彩 这组颜色将是系列中的默认颜色 当系列数大于主题中的颜色数时 这些颜色将重复 材质 基于Google的材质设计 基于MoedernUi设计的Metro 蓝色蓝调
  • 打印沙漏 C语言

    题目 本题要求你写个程序把给定的符号打印成沙漏的形状 例如给定17个 要求按下列格式打印 所谓 沙漏形状 是指每行输出奇数个符号 各行符号中心对齐 相邻两行符号数差2 符号数先从大到小顺序递减到1 再从小到大顺序递增 首尾符号数相等 给定任