• 打印沙漏


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

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    19 *

    输出样例:

    复制代码
    *****
     ***
      *
     ***
    *****
    

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

    1)实验代码

    ```

     2 #include<stdio.h>

    3 #include<math.h>
     4 int main(){
     5     int i,a,k,n,g=1,t;
     6     char ch=*;
     7    scanf("%d %c",&n,&ch);
     8     while(2*pow(i,2)-1<=n){
     9         g++;
     10     }
    11     g--;
    12     k=g;
    13    for(i=1;i<=g;i++){
    14        for(a=1;a<i;a++){
    15            printf(" ");
    16         }
    17        for(a=1;a<=2*g-1;a++){
    18             printf("%c",ch);
    19        }
    20        g--;
    21         printf(" ");
    22     }
    23    t=k;
    24    g=2;
    25     for(i=2;i<=k;i++){
    26         for(a=1;a<=t-i;a++){
    27            printf(" ");
    28   }
    29        for(j=2*g-1;a>0;a--){
    30             printf("%c",ch);
    31         }
    32         printf(" ");
    33        g++;
    34    }
    35    printf("%d ",n-(2*pow(t,2)-1));
    36     return 0;
    37 }

    ```

    (2)解题思路:1.把沙漏分成上半三角和下半三角来看。

    2.符号*的总个数与第一行的个数和总行数,总列数有关(第一行个数=总行数=总列数)。每一行*个数减二等于下一行*个数,直到中间只有一个*。

    思维导图:

    https://www.edrawsoft.cn/viewer/public/s/b5e79973047842

    是以中心的*划分两个部分,是一个等差数列,且规律是从中心点2乘以x减去1个*。先确定是多少行,并且上下对称所以需要同时增加。

    要注意每一行前面要用空格补位置,但是后面没有空格。

    (3)解题过程中存在的问题,以及如何得到解决的:之前在沙漏的右边以为有空格,一直答案错误,经过删去有关右边输出空格的代码后问题解决

    (4)运行截图

  • 相关阅读:
    php pcntl 多进程学习
    php socket 学习
    linux 常用alias
    php 设置一个函数的最大运行时间
    QTableView 一列添加两个按钮
    翻译qmake文档 目录
    翻译qmake文档(四) Building Common Project Types
    算法时间复杂度
    翻译qmake文档(三) Creating Project Files
    Caliburn.Micro学习笔记目录
  • 原文地址:https://www.cnblogs.com/lxzlyf2022/p/10369520.html
Copyright © 2020-2023  润新知