0.展现PTA总分
1.本章学习内容
1.1学习内容总结
while循环
while { 语句; } 语句;
说明:
1.首先判断while后面括号内的语句是否为真,若为真则进入循环,执行大括号内的语句,若为假,则跳过while循环执行循环体外的语句。 2.若在while的大括号内执行了break语句,则循环马上终止,跳出循环去执行循环体外的语句。 3.一直循环到while后面小括号的表达式为假,循环才结束。
do while循环
do { 循环语句; }while(循环条件);
说明:
1.先无条件执行一次循环体内的语句而后再判断循环条件的真假,除此以外与while循环结构一致。 2.特别注意在循环条件后面加上一个分号,表示循环的结束。
嵌套循环
int i,j,n; for(i=0;i<n;i++) { for(j=0;j<i;j++) { } }
说明:
1.外层循环一次,内层循环一轮。 2.若是在内层循环遇到break语句,则跳出内层循环,外层循环继续。
while,do while和for循环的使用场合
1.若是已经知道循环次数,则选择使用for循环更适合。 2.在不知道循环次数的状况下,更适合使用while循环或者do while循环,若是有可能一次循环都不执行,应该考虑使用while循环,若是至少循环一次,应该考虑使用do while循环。
break语句和continue语句
1.在没有循环结构的状况下,break不能用在单独的if-else语句中。 2.在多层循环中,一个break语句只能跳出当前循环。 3.continue语句的做用是跳过循环体后面的语句,继续下一次循环。 4.continue语句和break语句的区别在于,break语句结束循环,而continue语句只是跳事后面的语句继续循环。break语句除了能够停止循环,还用于switch语句,而continue语句只能用于循环。
1.2本章学习体会
- 本章咱们学习了while循环,do while循环,for循环还有嵌套循环,感受比以前的顺序、分支结构难。特别是嵌套循环,不容易看懂,由于用到的变量比较多,结构也是比较复杂,须要用的大括号多,一不当心漏掉一个就会编译错误,检查起来比较麻烦。因此,代码规范很重要,一个大括号占一行才不容易出错。另外,打代码特别须要耐心,可能要改不少次才提交正确,平时写代码的时侯细心一点,就能避免一些没必要要的错误。
- 代码量为800行左右,离目标还差一大截。
2.PTA实验做业
2.1 7-9 龟兔赛跑
2.1.1伪代码
输入比赛时间T do { if(十分钟后兔子仍是比乌龟快) { if(30分钟后比赛没有结束) { tortoise = tortoise + 3 * 30; time = time + 30; } else没有到30分钟比赛结束 {tortoise = tortoise + (T - time) * 3; break; } } tortoise = tortoise + 3; rabbit = rabbit + 9; time++; }while(比赛时间不等于比赛结束用时) 输出比赛结果及胜利者所跑距离
2.1.2代码截图
2.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
242 | @_@ 726 | 正常数据 |
9 | ^_^ 81 | 小于十分钟 |
30 | -_- 90 | 临界数据 |
2.1.4PTA提交列表及说明
- 提交以后显示答案错误,一时真看不出来哪里错,后来从新看一遍题目,是把兔子和乌龟每分钟前进的距离搞反了。
- 把rabbit=rabbit+3改为rabbit=rabbit+9后提交仍是不对,再检查发现输出有问题,当rabbit>tortoise 时,输出的是乌龟跑的距离。
- 改完后提交发现输出仍是有问题,再从新审题,发现输出表情后面多了一个空格。
2.2 7-8 查询水果价格
2.2.1伪代码
输出菜单 for(循环五次) { 输入选择的编号 if(输入的编号为零) 退出,程序结束; switch(编号) { case 1:price = 3.00; break; case 2:price = 2.50; break; case 3:price = 4.10; break; case 4:price = 10.20; break; case 0:break; default:输入其余编号,价格为零;退出; } 输出价格 }
2.2.2代码截图
2.2.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
3 | price=4.10 | 正常数据 |
0 | 无 | 0数据 |
6 | price=0.00 | 非正常数据 |
2.2.4PTA提交列表及说明
- 提交屡次一直都是答案错误,一开始给choice定义的是字符型,因此就把case 1改为case '[1]',而后仍是错。
- 后来把choice的类型改成整型,case '[1]'改为case 1,结果提交仍是有错。
- 检查题目以后在for循环内,switch语句外加一个判断编号是否为零的if语句,提交仍是有错啊。
- 从新检查每一次输出都有菜单出来,因而把输出菜单放到for循环外面。
2.3 7-2 梅森数
2.3.1伪代码
输入一个正整数n if(n<20) { for(从2^2-1开始循环) { num = pow(2, i) - 1; for(判断素数) { if(不是素数)退出; if(是素数) { 输出素数的值 count++; } } } } if(count==0) 输出“None”
2.3.2代码截图
2.3.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
6 | 3 7 31 | 正常数据 |
2 | 3 | 特殊数据 |
0 | None | 0数据 |
2.3.4PTA提交列表及说明
- 提交后找错发现把num= pow(2, i) - 1 写成i = pow(2, i) - 1,改完后仍然有错。
- 再把i<n改成i<=n,感受没什么变化,仍是不对。
- 再检查发现给j的初值是1,而后把j=1改为j=2。
代码互评
同窗代码截图
代码1
代码2
本身代码截图
- 第一个同窗所用的变量比较少,使程序变得更简化,整个思路也比较清晰,for循环里面用了三个if语句,比较容易理解。她的代码写得规范,没有什么安全问题。
- 第二个同窗的代码相对于个人就更简洁,引入了变量flag,使整个程序更简洁明了,值得学习。另外,代码的排版整洁有序,可读性强。