1027 打印沙漏(PTA)

思路

  1. 利用等差变形公式算出最大的层数,继而可以算出最多需要多少个字符
  2. 先输出上部分,依次输出,利用flag++表示空格数依次增加
  3. 接着输出下部分,利用flag--表示空格依次减少
  4. 注意i的变化,每次加减2
  5. 考虑n<7的情况,不然会出错,大家可以把小于7的判断代码删掉,看看会出现什么情况
  6. 此代码在PTA上AC
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>

using namespace std;


int main()
{
    int n;
    char str;
    scanf("%d %c",&n,&str);
    int len=sqrt((n+1)/2);
    int sum=2*len*len-1;
    int flag=0;
    //上半部分 
    
    if(n<7)
    {
        printf("%c\n%d",str,n-1);
        return 0;
    }
     
    for(int i=2*len-1;i>0;i-=2)//i的变化,是每次减2
    {
        
        //输出空格
        for(int l=0;l<flag;l++)
        {
            printf(" ");
        }
        flag++;
        
        
        //输出字符 
        for(int k=i;k>0;k--)
        {
            printf("%c",str);    
        }
        printf("\n");
    }
    
    
    //下半部分 
    flag-=2;//想想为什么要减2
    
    for(int i=3;i<=2*len-1;i+=2)
    {
        //输出空格
        for(int l=0;l<flag;l++)
        {
            printf(" ");
        }
        flag--;
        
        //输出字符 
        for(int k=i;k>0;k--)
        {
            printf("%c",str);    
        }
        if(i!=2*len-1)
            printf("\n");
        else{
            printf("\n%d",n-sum);
        }
    }
    
    
    
    
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ----------------------- 页面 1----------------------- 2013 ...
    长春傳齐3阅读 10,562评论 0 1
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 5,010评论 0 1
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,159评论 0 3
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,995评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,771评论 0 4

友情链接更多精彩内容