• PTA编程总结1:打印沙漏


    ---恢复内容开始---

    7-1 打印沙漏 (20 分)

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

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    19 *
    

    输出样例:

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

    1).实验代码

    #include <stdio.h>

    int main ()

    {

    int n; char c;

    printf("输入数字和*用空格隔开比如:17 *:");

    scanf("%d %c",&n, &c);

    int y=0, N=-1, M=0, x=1, a, i, b, f, sum=0; //下面的循环,判断加了几次,得出第一行有几个字符

    while(1)

    {

    N=N+2; M++; y=y+N;

    if(n-2*y+1==0) //刚好相等,跳出循环

    {

    break;

    }

    if(n-2*y+1<0)//大于要输出的数增减2,得到开始输入的数,跳出循环

    {

    N=N-2; M=M-1;//次数逐次减1

    break;

    }

    }

    for(i=1; i<=M; i++)//上部分的循环,每次减2

    {

    for(a=0; a<N; a++)//打印循环

    {

    printf("%c", c);

    }

    N=N-2;//打印的字符减掉2个

    printf(" ");//按要求换行 //打印字符前面的空格

    if(i!=M)//当行数不等于个数的时候打印空格

    {

    for(b=1; b<=x; b++)

    {    

    printf(" ");  

      }    

    x=x+1;

    }

    sum=sum+a;//计算用掉了几个字符 } //打印下面一半的字符 ,每次加2

    i=0,a=0;

    for(i=1;i<=M-1; i++)

    {   

    for(a=1; a<=x-2; a++)

    {

    printf(" ");

    }

    x=x-1 ;

     for(f=0; f<N+4; f++)

    {

    printf("%c", c);

    }

    N=N+2;

    printf(" ");

    sum=sum+f;

    }

    printf ("剩余*个数:%d",n-sum);

    }

    }

    2)设计思路

    第一步:定义字符和整数
    第二步:利用while循环得出第一行和最后一行的字符个数,得出总共有几行
    第三步:利用for循环逐步递减打印上部分字符,换行
    第四步:利用if循环打印空格
    第五步:利用for循环逐步递加打印下部分字符,打印空格,打印字符,换行
    第六步:计算剩余字符个数

    3)本题调试过程碰到问题及解决办法

    问题:看不懂题,数学有点差

    解决方法:百度,请教他人。

    4).运行结果截图

    ---恢复内容结束---

  • 相关阅读:
    Gym 100553B Burrito King 无脑背包
    BestCoder Round #85 A B C
    poj 1687 Buggy Sat 简单计算几何
    HDU 1863 Kruskal求最小生成树
    记2016商大ACM省赛
    COMP9517 Week7 Tracking
    COMP9517 week7 Motion
    COMP9313 week7b Spark SQL
    COMP9313 Week 7 Product Quantization and K-Means Clustering
    COMP9517 lab3 image segementation
  • 原文地址:https://www.cnblogs.com/qzy7/p/10414634.html
Copyright © 2020-2023  润新知