C博客作业02--循环结构
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
- for循环结构:第一个是初始化,第二个是条件语句,第三个是自处理语句。 循环时第一个语句只使用一次,然后判断是否满足第二个语句,满足则进入循环体。直到不满足循环体再跳出。
- while循环结构:先对while()括号内的条件进行判断,若为真则进入循环,否则跳出循环。
- do-while循环结构:先执行循环体中的表达式的内容,之后再进行循环条件的判断,决定是否进行下一次的循环。
- while循环结构与do-while循环结构的区别:while和do-while的区别在于判断条件的先后,while先判断,程序有可能不进入循环;do-while是后判断,无论是否满足条件都只是会进行一次循环。因此,同样的条件,两种循环的输出结过可能不同。
- break:在执行循环语句时,break也起到控制循环的作用。当满足执行break的条件时,break强制循环结束,不再执行循环体中break之后的内容,并直接跳出循环。一般来说,在循环语句中,我们会用if与break搭配,当条件满足时,起到跳出循环的作用。break只跳出一层循环
- comtinue:当执行到comtinue语句时,continue会跳过循环体中continue下面的语句,并结束本次循环,并进入下一次循环。
- break只能用于switch和循环语句,而continue只能用于循环语句。
1.2 本章学习体会
- 循环嵌套难度大于选择和分支结构,需要耐心地读题,并合理使用循环语句。
- 题量太多,不会做就很烦躁,但是在和同学讨论过后完成还是很开心。
- 这两周代码量在900行左右。
2.PTA实验作业
2.1简单计算器
2.1.1 伪代码
int digit, sum, num = 0;
/定义sum来累加计算产生的值/
char op = '0';
scanf("%d", &sum);
while (op != '=')
{
scanf("%c", &op);
/先将op定义为0,让它进入for循环,然后通过if语句来决定进行的运算法则和进行运算的数字/
if (num == 1)/如果num没有被赋值为1,则输入了错误的字符/
printf("ERROR");
else
printf("%d\n", sum);
2.1.2 代码截图
2.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1+2*10-10/2= | 10 | 数据正常 |
1+2*10-10/2= | ERROR | 数据异常 |
2.1.4 PTA提交列表及说明
1.编译错误:打了中文的分号
2.答案错误:刚开始没有理解数字和字符是一个个进去的,在询问同学之后,理解了输入时,sum第一次被赋值为1
2.2梅森数
2.2.1 伪代码
{
if /若输入n=1,即可判定没有梅森数/
else
for/通过for循环输出一个个2的n次方减一的数字/
{
for/通过for循环来判断是否为素数/
}
}
2.2.2 代码截图
2.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
6 | 3 7 31 | 数据正常 |
1 | none | 数据正常 |
2.2.4 PTA提交列表及说明
1部分正确:刚开始只写了j<=shu1.0/2,反复调试多次才发现,当输入n=2的时候,就无法输出任何值,应改为for (j = 2; j <= shu1.0 / 2+1; j++)
2.部分正确:由于n=1放在循环中不好讨论,直接放在开头,即if (n == 1){printf("None");}
2.3二进制转10进制
2.3.1 伪代码
char ch;
int sum = 0;
int flag = 0;/定义ch为字符,sum用来存储二进制转十进制的值的累加,falg用于不符合条件时跳出while循环/
while (ch != '\n')
{
}/然后用switch语句,sum = sum * 2 + ch - '0'可以将一串二进制的字符转化为数字并且转化为十进制,/
}
if (flag == 0)
{
printf("%d", sum);
}
2.3.2 代码截图
2.3.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
11111111 | 255 | 数据正常 |
34 | error input! | 数据异常 |
2.3.4 PTA提交列表及说明
1.答案错误:不知道二进制转十进制要怎么写,也不知道ch-'0'可以将字符转为数字。
2.部分正确:除一和零以外的数字没有考虑,导致输入其他数字时循环无法执行,也得不出结果。
3.代码互评
-
同学代码
-
我的代码
评价:1.我在循环中使用了pow函数,导致提交时运行超时,而同学使用for函数,将pow函数表达出来。
2.在输入N后,数的范围已经被确定,同学用for函数去算数的范围,其实直接将范围用N的表达式写出即可。
3.其余的思路一致。