0.展示PTA总分
1.本章学习总结
1.1学习内容总结
1.while循环语句
基本格式如下:
while(表达式)
{
循环体语句
}
与之前学习的for循环相比:
while循环适用于循环次数未知,而for循环只能用于循环次数已知。(while同样适用于循环次数已知的情况)
2.do-while循环语句
基本格式如下:
do
{
循环体语句
}while{表达式};
与上文的while循环相比:
1.while语句是先判断后执行,反之,do while语句是先执行后判断。
2.无论如何,do while的循环体语句至少会执行一次,而while循环有可能一次都不执行(即不进去循环)。
3.循环控制语句
break:
(1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。
(2).只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。
continue:
(1).终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。
(2).结束当前循环,进行下一次的循环判断。
(3).终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行。
4.嵌套循环
一些小心得:
1.写嵌套循环或较复杂的题目时,可以先将做题思路写成伪代码或者写在草稿纸上,若想到一点就写一点的话,写到后面可能会发现前面写的没有顾及全局,而满篇皆错,之后的纠错也会变得吃力。
2.由于嵌套可能不止嵌一个,所以可以利用编译器上的+-号,如下图(PTA嵌套7-1)
我觉得这个在差错的时候很好用,可以清晰地判断出是哪里的循环出了问题。
1.2本章学习体会
1.感觉从嵌套循环开始,题目愈来愈复杂,做起来比较吃力。
2.希望老师可以多评讲下PTA或课堂派大家错的多的题目。
3.本周代码量660。
2.PTA实验作业
2.1求n以内最大的k个素数以及它们的和
2.1.1伪代码
用函数prime()来判断是否是素数,变量sum来保存素数之和,变量count来保存素数的个数。
输入一个数n
for (i = n - 1; i > 1; i--)
if (prime(i))//调用函数
若是素数
count++;
if count == 1
输出i
end if
else
输出+i
sum += i;
end if
if count == k//当达到最大次数
break;
输出sum
int prime(int j)
判断是否素数
2.1.2代码截图
2.1.3.造测试数据
2.1.4 PTA提交列表及说明
1.答案错误:判断函数时写的代码出错,一开始没有用flag,导致多输出一些不是素数的数。
2.2.2求幂级数展开的部分和
2.1.1伪代码
输入一个实数x
sum = 1 + x;
while (1)
molecular = pow(x, i);
denominator *= i;
i++;
item = molecular / denominator;//每一项=分子/分母
sum = sum + item;
if (fabs(item) < 0.00001)//判断是否循环结束
break;
end if
end while
输出sum
return 0;
2.2.2代码截图
2.2.3.造测试数据
2.2.4.PTA提交列表及说明
1.编译错误:之前写的,现在真的记不清了。
2.答案错误:一开始写的时候把表达式写在while()中且sum = sum + item;的位置写在前面,导致结果错误,后面改成了恒真的while(),觉得这样便于判断推出循环的条件。
2.3二进制转10进制
2.3.1伪代码
用字符型变量d来读取输入的数字
if (c == '1' || c == '0')
while (1)
d = getchar();
if (d == '1' || d == '0')
result = result * 2 + d - '0';//二进制满2进1
end if
else if (输入回车)
输出result
break;
end if
else
输出error input!
break;
end if
end while
end if
else
输出error input!
2.3.2代码截图
2.3.3.造测试数据
2.3.4.PTA提交列表及说明
虽然PTA上我一次就过了,但是在VS上写的时候,一直出错,后来在同学的帮助下,发现是字符型的数字要-’0‘才能转化为数字进行计算,若直接用字符进行计算,是用他们的AscII码进行计算,所以会出错。
3.代码互评
3.1龟兔赛跑
同学的代码:
我的代码:
这个同学用的是数学一元一次线性方程的方法做的,思路新颖,而我用的是常规解法,中间部分嵌套过多,看起来很杂乱,这位同学的代码值得我学习。
3.2查询水果价格
同学的代码:
我的代码:
我的代码用的是for循环,而这个同学用的是while循环,并巧妙地用i--做表达式,当i=0时就不会进入循环,这在之前的课堂派题目中有出现过,他能灵活运用到自己代码中,值得我的学习。