• 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("
    ");
    
        }
        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("
    ");
        }
        printf("%d
    ",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)本题调试过程碰到问题及解决办法

    问题:开始的时候没有找到漏斗数量的规律。
    解决办法:在网上查找资料,调试。
    4)运行结果截图

  • 相关阅读:
    泛型
    多播委托
    匿名方法
    委托
    正则表达式
    压缩和解压,文件读取练习
    Vue样式绑定
    Vue跑马灯
    Vue中的v-for遍历循环
    Vue框架
  • 原文地址:https://www.cnblogs.com/jk-liulei/p/10401353.html
Copyright © 2020-2023  润新知