在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.1 思维导图
1.2 本章学习体会及代码量学习体会1.2.1 学习体会
循环相比分支和顺序结构难了许多,相对的来说我的c语言的基础比之前有提高,但是还是很多题想了很久也想不出来,最后参考同学的答案,很多题目简单的办法想不到,经常如引入flag来控制循环的执行,还有嵌套,自己很难想到简单的方法,只知道按照题目意思来,一步一步的解下去,最后往往发现自己的代码很长,而很长的代码又很难看出来错误,然后会影响后面做题的心情,需要一步一步调试看哪里出了错,再一个就是这次循环让我对调试更加的熟练,因为循环就是条件容易错,用调试的办法或者中间加上一个printf的方法能够很容易看出哪里除了问题。还有就是循环的题目,思路还行,就是如果一步一步按照思路来很容易写出一段很长的代码,比如说龟兔赛跑。我以后需要改进我的代码长度,但是现在的作业太多了,以后再改。。。
1.2.2 代码累计
2.PTA总分(2分)2.1截图PTA中循环结构2次题目集的排名得分
3.PTA实验作业(6分)3.1 PTA题目1
判断T分钟后乌龟和兔子谁跑得更远,跑的远的赢,再输出赢的动物跑的距离。
3.1.1 算法分析定义变量rabbit和tortoise来储存兔子和乌龟跑过的路程。T代表总时间。 time代表某一刻的时间。 if(rabbit>tortoise) printf("^_^ %d\n",rabbit); 乌龟赢输出@_@,兔子赢输出^_^,平局则输出-_-;后跟1空格,再输出胜利者跑完的距离。
3.1.2 代码截图
p1:看了同学的pta,在同学的指导下完成的。只用了20多行 p2:自己之前独立完成的,写了很多行代码。 3.1.3 测试数据3.1.4 PTA提交列表及说明> ·Q1:没考虑比赛时长不足40分钟的情况,默认比赛时长为40的倍数,直接进行计算 ·A2: 后面在调试的时候输入30它输出的结果是兔子跑了90米,乌龟跑了30+3*30米 ·Q2:一开始的思路很繁琐,是按着题目的意思按部就班来,一个条件一个条件的判断,多个if嵌套使用,某一步出错了不好修改。 ·A2:运用flag来控制休息时间的停止,并且在执行兔子睡觉时间的计算时兔子的休息时间是一分钟一分钟的加,而不是直接加三十,这是我没考虑到的。
3.2 PTA题目2
本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。
3.2.1 算法分析
int定义i:行数,j:行前空格数,n:输入的菱形高度,k:控制每一行的字母和空格的输出,mid:中间行。char定义ch:字母。首先求出mid=n/2+1,然后进入for循环,for i=1 to n,do for j=1 to fabs(mid-i)do 输入空格 然后再在第一个for循环中放入i 与mid 大小的判断, if(i<=mid) 则进入一个for循环, for k=1 to 2*i+1 do ch+i-1, 然后再判断位置,当处于第一个位置和最后一个位置时填写字母,中间填写空格,然后再将字母初始化为输入的字母。然后再判断, if(i>mid)则进入另一个for循环, for k=1 to 2*(n-i) do ch=ch+(n-i) 再判断是否为第一个位置或者最后一个位置,如果是,填字母,如果不是,填空格。一样将字母初始化为输入的字母,最后输出结果。
3.2.2 代码截图1.错误代码
2.正确代码
3.2.3 测试数据
3.2.4 PTA提交列表及说明> ·Q1:一开始没考虑好下半部分的每一行的字母加空格的总数的规律,导致上半部分对,下半部分是错的,然后测试点2最大高度,最大字符出错,其实应该是都错,就一个B 5是对的。 ·A1:然后调整了k与n和i的关系,也通过了第二个测试点。 ·Q2:一开始没有在进入下一个for循环前将ch初始化为输入的字母,导致字母在一直递增。 ·A2:调试之后看出了错误。
3.3 PTA题目3
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,计算有几种不同的换法
3.3.1 算法分析
定义变量x放输入的数 fen5,fen2,fen1为各硬币的数量,max5,max2,max1为各硬币的最大值用item来储存x的值,因为x的值后面会改变,x=x-8确保三种硬币各有一个,然后 max=x/5-1 计算五分硬币最多有多少个 for fen5=max5 to fen5==1;do max2=(item-fen5*5)/2 求两分硬币最多有多少个 for fen2=max2 to fen2==1 do max1=item-fen5*5-fen2*2 计算一分硬币当次循环时的数量 for fen1=max1 to fen1==1 do 用if(1*fen1+2*fen2+5*fen5==item)来判断当次循环是否满足条件,满足则输出total硬币总数,满足的种数count+1; 最后输出各个硬币数,和硬币总数还有满足的种数
3.3.2 代码截图
3.3.3 测试数据
3.3.4 PTA提交列表及说明
·Q1:一开始计算max2的式子放错位置,导致一直输出不了正确答案 ·A1: 然后还是经过调试得出max2的值不对。 ·Q2:自己能输出正确答案但是一直错误,检查了很多遍也出不来,有点崩溃 ·A2:然后突然想到输出格式的问题,输出是count = 而我只有一个值没有count =
4.代码互评1.同学的代码
2.我的代码
(1)我先考虑的是将三种硬币各分一个,然后再计算。同学是直接算5分硬币的最大值,2分硬币的最大值,再进入循环,确定每次循环时1分硬币的数量。 (2)他的代码有一个细节,用了while判断是否2分硬币为0,如果为0退出循环得出5分硬币减1,然后再计算b,即2分硬币的个数。 (3) 他的变量很少,灵活运用两个while直接得出三个硬币的数量,最后加一个判断就得出结果。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论