• PTA第一个编程题总结


    7-1 打印沙漏 (20 分)

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

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    19 *
    

    输出样例:

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

    实验代码:

    #include<stdio.h>
    int main()
    {
         int a,b,c,n,i,j,m,k,N,h,e;
         char g;
         b=h=1;
         scanf("%d %c",&N,&g);
         if(N==1){
              printf("%c ",g);
              printf("%d",h-1);
              return 0;
         }
         for(i=c=0;h<=N;){
              i++; 
              b=b+2;
              c=c+b;
              h=2*c+1;
         }
         j=i;
         for(i;i>0;i--){
              n=1+2*(i-1);
              m=(b-n-2)/2;
              e=m;
              if(m!=0){
                   for(m;m>0;m--){
                        printf(" ");
                   }
              }
              for(n;n>=0;n--){
                   if(n==0){
                        printf(" ");
                   }else{
                        printf("%c",g);
                   }
              }
         }
         k=j-1;     

         for(k;k>0;k--){

              i++;
              n=1+2*i;
              m=(b-n-2)/2;
              e=m;
              if(m){
                   for(m;m>0;m--){
                        printf(" ");
                   }
              }
              for(n;n>=0;n--){
                   if(n==0){
                        printf(" ");
                   }else{
                        printf("%c",g);
                        }
                   }
              }
              a=N-h+4*j+2;
              printf("%d ",a);
              return 0;
         }

    设计思路:

            先用for语句判断漏斗的总行数,再运用总行数的

    一半先打出漏斗的上半部分,再同理求漏斗的下半部分,

    特殊条件是N小于7的时候没有漏斗,只有一个字符,从

    漏斗的中心往上和往下都是等差数列的关系。

    错误代码的结果:忘记截图了,但是比如当N为1的时候需要特殊考虑。

    运行结果:

  • 相关阅读:
    OpenSSL EVP_Digest系列函数的一个样例
    简单的函数指针使用
    写入简单的日志log
    C实现日志等级控制
    散列表
    数据结构-链表
    关于线程的几个函数
    MySQL什么时候会使用内部临时表?
    linux如何处理多连接请求?
    Centos下搭建nginx反向代理
  • 原文地址:https://www.cnblogs.com/dapeng1234/p/10414316.html
Copyright © 2020-2023  润新知