2018秋寒假作业4—PTA编程总结1

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



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

     #include<stdio.h>
     int main(void)
     {
         int i,N,sum,high,r,d,k;
         char c;
         scanf("%d %c",&N,&c);
         sum=0;
         for(i=1;sum<=N;i++)
         {
             sum=2*i*i-1;
     }
     high=i-2;
     sum=2*high*high-1;
     r=N-sum;
     for(d=high;d>0;d--)
     {
         if(d<high)
             {
                 for(k=high-d;k>0;k--)
                     printf(" ");
             }
         for(i=2*d-1;i>0;i--)
             printf("%c",c);
             printf("\n");
    
     }
     for(d=2;d<=high;d++)
     {
             if(d<high)
             {
                 for(k=high-d;k>0;k--)
                     printf(" ");
             }
         for(i=2*d-1;i>0;i--)
             printf("%c",c);
         printf("\n");
     }
     printf("%d\n",r);

    }

2)设计思路
一:首先观察组成沙漏的数量,可以自己再纸上画一下依次为1、7、31,会发现组成沙漏的数目满足2ii-1,而沙漏的每一层与高满足2d-1。
二:定义相关整型变量和字符型变量,输入数字和字符。
三:sun赋值为零,进入循环,i从1开始,如果sun小于输入的数,运行sum=2
ii-1直到循环结束,此时sun的值刚好能组成一个沙漏,r=N-sum,r储存多余的字符,沙漏的高为i-2。
四:开始打印上部分,把高的值赋给d,进入循环,根据2
d-1打印每层的字符数,然后换行,注意每打印下一行就要多打印出一个空格。
五:打印下部分,下部分的高为high-1,通过循环打印下部分,方法与打印上部分相同。
六:打印完后,输出多余的字符数,结束。
3)本题调试过程碰到问题及解决办法
1582044-20190219152433186-2016156805.png
问题:开始的时候没有找到漏斗数量的规律。
解决办法:在网上查找资料,调试。
4)运行结果截图
1582044-20190219152710572-464215181.png

转载于:https://www.cnblogs.com/jk-liulei/p/10401353.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值