(C语言)打印沙漏---pta

PAT1027打印沙漏(C) 输出图形 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式 输入在一行给出1个正整数N(≤1000)和一个符号,中间... 阅读详情

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

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

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

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

输入格式:

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

输出格式:

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

输入样例:

19 *

输出样例:

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

 

记得点个赞! 

代码:

#include<stdio.h>
#include<math.h>
int main()
{
    int j;//表示*上部分的第几层。
    char o;//表示图像。
    int i;//表示第j层有多少个*。
    int count = 0;//计数器。
    //int a;//表示( )上部分的第几层。
    int b;//表示第a层有多少个( )。
    int S;//表示总共有多少个*。
    scanf("%d %c", &S, &o);
    int n = (int)sqrt(1 + ((S - 1) / 2)) - 1;//表示*上部分的层数。
    int q=n;
    for (j = 1; j <= n; j++)
    {
        i=2*q+1;
        b=j-1;
        q--;
        while(b--)
            printf(" ");
        while(i--)
        {
            printf("%c", o);
            count++;
        }
        printf("\n");
    }
    int w=n;
    while(w--)
        printf(" ");
    printf("%c\n", o);
    count++;
    //下部分
    int t=n;
    for (j = 1; j <= n; j++)
    {
        b=t-1;
        while(b--)
        {
            printf(" ");
        }
        t--;
        i=2*j+1;
        while(i--)
        {
            printf("%c", o);
            count++;
        }
        printf("\n");
    }
    printf("%d", S - count);
    return 0;
}

 

L1-002 打印沙漏(方法启发与博主小白程序员丶钟同学) 那么接下来就要简单了,我们只需要用两个大的for循环,把倒三角形的打法和三角形的打法打出来就行了。我们得到了可以循环的公式,那么接下来就是简单的for循环的使用了。这个就相对于上半来说非常的简单了。 阅读详情

相关推荐

PTA(Basic Level) 1027:打印沙漏 (C语言实现)

PTA(Basic Level) 1027:打印沙漏 (C语言实现) 这个题和打印菱形很像,可以对比看看:添加链接描述 分析:这里主要是确定上三角打印的行数,需要用到等差数列前n项和:s=na1+n(n-1)/2 d。 由于a1=1,d=2,因此s=n+n(n-1),提取公因式n后,s=n*n. #include <stdio.h> int main() { int s,i,j,...

LIve1AnD1LeARN的博客 458

00-自测1. 打印沙漏(20)

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

weixin_45285042的博客 2131

PTA刷题——打印沙漏

@[TOC](文章目录) 前言 自学c语言两周,记录一下PTA的刷题,原题描述为 一、逻辑分析 本题要求打印的沙漏每层都为奇数,故首先需计算出沙漏的最高层的符号数; 打印的总符号数不能超过所输入的N,定义变量x表示每层的符号数,从最少的1个符号数算起,每层的符号数依次加2,累加计算当前总的符号数,并求出此时剩余的符号数,当剩余的符号数大于下一层符号数(x+2)的两倍时,继续循环进入下一层,由此计算出沙漏的最高层符号数x(注:此时跳出循环时x多进行了一次+2的操作); in..

m0_47171776的博客 1896

1027. 打印沙漏(20)-PAT乙级真题

1027. 打印沙漏(20)本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印*****************所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式:输入在一...

柳婼 の blog 4622

C语言基础:L1-002 打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

Tom_Jerry__的博客 5460

大数据审计常用的算法模型

数据预处理:用聚类算法(K-Means)对数据分组,缩小分析范围;异常初筛:用孤立森林/DBSCAN快速标记疑似异常样本;风险分级:用随机森林/XGBoost对疑似异常打分,确定核查优先级;关联深挖:用FP-Growth挖掘异常样本背后的人员/流程关联;文本佐证:用BERT分析相关合同/审批文本,获取舞弊证据。例如,某审计项目通过“K-Means分组→孤立森林标异常→FP-Growth找关联→BERT审合同”的流程,仅用1周就完成了过去3个月需10人团队的工作量,且挖出2起隐藏的串标舞弊案。

