C博客作业02--循环结构

2019/10/20 21:56
阅读数 9

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,使整个程序更简洁明了,值得学习。另外,代码的排版整洁有序,可读性强。
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部