题目一:7-3 编程打印空心字符菱形

1.提交列表

2.设计思路:

  • 1.定义整型变量循环控制变量i,j,k,x,y,z,e及菱形的高度height;
  • 2.定义字符型变量letter;
  • 3.输入字符型变量letter和高度height;.i=2;
  • 4如果i<=(number+1)/2,则当i=2时,j=1,输出空格,重复本步骤,直到j<=number/2,退出 J 循环,输出letter,换行;
  • 5.k=1,如果i!=(number+1)/2,则输出空格,重复本步骤,直到k<=(number+1)/2-i,退出K循环,输出letter;
  • 6.x=2*i-3,输出空格,重复本步骤,直到x>0,退出X循环,输出letter,换行;
  • 7.重复步骤4.5.6.直到i>(number+1)/2;
  • 8.如果i>(number+1)/2,令y=i-(number+1)/2,如果i!=number,输出空格,直到y>0,退出Y循环;
  • 9.如果i!=number,输出letter;;
  • 10.令z=2number-2i-1,如果i!=number,输出空格,直到z>0,退出Z循环;
  • 11.如果i!=number,输出letter并换行;
  • 12.如果i==number,令e=1,输出空格,直到e<=number/2,退出E循环,输出letter;
  • 13.重复步骤8.9.10.11.12.,直到i<=number,退出I循环;

    3.本题调试过程碰到问题及解决办法:

  • 1.这题是调试时间最长的题,一开始看题时没有思路,觉得不论怎么做都很复杂,后来百度了一下,发现一行一行处理可以简化步骤,然后将空格也看成字符,这样一来才有了思路,可是做到后面发现要找到行数和字符个数的关联和规律也是难题,通过不断调试不断修正,费了不少时间才使得菱形得以成型,不过要让字母按一定顺序对称排列又是一大问题,百度后发现可以让字母加减,如letter++(letter--)来做,但是并不理解字母加减是叠加还是只在原来字母的基础上加减,直到听老师讲了之后才明白是在原字母的基础上加减;
  • 2.老师说以后像这样较为复杂的题目都应该写伪代码来帮助理清思路,才不会在调试时出现这样那样的问题;
  • 3.需要经过运算且在代码中反复出现的式子可将其定义成一个变量;

题目二:7-4 换硬币:

1.提交列表:

设计思路:

  • 1.定义累加变量count,个数总和变量total,循环控制变量i,j,k,硬币总值n,每种硬币对应总值;
  • 2.输入n,
  • 3.5分钱:k=n,k--;
  • 4.2分钱:j=n,j--;
  • 5.1分钱:i=n,i--;
  • 6.重复步骤3.4.5.,直到k>0;j>0;i>0;
    1. 令y=5k; m=1i;x=2*j;
  • 8.如果m+x+y==n&&k!=0&&i!=0&&j!=0,count=count+1,total=k+i+j;
  • 9.输出fen5:%d, fen2:%d, fen1:%d, total:%d\n;
  • 10.输出count的值;

    3.本题调试过程碰到问题及解决办法:

  • 1.一开始把条件语句设置为k!=n;j!=n;i!=n,后来经过调试发现错误,改成k!=0;j!=0;i!=0;



  • 2.把k--,j--,i--写成k++,j++,i++,百思不得其解,后来在同学的提醒下该过来,仔细读题后发现“要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法”,顿恍然悟;

    题目三:7-7 歌唱比赛评分系统:

    1.提交列表:

