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

一、PTA实验作业

7-1 查询水果价格

1. 本题PTA提交列表(要提交列表,不是结果)


2. 设计思路

  • 1.先定义四个变量number为用户输入查询数,count为用户查询次数,i,n。
  • 2.赋初值count=0.
  • 3.输入查询数number.
  • 4.如果number=0或者count>5,结束程序。
  • 5.如果number=1,printf("price = 3.00\n");如果number=2,printf("price = 2.50\n");如果number=3,printf("price = 4.10\n");如果number=4,printf("price = 10.20\n");如果number>4||munber<0,printf("price = 0.00\n").
  • 6.重复步骤3,4,5.直到输入0或者count>5,结束程序。

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

  • 1.这题从一开始就思路挺清晰的,但是pta上提交时一直说我格式错误
  • 解决办法:这题调试了挺久的,本来以为格式错误是输出哪里少了个空格,但是将题目复制粘贴过来后格式错误里还有别的提示

    我的程序本来是用if语句写的后来改成switch语句还是没对,最后回去检查了代码发现嵌套循环中第二个for里面的条件弄错了,我的一开始是for(j=1;j<=count;j++)后来改成for(j=1;j<=i;j++)j就对了。

7-4 换硬币

1. 本题PTA提交列表

2. 设计思路

  • 1定义变量fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量count = 换法个数,n零钱数额。
  • 2.输入零钱数额。
  • 3.for(fen5=n;fen5>=1;fen5--){,for(fen2=n;fen2>=1;fen2--){,for(fen1=n;fen1>=1;fen1--){
  • 4.如果fen55+fen22+fen1==n,total=fen5+fen2+fen1。
  • 5重复步骤3,直到程序满足步骤4
  • 6.输出结果。

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

  • 1.一开始没有按照题目要求从大到小输出。 解决办法:将程序中的fen++都改成fen--就可以从大到小输出了。
  • 2.每次输出的count都是fen55+fen22+fen1的值。

解决办法:后来用devc调试时发现没有给count赋初值。

  • 3.在devc上用题目给的数据都可以输出一样的,但是devc还是说在n输入最大值和最小值时不正确。 解决办法:在程序中加入n小于9结束循环的语句就好了。

7-7 歌唱比赛评分系统

1. 本题PTA提交列表

2. 设计思路

  • 1.定义变量循环变量i,j,n为评委个数,repeat为运行次数,max为最大值,min为最小值,grade为学生成绩,sum为成绩总和,score为平均分。
  • 2.输入循环个数和评委个数。
  • 3.给sum,min.max赋初值。sum=0.00;max=grade; min=grade;
  • 4.如果输入的grade>max,则max=grade,如果grade<min,则min=grade。
  • 5.累加成绩,sum=sum+grade。
  • 6.重复步骤4,5.直到输入次数大于n。
  • 6.计算平均值score=(sum-min-max)/(n-2)。
  • 7.输出平均值。

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

  • 1.题目给出的数据是可以输出一模一样的,提交pta后pta用0来检验就错了。
  • 解决办法:之前一直有在调试,但是没看出来错在哪里,后来发现是我的条件判断语句有漏洞,我本来的条件判断语句是 if(grade>max) grade=max; else min=grade 发现后改成 if(grade>max) grade=max; if(grade<min) grade=min;
  • 2.改过以后的程序还是有漏洞,总有一些值输进去不对。
  • 解决办法:后来经过同学建议,将赋值语句放到第一个循环后面就对了。

二、同学代码结对互评

1.互评同学名称

  • 吕雅慧

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

  • 我的代码

  • 同学代码

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

  • 1.我有使用嵌套循环,同学使用switch语句就解决问题了。
  • 2.感觉我的代码讨论的情况更多一点,但是也更啰嗦,但其实是一开始我看到这是嵌套循环的作业,想都没有想就直接把嵌套循环放上去了,根本没有想过有没有其他办法来解决问题。同学的代码虽然是用之前学的switch语句但是比较简洁,一目了然,比我的简单多了。可是美中不足的是同学的代码里没有注释,会影响代码可读性,这一点以后要扣分。
  • 3.与同学的相比我更喜欢同学的代码,我的代码过于冗长,啰嗦,把一个简单的问题复杂化了。同学的就简洁多了,让人看着也舒服许多。

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

四、本周学习总结

1.你学会了什么?

  • 1.对嵌套循环有了初步了解,比如在对循环赋初值时要对外层循环赋初值就应该将赋值语句放在外层循环的for语句之前,对内层循环赋初值,就应该将赋值语句放在内层循环和外层循环的for语句之间。
  • 2.我自己觉得,也不知道对不对,我感觉是不是只有像累加累乘这样大数值的运算才必须要用嵌套循环?
  • 3.如果循环中有需要存放累加值的变量,一定要赋初值,赋初值与不赋初值的差别非常大,就像7-4换硬币那题我没有赋初值,用题目给的数值运行时得到的换硬币种类数就是39,与原数差了好几倍。

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

  • 1.对于嵌套循环还有许多不明白的地方,就像什么样的题目需要用嵌套循环,使用嵌套循环有什么优势,以我现在目前的感受来看使用嵌套循环似乎让题目复杂化了。
  • 2.嵌套循环中比如for语句中变量是i,那么i到底需要满足什么条件,这点不是很清楚。
posted @ 2017-11-10 15:38  晗光凡影  阅读(457)  评论(1编辑  收藏  举报