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

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时就不会进入循环,这在之前的课堂派题目中有出现过,他能灵活运用到自己代码中,值得我的学习。

posted @ 2019-10-20 22:04  王柏鸿  阅读(387)  评论(1编辑  收藏  举报