Yulay专栏 1066

PTA 自测-1 打印沙漏(C语言)

PTA 自测-1 打印沙漏(C语言)输入格式:输出格式:输入样例:分析:代码: 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正...

月之白牙的博客 2823

CarSim转向控制对比指南:开环扭矩控制vs转角控制(附Simulink连接示例)

本文深入对比了CarSim中车轮转角控制与开环扭矩控制的核心原理与适用场景。开环扭矩控制能激活完整的转向系统动力学,更适用于EPS控制策略开发与驾驶员在环仿真等对真实性要求高的场景。文章提供了详细的Simulink接口配置步骤与连接示例,为车辆动力学仿真工程师提供了清晰的决策与实操指南。

weixin_29199873的博客 478

C语言解pta——打印沙漏

通过数学的数列知识,可以得到 x 行沙漏得到字符总数的公式为:Sn = (x + 1)² / 2 - 1. 在这里我们使用了一个循环,只要计算后的总数小于等于我们输入的数num,那么我们就从最小值1每次加2,直到 row 行沙漏数大于num. 我们可以发现,无论是 row 行计算后的数量是小于num还是等于 num, 退出循环后得到的 row 值都是比真正的 row 值大2. 所以接下来代码 row -= 2 还原 n 值。这道题的思路就是要计算出最大的沙漏形状,每一行先输出空格,接着输出字符。

m0_74748762的博客 4421

Halcon —— 图像像素类型与转换

图像类型 就目前工业领域主流的图像处理工具halcon来讲,有以下几张图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。 ‘byte’ 每像素1字节,无符号 值范围: (0到255) ‘int1’ 每像素1字节,有符号 值范围: (-128到127) ‘

baidu_35536188的博客 1万+

Logisim实战:手把手教你搭建GB2312汉字字库(附完整电路图)

本文提供了一份详尽的Logisim实战指南,手把手教你如何利用存储芯片,通过位扩展和字扩展技术,构建一个完整的GB2312汉字字库。文章深入浅出地讲解了从编码原理、系统架构设计到具体电路实现与调试的全过程,是学习计算机组成原理和数字电路设计的绝佳实践项目。

k6l7m8n9的博客 808

【PTA】打印沙漏(C语言)

1.首先将沙漏分为上半(包括中心点)和下半(不包括中心点),对应总层数,上半:layer,下半:layer-1; 2.每层的数量为:layer*2-1,可以计算出上半的总数和下半的总数sum; 3.第一个for循环的i总会使得i最终超过最大层数,所以再后边再设置一个for循环j限制为最大值为i-1,此时计算的sum将会为真正的上半个沙漏需要的sign,将sum*2-1得到整个沙漏需要的sign数量.此时的j-1=layer.

Bai_RonGsen的博客 2269

Zabbix 7.0 从入门到精通部署手册

zabbix 入门到精通

weixin_43806846的博客 1028

c语言打印星号沙漏详解,【PTA】打印沙漏

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印*****************所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)...

weixin_39582480的博客 1929

模拟IC设计笔记:拆解一个经典的时钟占空比校正(DCC)电路模块,从理论到SPICE仿真

本文深入解析了时钟占空比校正(DCC)电路在模拟IC设计中的关键作用,特别是在高速ADC应用中。通过晶体管级拆解,详细介绍了基于电荷泵和积分器的模拟反馈型DCC电路设计,包括占空比检测、误差放大与校正执行单元的实现。文章还提供了SPICE仿真验证方法,确保电路在100MHz时钟下的稳定性和性能。

weixin_33725722的博客 425

AutoSAR配置视频讲解:新建DaVinci工程

