• 7-1打印沙漏


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

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

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    19 *
    

    输出样例:

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

    实验代码

    #include <stdio.h>
    #include <math.h>
    int main()
    {
    int k=1;

    int s,n,b=1;

    int y,m,f,l,a;

    char c;
    scanf("%d %c",&s,&c);
    while(2*b-1<=s){
    k=k+2;
    b=b+k;
    }
    k=2-k;
    n=2-k;
    while(k<fabs(n)){
    for(m=1;m<(fabs(n)-fabs(i))/2;m++){
        printf(" ");
    }
    for(f=1;f<=fabs(i);f++) {
        printf("%c",c);
    }
        printf(" ");
    if(k!=-1){
    k=k+2;
    }
    else{
    k=k+4;
    }
    }
    a=s-2*(b-fabs(k))+1;
         printf("%d",a);
    return 0;
    }

    设计思路

    第一步、一个没有返回值的函数shalou(int n,char c),在主函数中作为单独语句使用。
    第二步、定义该函数shalou(int n,char c):使用while语句来确定行数和最后一行有多少个符号
    第三步、对第二步进行详细的解释,有第一个for循环语句打印上半部,同时嵌套两个for循环,第一个用来输出字符,第二个输出空格,最后用计数器计算用了多少字符。
    第四步、第三步中第二个for循环来输出下半部,与上三步相同
    第五步、输出没有用到的字符数量
    此题借鉴于李代传代码。
  • 相关阅读:
    一个500强公司的数据化运营管理实践
    一个500强公司的数据化运营管理实践
    自动化生成 Openstack 新项目开发框架
    kibana 版本kibana-4.3.1 修改地图
    安装GeoIP数据库
    PLM系统与选择
    爬上喜马拉雅的喜悦——北漂18年(番外篇二)
    获取nginx ip地理信息
    数据接口示例
    elasticsearch 搜索不支持单词的部分进行匹配
  • 原文地址:https://www.cnblogs.com/songzhihaoT1/p/10452272.html
Copyright © 2020-2023  润新知