一、PTA实验作业

题目1:7-4 换硬币

1. 本题PTA提交列表



2. 设计思路

(1)定义整型变量money表示待换的零钱总额,p5表示5分硬币的数量,p2表示2分硬币的数量,p1表示1分硬币的数量,count表示总换法个数

(2)输入输入待换的零钱总额 money;

(3)p5=money/5;

(4)p2=money/2;

(5)p1=money;

(6)如果money等于p1+2p2+5p5,则分别输出五分,两房,一分以及总的硬币数,count++;

(7)p1--,重复第5步骤,直到p1小于1时结束;

(8)p2--,重复第4步骤,直到p2小于1时结束;

(9)p5--,重复第3步骤,直到p5小于1时结束;

(10)输出count的值。

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

  • 没有题目的要求是按5分、2分和1分硬币的数量依次从大到小的顺序输出,第一次做时把硬币数从1加到最大讨论,结果一样,但是答案错误;经过同学的指点发现错误原因。



    修改后:

题目2:梅森数

1. 本题PTA提交列表

2. 设计思路

(1)定义整型变量i,j为循环变量,n为正整数,m为梅森数;

(2)输入符合条件的正整数n;

(3)若n大于1时,即至少存在一个梅森数时;

(4)i=2;

(5)m=pow(2,i)-1;

(6)j=2;

(7)若m%j==0,则结束循环;

(8)j++,重复执行第6步骤,直到j大于m时结束;

(9)如果j大于m/2,则输出m的值并换行;

(10)i++,重复执行第4步骤,直到i大于n时结束;

(11)若n等于1则输出"None"。

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

  • 题目没理解好,以为m等于2^n-1即可;再认真审题后发现还有素数的条件,则加入素数的判断;

  • 没有考虑到m的值的改变,导致一直在while语句中死循环;发现while语句是多余的,可以去掉;



    修改后:

题目3:歌唱比赛评分系统

1. 本题PTA提交列表



2. 设计思路

(1)定义整型变量repeat表示运算次数,n表示评委人数,ij为循环变量;

定义双精度变量score表示得分,max表示最高分数,min表示最低分数,sum表示分数总和,average表示最终结果

(2)输入运算次数repeat;

(3)i=1;

(4)max=min=sum=0;

(5)输入n和score;

(6)min=max=sum=score;

(7)j=1;

(8)输入score;

(9)sum=sum+score;

(10)当score大于max时,max=score;

(11)当score小于max时,min=score;

(12)j++,重复执行第7步骤,直到j等于n时结束;

(13)average=(sum-min-max)*1.0/(n-2),输出average时保留两位小数并换行,准备下一次运算;

(14)i++,重复执行第8步骤,直到i大于repeat时结束。

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

  • j的取值范围出错,调试后发现最后一次循环会再次进入,j的值应该是小于n,因为score已经输入一次了;



    修改后:

  • 思路错误,没有保留下最小值,每次比较都只有两个数之间,忽略了要和所有数比较;通过几组数据调试可以发现最小值的结果出错;



修改后:

二、同学代码结对互评

1.互评同学名称

林晓露

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

  • 我的代码
  1. int repeat,i,n,j,k,grade,count1,count2,count3,count4,count5; //repeat为运算次数,n为学生人数,grade表示五个等级
  2. scanf("%d\n",&repeat); //count表示对应等级的个数
  3. for(i=1;i<=repeat;i++){ //每次进入循环count都要重新赋值否则会影响下次结果
  4. count1=0;
  5. count2=0;
  6. count3=0;
  7. count4=0;
  8. count5=0;
  9. scanf("%d",&n); //输入学生人数
  10. for(j=1;j<=n;j++){
  11. scanf("%d",&grade); //输入等级,统计每个等级对应的得分
  12. if(grade==1)count1++;
  13. if(grade==2)count2++;
  14. if(grade==3)count3++;
  15. if(grade==4)count4++;
  16. if(grade==5)count5++;
  17. }
  18. printf("1:"); //按格式输出对应等级的得分,*的个数表示得分
  19. for(k=1;k<=count1;k++)
  20. printf("*");
  21. printf("\n2:");
  22. for(k=1;k<=count2;k++)
  23. printf("*");
  24. printf("\n3:");
  25. for(k=1;k<=count3;k++)
  26. printf("*");
  27. printf("\n4:");
  28. for(k=1;k<=count4;k++)
  29. printf("*");
  30. printf("\n5:");
  31. for(k=1;k<=count5;k++)
  32. printf("*");
  33. putchar('\n'); //最后换行,准备下一次运算
  34. }
  • 互评同学代码
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int repeat,n,score,i,j,k; //score为评分等级i,j,k,为循环所用//
  5. int total1,total2,total3,total4,total5; //定义该五变量来分别存放累加1.2.3.4 .5.评分等级的次数//
  6. scanf("%d",&repeat);
  7. for(i=1;i<=repeat;i++){ //保证repeat循环次数//
  8. scanf("%d",&n);
  9. total1=total2=total3=total4=total5=0 //起始清空定义//
  10. for(j=1;j<=n;j++){
  11. scanf("%d",&score);
  12. switch(score){ //利用switch语句累加1.2.3.4 .5.评分等级的次数//
  13. case 1:
  14. total1++;break;
  15. case 2:
  16. total2++;break;
  17. case 3:
  18. total3++;break;
  19. case 4:
  20. total4++;break;
  21. case 5:
  22. total5++;break;
  23. }
  24. }
  25. printf("1:");
  26. for(k=1;k<=total1;k++) //循环输出该评分等级所应有的*数,并换行//
  27. printf("*");
  28. printf("\n");
  29. printf("2:");
  30. for(k=1;k<=total2;k++)
  31. printf("*");
  32. printf("\n");
  33. printf("3:");
  34. for(k=1;k<=total3;k++)
  35. printf("*");
  36. printf("\n");
  37. printf("4:");
  38. for(k=1;k<=total4;k++)
  39. printf("*");
  40. printf("\n");
  41. printf("5:");
  42. for(k=1;k<=total5;k++)
  43. printf("*");
  44. printf("\n");
  45. }
  46. return 0;
  47. }

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

  • 不同点:(1)count的赋值,我分别写了出来,同学同时写完,更简洁写;

    (2)判断等级时我用了if语句,同学用了switch语句;

    (3)输出的表达方式不同,我的换行符直接附在了等级前面,同学则是用输出语句另外输出。

  • 各自优势:(1)同学此题选择switch语句更合适些,if语句可能更合适用于判断变量的范围;

    (2)同学的输出方式可以更简约一些;

  • 代码风格:感觉此题大致流程是相同的,差异不多,就一些语句和表达方式的差别。

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