AutoSAR实验视频讲解:闪烁一颗LED实验【新建DaVinci工程】 上一篇 | 下一篇 | 总目录 实验架构图 视频本频放在了文末,下图描述了本次实验配置内容在AutoSAR架构中的位置,供大家参考 实验内容 本节课程讲解新建DaVinci工程,听上去新建工程很简单,但是还是需要很多的准备工作和细节。主要内容是新建工程和导入dbc文件和导入arxml文件的方法 主要步骤 新建DaVinci工程 导入.dbc通信矩阵文件 导入Mcal的arxml文件 实验视频2:Mcal配置 提示:版权所在,违

雪云飞星的博客 6275

PTA L1-002 打印沙漏(C语言版)

PTA L1-002 打印沙漏 C语言解题 原题链接https://pintia.cn/problem-sets/994805046380707840/problems/994805145370476544 L1-002 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏...

Faithfeng的博客 980

PCL RANSAC拟合分割多条直线【2026最新版】

使用RANSAC算法拟合分割多条直线,输出每一条直线的拟合参数到控制台,并保存直线点云到本地文件夹。博客长期更新,本文最新更新时间为:2026年5月24日。

点云侠的博客 7974

PTA--C语言--打印沙漏图形中的数学方法

打印沙漏图形中的数学方法 如何打印 n 行沙漏图形? 首先想到的是运用数学中的线性规划得到图形的可行域。 即{x<=y; 和 {x>=y; {x+y>=n; {x+y<=n; 此种方法简洁高效,并且不受n的奇偶性的影响。 代码如下: #include<stdio.h> int main(void) { in...

一只彩乌鸦 6167

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

沙漏字符代码c语言,C语言——打印沙漏问题(PTA习题)

所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。源代码:#includeint a,p;int m[40][40];void pr(int a){int i,j;for(i=0;i<=2*a;i++){for(j=...

weixin_35665984的博客 1532

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PTA 1027 打印沙漏(c语言)

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。 输出格式: 首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。 输

m0_50674480的博客 376

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C语言 pta 打印沙漏 递归

#include<stdio.h> void pr(int num1, int num2, char a); int main(void) { int num; char a; scanf("%d %c",&num, &a); int i; int idx = 0; int l = num; if (num >= 7){ idx ++; l -= 1; for(i = 1;l.

Konno__Yuuki的博客 998

沙漏字符代码c语言,PTA测试题- 打印沙漏(C语言)

题目:第一次写这种东西,感觉写的超级麻烦,原本想用二维数组建立坐标系来做,结果发现好像更麻烦。。上周用PHP做了一个,(传送门:https://www.mmuaa.com/post-25.html),两者思路有区别,PHP的那个对于输入"1 *"无法打印正确的结果(所以说有很多bug。。。)C代码:#include"stdio.h"intused(int);intline(int);void...

weixin_34183908的博客 949

PTA L1-002 打印沙漏 (20分)——C语言解析

传送门 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。 输出格式: 首先打印出由给定符号组成的最大的沙

student_hwj的博客 2148

PTA / 天梯/ 打印沙漏/c语言

稍微尝试了一下 主要思想:由于17组成5 3 1 3 5的沙漏,人为的添加1,使其成为上下对称,为5 3 1 1 3 5,对折成5 3 1,则知是1 3 5这样的等差数列,类似的,31组成 7 5 3 1 3 5 7也就为 7 5 3 1。 #include&lt;stdio.h&gt; #include&lt;math.h&gt; main(){     int getnumber1,ge...

qq_39658933的博客 616

PTA 1027 打印沙漏 (c语言+分析+思路)

1027 打印沙漏 (20 分) 分析:这道题虽然只有20分,但其复杂程度不亚于25的题目。其中有个坑点就是只有左边有空格,右边不能打印空格,打印会有一个测试点过不了。 思路:首先利用数学等差数列前n项和确定要打印的行数,然后要知道每行的空格的规律(0,1,2,3…)和每行打印的字符的规律; 然后我把这个沙漏分成两个部分来打印 我是先输出了上面的一个完整的三角形,然后又输出了有缺口的下边的三角形...

qq_44622401的博客 2895
上一篇: (C语言)不变初心数 (15 分)---pta
下一篇: (C语言)抓老鼠啊~亏了还是赚了?--pta
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个正在爬的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值