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

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



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

    include<stdio.h>
    int main(){

    int number,temp=7,a=3;
    char ch;
    int y1,y2;
    scanf("%d %c",&number,&ch);
    do{
    if(number>=temp){
    if(number<(temp+2(a+2))){
    break;
    }
    else if(number(temp+2(a+2))){
    temp=(temp+2(a+2));
    a=a+2;
    break;
    }
    else{
    temp=(temp+2(a+2));
    a=a+2;
    }
    }
    }while(1);
    for(int i=0;i<a;i++){
    y1=i;
    if(y1>a/2){
    y1=a-y1-1;
    }
    for(int j=0;j<a;j++){
    y2=j;
    if(y2>a/2){
    y2=a-y2-1;
    }
    if(y2<y1){
    if(j>a/2){
    printf(" ");
    break;
    }
    else{
    printf(" ");
    }
    }
    else{
    printf("%c",ch);
    }
    if(j
    a-1){
    printf(" ");
    }
    }
    }
    printf("%d ",number-temp);
    }
    2、 设计思路。
    第一步:编译预处理命令,输入主函数。
    第二步:定义整型函数变量,并赋值number,temp=7,temp=7是打印沙漏图形至少所需的符号量,a=3是打印沙漏的最少行数,a=3,y1,y2。
    第三步:定义字符型函数变量,ch。
    第四步:调用scanf语句接收变量number和ch。
    第五步:输入do-while语句,在其中嵌套if语句判断number>=temp?判断数字number是否可以打印沙漏,再利用if语句判断给定的数字number是否可以打印下一个更大的沙漏及number<(temp+2(a+2))?,再输入break语句,如果不符合条件,则跳出循环打印沙漏。
    第六步:如果符合条件,则进入下步循环,输入else-if语句判断numbertemp+2(a+2)?如果是则将行数改为那个更大沙漏图形的行数,跳出循环,再根据temp=temp+2(a+2)
    a=a+2得出那个更大的行数。
    第七步:如果给出的数比下个更大的沙漏图形所需的符号数还要大,则将其的行数变为下个沙漏图形的行数,再进行下次循环,输入else语句,再其中输入temp=(temp+2(a+2))
    a=a+2。
    第八步:输入for(int i=0;i<a;i++)根据这条语句使行数逐渐增加,使y1=i。
    第九步:输入if(y1>a/2),y1=a-y1-1。如果行数大于a/2(中心行),那么将比较大的行转化为与此行一样的更小的行。
    第十步:输入for(int j=0;j<a;j++),y2=j, 如果 列数大于a/2(中心列),那么将比较大的列转化为与此列一样的更小的列。
    第十一步:输入if(y2>y1),如果符合条件,再进入if(j>a/2)语句,如果列数大于中心列则跳出行,换行,如果小于a/2中心列则输出空格。
    第十二步:如果转换为列数y2>=y1,则输出字符。
    第十三步:输入if(j
    a-1), 进行末尾列换行,最后输出多余符号,即printf(“%d ”,number-temp)。
    3、 本题调试过程中遇到的问题及解决办法。
    1、 为什么引用y1,y2?
    解决办法://在如下的代码中之所以引入y1,y2的原因是因为,将比较大的行转化为比较小行的操作中需要用到,因为不能直接对代表行数的i,j进行直接的操作,假使这样做会是使源代码无限循环。

  • 相关阅读:
    java处理jqueryGantt甘特图数据的task.depends依赖规则方法
    中国行政区划表,包括34个省、直辖市的所有数据 mysql数据
    使用mybatis的resultMap进行复杂查询
    intel 酷睿core系列cpu的类型:U M H HQ MQ
    mybatis问题。foreach循环遍历数组报错情况,及其解决方法
    Android开发 DownloadManager详解
    Android开发 WorkManager详解
    Android开发 在不使用ItemTouchHelper的情况下实现ItemView的左右滑动
    AndroidStudio ViewBinding详解
    Android开发 滚轮View第三方框架
  • 原文地址:https://www.cnblogs.com/chenzg90826/p/10408477.html
Copyright © 2011-2022 走看看