四、本周学习总结

1.你学会了什么?

  • 本周实验课讲评了一些题目,在一些小错误上得到了教训,特别是空心菱形的那道题,通过伪代码来总结行数与出输出的空格数,字符的关系,加上循环语句即可实现,但是转化之间的逻辑思维比较强,一不小心就会出现错误;

  • 通过完成本次的PTA实验作业,巩固了对循环结构的掌握,用多重for语句循环实现多次,多层的更高级的操作,同时提高了效率,不需要写重复的代码;一些易错点,比如:多层循环时,最外层循环结束时可能需要换行,方便下一次循环的开始,第七题就一直因为输出average后忘记换行而导致一直无法通过,然后第八题就有注意一下这个问题了;

  • 本周还新学了函数,包括函数的声明,调用,定义和返回值,形参,实参,还有局部变量,全局变量和变量生存周期,静态局部变量;通过自定义函数解决问题,在多次使用时就可以更快更简便了;

  • 在PTA中写代码时没有跟上注释的意识,只想先写好代码,而且有些变量比如循环变量都是写一半了然后添上去的,比较容易忘记;

  • 课堂派中函数的预习作业完成的不好,没有理解好函数的调用和返回的知识点,错了不少地方。

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

  • PTA中有些地方的代码可以简略一些,有些同学的思路非常好,比如一开始的两个值的互换等,利用巧妙的方法可以很快解决问题;可以多看看同学的代码,学习一些好的思路,也可以锻炼看代码的能力;
  • 函数的调用和返回值掌握的还不是很好,一做题目就容易犯错,作用域与生存区这两个概念也不是很明白。

C语言博客作业—嵌套循环的更多相关文章

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

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

  2. C语言博客作业06——结构体&文件

    C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...

  3. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  4. C语言博客作业5--指针

    C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...

  5. C语言博客作业4--数组

    C语言博客作业4--数组 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...

  6. C语言博客作业3--函数

    C语言博客作业3--函数 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...

  7. C语言|博客作业10

    问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...

  8. C语言Ⅰ博客作业09

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10029 我在这个课程的 ...

  9. C语言博客作业08

    C语言I博客作业08](https://www.cnblogs.com/490-85-00-58-/p/11863312.html) 问题 回答 这个作业属于那个课程 C语言程序设计II 这个作业要求 ...

随机推荐

  1. Java 第六章

    第六章 for语法:for(表达式①;表达式②;表达式③){ //④循环操作}表达式含义:表达式1:赋值语句, 它用来给循环变量赋初值 例如:int i = 1;表达式2:循环条件,一个关系表达式, ...

  2. Trouble HDU - 4334

    Hassan is in trouble. His mathematics teacher has given him a very difficult problem called 5-sum. P ...

  3. VBA Excel WideCharToMultiByte Compile error on 64-bit System

    Compile Error: The code in this project must be updated for use on64-bit systems. Please review and ...

  4. Python基础_如何用pip安装文件

    与其他语言相比,Python的一个很大的优势是由丰富的资源库,这就需我们按照自己的来安装文件和包.本节以在windows系统下安装pygame 为例来讲述一下安装步骤. 1. 检测python中有没有 ...

  5. Keras官方中文文档:keras后端Backend

    所属分类:Keras Keras后端 什么是"后端" Keras是一个模型级的库,提供了快速构建深度学习网络的模块.Keras并不处理如张量乘法.卷积等底层操作.这些操作依赖于某种 ...

  6. TensorLayer官方中文文档1.7.4:API – 数据预处理

    所属分类:TensorLayer API - 数据预处理¶ 我们提供大量的数据增强及处理方法,使用 Numpy, Scipy, Threading 和 Queue. 不过,我们建议你直接使用 Tens ...

  7. [USACO15FEB]审查(黄金)Censoring (Gold)

    题面 传送门 Sol AC自动机+栈,每次匹配到栈顶减去这个单词的长度,回到之前的状态 最后栈中留下的就是答案 # include <bits/stdc++.h> # define IL ...

  8. [BZOJ1041] [HAOI2008] 圆上的整点 (数学)

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  9. python数据类型:序列(字符串,元组,列表,字典)

    序列通常有2个特点: 1,可以根据索引取值 2,可以切片操作 字符串,元组,列表,字典,都可以看做是序列类型 我的操作环境:Ubuntu16.04+python2.7 一.字符串类型 >按索引获 ...

  10. EF+Redis(StackExchange.Redis)实现分布式锁,自测可行

    电商平台 都会有抢购的情况,比如 1元抢购. 而抢购 最重要的 就是库存,很多情况下  库存处理不好,就会出现超卖现象. 本文将用redis为缓存,StackExchange 框架,消息队列方式 实现 ...