2.设计思路:

  • 1.定义整型变量最大值max,最小值mini,循环控制变量i,k,评委个数n;操作次数repeat,评分总和sum及浮点型变量score;
  • 2.输入repeat;
  • 3.k=1;k++;
  • 4.输入n;
  • 5.sum=0;
  • 6.i=1;i++;
  • 7.如果i==1,max=score;mini=score;
  • 8.如果max<score,max=score;
  • 9.如果mini>score,mini=score;
    1. sum=score+sum;
  • 11.如果i==n,则输出score:%.2f\n",(sum-max-mini)*1.0/(n-2);
  • 12.重复步骤3--11.直到k>repeat,i>n,退出循环;

    3.本题调试过程碰到问题及解决办法:

  • 1.一开始把浮点型变量score对应的格式控制字符串写成%d,答案无法出来;

  • 2.把scanf("%lf",&score)放在I的for循环语句外面,使成绩只能输入一次,将其移入for循环语句就行;
  • 3.继步骤2.后,max=score和mini=score也要随着改动而改动,它们一定得放置在scanf语句之后,但如果放入循环则会对后来的max和mini值产生影响,后来用了一个if语句if(i==1)将其放入循环,解决了问题;
  • 4.格式错误是因为把代码从DAVC上复制过来时少复制了花括号;

    二、同学代码结对互评:

    1.互评同学名称

    李琴

    2.我的代码、互评同学代码截图

  • 1.同学的代码

  • 2.我的代码

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

  • 1.同学的grade和score其实可以合并成一个数,变量尽量减少;
  • 2.同学代码里的max=grade和min=max应当只在第一次循环即i=1的时候赋值,因此应当在其前加上条件语句if(i==1){};
  • 3.if() else{}语句在这里不适用,应当用两个if语句如if(max
  • 4.第11行的sum等于0就行了;
  • 5.同学做得比我好的地方是没有犯定义和格式类型不对应的错误,很多基本功也很扎实,如很好地实现了一次输入多个数值;而且加上了if(n>3&&n<10)这样的限制条件,考虑得很周到;

三、本周学习总结:

1.你学会了什么?

  • 1.学会了调用函数,函数首部由函数类型,函数名,形式参数表组成,最后要加分号作为结尾;
  • 2.形参的值改变后不影响实参赋值;
  • 3.局部变量的return语句只能返还一个值;
  • 4.做了菱形的题目后,对代码的运行逻辑和原理有了更深的了解,尤其是在和数学的结合方面,假如没有用数学方法查找规律便很难做出来;

    对逻辑思维也是一大挑战,究竟怎么做才能简化问题?答案是一行一行去完成;
  • 5.学会了同时输入多个数值的做法,就是把scanf语句放入循环中;
  • 6.调试代码更加得心应手,知道了一般应该把断点设置在scanf后面,假如循环代码在某个地方卡住,要看是否是\n在捣乱,有时换行符也起着关键作用,使用不当会让整段代码无法运行;
  • 7.学会了比较最大值和最小值,基本思路是先将初值赋给max和mini,然后用if语句判断,根据每次判断结果来决定最大最小值是否更换;
  • 8.学会了i++和i--的区别,当循环的执行与i的大小无关,而与其最终运行次数有关时,两个无区别,只有当与i的值有关时,才要加以区分,i++是从小到大的值,i--是从大到小值;
  • 9.九九口诀表看似简单,但是要把代码写出并不容易,要用嵌套循环,且左边的值从左至右是变化的,所以是内循环,右边的则是外循环,格式控制符向左对齐用%-4表示,且内循环执行后要换行;
  • 10.认识了缩进符%-4d,它表示要向左对齐,然后包括字符在内一共占用4个格子,后面多出来的用空格代替;
  • 11.学会了字母的递增递减可以用letter+1(或者2,3)和letter-1(或2,3);

    2.本周的内容,你还不会什么?

  • 1.实参与形参如何占用空间;
  • 2.为什么有的代码被调用的函数中有那么多return,有时不知道要到底要return哪一个;
  • 3.有时不懂得如何取合适的变量名;

    四、截图本周题目集的PTA最后排名。

C语言嵌套循环的更多相关文章

  1. C语言嵌套循环作业

    一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2. 设计思路 1.定义fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量,co ...

  2. 网络1712--c语言嵌套循环作业总结

    1.助教有话说 首先,每周一篇的博客作业是很有必要的:编程的过程不仅仅是会敲几行代码.能够通过PTA就大吉大利了,你更应该做到的是梳理代码思路,通过与他人代码思路的比对,取其精华,进而不断进阶,才能逐 ...

  3. C语言--嵌套循环

    一.PTA实验作业 题目1 水果价格 1.本题PTA提交列表 2.设计思路 第一步:定义变量number,表示输入的编号 第二步:定义变量i,用来记录编号数目 第三步:输出菜单:[1] apple [ ...

  4. Go语言循环判断的使用~

    Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...

  5. GO语言学习(十一)Go 语言循环语句

    Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 语法 Go语言的For循环有3中形式,只有其中的一种 ...

  6. C语言的傻瓜式随笔(一):嵌套循环-程序结构

    循环语句的嵌套 一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环.常用的循环嵌套是二重循环,外层循环称为外循环,内层循环称为内循环. ---------不知道哪来的基础概念 这是本宝宝的第 ...

  7. C语言第四次博客作业--嵌套循环

    一.PTA实验作业 题目1:编程打印空心字符菱形 1. 本题PTA提交列表 2. 设计思路(流程图) 3.本题调试过程碰到问题及解决办法 思考过程:将问题拆解为菱形问题和字母变化问题两部分 1> ...

  8. C语言博客作业--嵌套循环

    一.PTA实验作业 题目1:7-4 换硬币 2 .设计思路 第一步:定义3个整型变量i,j,k用于循环,定义3个整型变量x,count,total分别用于储存零钱数额,换法个数,硬币数量: 第二步:输 ...

  9. C语言退出多层嵌套循环技巧

    由于break语句只能影响它的最内层循环,要想立即从深层嵌套循环中退出,有哪些方法呢? 1.使用goto语句: while(condition1) { while(condition2) { whil ...

随机推荐

  1. SPOJ D-QUERY

    以前主席树学  kungbin 最近看了网上的版本 终于发现和我以前学的线段树差不多的了 希望最近能够加强 #include<bits/stdc++.h> using namespace ...

  2. 版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类

    版本控制工具 版本控制VCS(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以 ...

  3. Supermarket POJ - 1456

    A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold ...

  4. freemarker之include指令(九)

    freemarker之include指令 1.父页面ftl <html> <head> <meta http-equiv="content-type" ...

  5. Flutter 初尝:从 Java 无缝过渡

    准备阶段 下载 Flutter SDK 新建 Flutter 文件夹,克隆 Flutter SDK: git clone -b beta https://github.com/flutter/flut ...

  6. java将字符串转换为指定的时间格式

    *String dateString = "18:31:43";    try {     Date date = new SimpleDateFormat("HH:mm ...

  7. Vue安装依赖npm install时报错问题解决方法

    1.vue的安装依赖于node.js,要确保你的计算机上已安装过node.js.    可进入cmd编辑器,输入命令 node -v进行查看.出现版本信息即成功!没有则从浏览器上面下载安装即可,没有安 ...

  8. mycat操作MySQL第一篇:全局表

    1.安装mycat,点击bin下面startup_nowrap.bat启动 2.客户端连接mycat:server.xml里面的 <!--连接mycat用户名和密码.数据库--> < ...

  9. c# redis 操作类库推荐:StackExchange.Redis.Extensions

    StackExchange是一个优秀的c# redis客户端,但是存在操作略为繁琐的弊端,为了简化操作,使用 StackExchange.Redis.Extensions成为了一个非常值得推荐的选择. ...

  10. mysql__存储过程

    1.存储过程相当于我们学的各种高级语言的函数,既然是函数就可能有参数,先介绍参数类型: 存储过程主要包含三种参数类型,注意我说的不是数据类型(INT.VARCHAR) 第一种:IN输入参数:表示这种参 ...