zoukankan      html  css  js  c++  java
  • 漏斗

    include<stdio.h>

    int main()
    {
    int N,b=1,remainder,count=0,count_1=0,ce=0;
    double hang=1,lie;
    int a,c,point,point_1;
    char op;

    scanf("%d %c",&N,&op); 
    for(;N-b>0;)
    {
        hang+=2;
        b=b+hang*2;
        count++;
    }
    if(N==b)
        remainder=0;
    else
    {
        b=b-hang*2;
        count--;
        hang-=2;
        remainder=N-b;
    }
    lie=hang;
    point=hang-count;
    point_1=point-1;
    for(a=1;a<=hang/2+0.5;a++)
    {
        for(c=1;c<=lie;c++)
        {
            if(a==1)
                printf("%c",op);
            if(a>1&&c<=point-point_1||c>point+point_1)
                {
                    printf(" ");
                    ce++;
                }
            if (a>1&&c>point-point_1&&c<point+point_1)
                printf("%c",op);
            if(c==lie)
                printf("
    ");
        }
        count_1++;
        lie-=1;
        if(a>=2)
            point_1-=1;
    }
    a=a-2;
    point_1+=2;
    lie=lie+count_1;
    for(;a>=1;a--)
    {
        for(c=1;c<=lie;c++)
        {
            if(a==1)
                printf("%c",op);
            if(a>1&&c<=point-point_1)
                {
                printf(" ");
                ce++;
                }
            if (a>1&&c>point-point_1&&c<point+point_1)
                printf("%c",op);
            if(c==lie)
                printf("
    ");
            }
    if(a>=2)
        point_1+=1;
    }
    printf("%d
    ",remainder);
    
    return 0;
    

    }
    二,设计思路:
    一种思路就是将代码分为两大部分,第一大部分主要用来算出参数N最少需要多少数目的符号,多少行和剩余多少符号没用,其数目会分别储存至参数b,hang和remainder中,这部分还有其他的一些参数如point,point_1等,这些主要用于第二大部分控制符号输出规律。第二大部分用来输出图像,这部分代码又可以分成两小部分我将其分为A,B两部分。A部分用来输出漏斗的上半部分,B部分用来输出漏斗的下半部分,然后都用for语句嵌套循环,外循环控制行,内循环控制列。A,B部分的内循环中用在if语句中所加入的算式来判断该行的每一列应该输出符号还是空格。当图形输出完毕后,在图形下方输出参数remainder的值即剩余符号数即可。
    有一个注意的小细节,就是题中给出的输出案例,图形只有左侧存在空格,而右侧则不存在空格,即在输出完每行需要输出的符号后就跳转到下一行继续输出,且每一行所需要输出的符号数是呈一定规律变化的。因此需要添加相应的参数来控制符号输出的规律,我所添加的相应参数就是point和point_1。

  • 相关阅读:
    linux下内存检测工具valgrind
    c语言可变参数与宏定义
    rabbitmq学习之路-rabbitmqctl
    linux/mac下命令行rm回收站--rmtrash
    Python之路【第十一篇】: 进程与线程理论篇
    Python之路【第十一篇】: 进程与线程
    Git常用命令
    Python之路【第十篇】: python基础之socket编程
    Python之路【第九篇】:面向对象进阶
    Python之路【第八篇】:面向对象的程序设计
  • 原文地址:https://www.cnblogs.com/luoyuliang/p/10414590.html
Copyright © 2011-2022 走看看