C语言嵌套循环
题目一: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;
- 令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;
- 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语言嵌套循环的更多相关文章
- C语言嵌套循环作业
一.PTA实验作业 题目1:7-4 换硬币 1. 本题PTA提交列表 2. 设计思路 1.定义fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量,co ...
- 网络1712--c语言嵌套循环作业总结
1.助教有话说 首先,每周一篇的博客作业是很有必要的:编程的过程不仅仅是会敲几行代码.能够通过PTA就大吉大利了,你更应该做到的是梳理代码思路,通过与他人代码思路的比对,取其精华,进而不断进阶,才能逐 ...
- C语言--嵌套循环
一.PTA实验作业 题目1 水果价格 1.本题PTA提交列表 2.设计思路 第一步:定义变量number,表示输入的编号 第二步:定义变量i,用来记录编号数目 第三步:输出菜单:[1] apple [ ...
- Go语言循环判断的使用~
Go 语言条件语句 条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 下图展示了程序语言中条件语句的结 ...
- GO语言学习(十一)Go 语言循环语句
Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执行语句块 循环嵌套 在 for 循环中嵌套一个或多个 for 循环 语法 Go语言的For循环有3中形式,只有其中的一种 ...
- C语言的傻瓜式随笔(一):嵌套循环-程序结构
循环语句的嵌套 一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环.常用的循环嵌套是二重循环,外层循环称为外循环,内层循环称为内循环. ---------不知道哪来的基础概念 这是本宝宝的第 ...
- C语言第四次博客作业--嵌套循环
一.PTA实验作业 题目1:编程打印空心字符菱形 1. 本题PTA提交列表 2. 设计思路(流程图) 3.本题调试过程碰到问题及解决办法 思考过程:将问题拆解为菱形问题和字母变化问题两部分 1> ...
- C语言博客作业--嵌套循环
一.PTA实验作业 题目1:7-4 换硬币 2 .设计思路 第一步:定义3个整型变量i,j,k用于循环,定义3个整型变量x,count,total分别用于储存零钱数额,换法个数,硬币数量: 第二步:输 ...
- C语言退出多层嵌套循环技巧
由于break语句只能影响它的最内层循环,要想立即从深层嵌套循环中退出,有哪些方法呢? 1.使用goto语句: while(condition1) { while(condition2) { whil ...
随机推荐
- Windows10 + Matlab2013 mex C++ 调用gsl
最前面啰嗦一句,matlab默认编译c的编译器有点奇怪,会出现引用.h却找不到相应函数的问题,解决方法是把.c全部都改成.cpp!血的教训! 下面进入正题~~ 由于Matlab调用的C函数中引用了GS ...
- java用Kruskal实现最小生成树
今天更新这篇文章超级激动,因为我会最小生成树的算法了(其实昨天就开始研究了,只是昨天参加牛客网的算法比赛,结果又被虐了,好难过~) 最小生成树的算法,其实学了数据结构就会有一定的基础,Kruskal算 ...
- http协议的补充二
一,浏览器到服务器request 1.1,浏览器里面的内容 请求(浏览器->服务器) GET /day09/hello HTTP/1.1 Host: localhost:8080 User-Ag ...
- js+jq实现图片预览,支持到ie9+ff+chrome
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Zabbix JMX监控之ActiveMQ
监控原理: ActiveMQ作为依赖java环境的中间件,同样可以像tomcat一样用JMX(java扩展程序)监控.并且与tomcat不同的是,ActiveMQ自带了JMX,只需在配置文件中开启即可 ...
- MongoDB存储引擎(下)——In-Memory
前两篇文章分别介绍了MMAPv1和WiredTiger,这两个存储引擎都是会将数据持久化存储到硬盘的,除此之外,MongoDB也有只将数据存储在内存的存储引擎,那就是In-Memory. In-Mem ...
- TP5 模型类和Db类的使用区别
原文:http://www.upwqy.com/details/3.html 总结 在控制器中 模型操作 get() 和 all() 只能单独使用来查询数据 想要链式操作查询数据 需要使用f ...
- 深度剖析HashMap的数据存储实现原理(看完必懂篇)
深度剖析HashMap的数据存储实现原理(看完必懂篇) 具体的原理分析可以参考一下两篇文章,有透彻的分析! 参考资料: 1. https://www.jianshu.com/p/17177c12f84 ...
- UML那些事
什么是UML?它的全名:Unified Modeling Language,统一建模语言.最近我用到了uml,顺便重温了下这些知识.知乎上有一个讨论话题:uml还有用吗?这个讨论挺有意思的,看完后,受 ...
- TypeScript入门知识三(函数新特性)
一,Rest and Spread操作符: 用来声明任意数量的方法参数也就是"..."操作符 输出结果: 18 jajj 89 function test (a, b, c) { ...