zoukankan      html  css  js  c++  java
  • 2019年寒假作业1

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





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

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

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

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

    输入样例:
    19 *
    输出样例:





    2

    1实验代码#include <stdio.h>
    int main()
    {
    int n;
    char c;
    scanf("%d %c",&n,&c);
    int sum=1;//沙漏需要的字符个数
    int i=1;//层数
    while(sum<=n)
    {
    sum+=2(2(i+1)-1);//2n-1是一层的个数,乘以2代表两层一共需要的
    if(sum=n)
    i++;
    }
    int j,k;
    for(j=0;j<i;j++)//打印上半部分
    {
    for(k=0;k<j;k++)
    printf(" ");
    for(k=0;k<2(i-j)-1;k++)
    {
    printf("%c",c);
    }//输出

    printf(" ");
    }
    for(j=2;j<=i;j++)
    {
    for(k=0;k<i-j;k++)
    printf(" ");
    for(k=0;k<2j-1;k++)
    {
    printf("%c",c);
    }
    printf(" ");
    }
    printf("%d",n-(sum-2
    (2*(i+1)-1)));

    }

    2)设计思路
    第一步: 定义变量n,符号型变量op,scanf语句输入变量值;
    第二步:定义变量a,i,a表示所需要的符号数的最大值,将沙漏以中心为界分成两部分,i表示半个三角的行数,用while循环计算共需要多少个符号,及所得到的行数,以中心为起点,每增加一行符号增加2个;
    第三步:定义变量j,h,j表示行,先打印上半部分,每行的空格数为行数减1,j的初始值是1,则每行打印的符号数为2(i-j)+1个,打印完一行就换行。
    第四步:打印下半部分,打印上部分时已经打印了中心,则下部分从j=2开始,打印空格,打印符号,每行打印2*j-1个,打印完就换行;
    第五步:输出剩余符号数。
    3)本题调试过程碰到的问题及其解决办法
    1.不知如何在符号两边都打印空格;
    解决方案:只需打印符号左边的空格,右边直接换行。
    2.最后输出剩余符号数错误;
    解决方案:a在结束while循环后多加了个2(2(i+1)-1),a需减去1个2(2(i+1)-1),n再减a。
    错误截图:
    4.运行截图

  • 相关阅读:
    svn中出现各种感叹号说明
    Oracle“记录被另一个用户锁住” 无法更新删除的解决办法
    C/C++中extern关键字详解
    Oracle创建视图view权限不足问题剖析
    和菜鸟一起学linux之常见错误的解决和常用命令
    万能数据库查询分析器使用技巧之(十一)
    orale中如何获取当前月份?
    “刘易斯拐点”后劳动力市场中的信任与有效性
    “微”力无穷:企业微信营销全攻略
    2小时精通金数据
  • 原文地址:https://www.cnblogs.com/xudo/p/10410143.html
Copyright © 2011-2022 走看看