美文网首页PAT
1027.打印沙漏

1027.打印沙漏

作者: yzbkaka | 来源:发表于2018-08-03 16:07 被阅读8次

题目描述

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


如图

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

输出描述

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

输入描述

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

输出例子

19 *

输入例子

正确输出

我的代码

#include<stdio.h>
#include<math.h>
int main(){
    int a,n,i,j,t;
    char b;
    scanf("%d %c",&a,&b);
    n=sqrt((a+1)/2);
    
    for(i=1;i<=2*n-1;i++){  //先输出第一行 
        printf("%c",b);
    }
    printf("\n");
    
    for(i=n-1;i>=1;i--){
        for(j=1;j<=(n-i);j++){  //按照规律输出前面的空格 
            printf(" ");
        }
        for(j=1;j<=2*i-1;j++){  //输出符号 
            printf("%c",b);
        }
        for(j=1;j<=(n-i);j++){  //按照规律输出后面的空格 
            printf(" ");
        }
        printf("\n");   
    } 
    
    for(i=2 ;i<=n;i++){        //反向输出 
        for(j=1;j<=(n-i);j++){
            printf(" ");
        }
        for(j=1;j<=2*i-1;j++){
            printf("%c",b);
        }
        for(j=1;j<=(n-i);j++){
            printf(" ");
        }
        printf("\n");   
    }
    printf("%d",a-(2*n*n-1));   //输出多余的符号数 
    return 0;
} 

我的分析

其实这道题算是比较基础的一道题,主要是要仔细的观察规律,然后逐个进行输出就可以了。

收获

关于求根号下的运算,如果对答案定义的是整型,则对答案存储的也是整型,系统会自动的把小数后面给省略。

相关文章

  • 1027.打印沙漏

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

  • 【PAT-乙级-C++】1027. 打印沙漏(20)

    1027. 打印沙漏(20) 时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Stan...

  • PAT-B 1027. 打印沙漏(20)

    传送门 https://www.patest.cn/contests/pat-b-practise/1027 题目...

  • PAT Basic 1027. 打印沙漏(20)(C语言实现)

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容。...

  • 打印沙漏

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

  • 打印沙漏

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

  • 1027. 方格取数

    1027. 方格取数

  • pat1027

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

  • 1027 打印沙漏

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

  • 1027 打印沙漏

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

网友评论

    本文标题:1027.打印沙漏

    本文链接:https://www.haomeiwen.com/subject/bvxuvftx.html