循环结构

0.展示PTA总分

c03

c04

1.本章学习总结

1.1 学习内容总结

本章学习了循环结构,循环结构主要应用于程序需要重复执行某些操作时,完成一些特殊计算。

常用语句

  • for语句
    for(表达式1;表达式2;表达式3)
    循环体语句;
    for语句常用于循环范围明确时,先计算表达式1,在判断表达式2接着计算表达式3。

  • while语句
    while(表达式)
    循环体语句;
    while常用于范围不明确时,当表达式的值为真时,循环执行,直到表达式的值为假。

  • do-while语句
    do{
    循环体语句;
    } while(表达式);
    do-while语句先执行循环体,再判断表达式,当值为假时,循环退出。

  • break语句和continue语句
    break语句可让循环提前结束,continue语句可提前结束本次循环,break除了可以终止循环外还可用于switch语句,而continue只能用于循环。

嵌套循环

  • 嵌套循环即为多重循环,大循环中嵌套小循环,使程序完成特殊计算。
  • 1.2 本章学习体会
  • 这两周学习了循环结构,内容逐步增多,难度也逐步增大,但是还是有信心能够学会学好的。
  • 这两周的代码量大概只有800左右,没达到目标吧,有时候一题要琢磨两个晚上也弄不出,只能慢慢来了。

2.PTA实验作业

2.1 题目名1

  • 求n以内最大的k个素数以及它们的和

2.1.1 伪代码

定义整型变量i,j,n,k,sum,count,初始sum,count的值为0,定义一个整型标记变量isprime进行判断。
scanf(输入两个数,储存至变量n与变量k)
外循环for(i = n; i >= 2; i--)
初始isprime的值为0;

内循环(j = 2; j <= i-1; j++)
if(i% j ==0)
赋值isprime=1
break退出循环
内循环结束

if(isprime=0?)
if(count=0?)
输出i
else
输出+i
sum=sum+i
count++
if(count=0或i=2?)
输出sum
break
外循环结束

return 0
程序结束

2.1.2 代码截图

2.1.3 造测试数据


输入范围数为0或负数时,数据不符合进入循环的条件,程序无法输出。

2.1.4 PTA提交列表及说明

错误1:把求和的表达式放进了分支中,导致count==0时的值未加进sum和中,将该语句移出后求和正确

错误2:最后外循环语句结束后输出sum的判断语句条件不足,即没有考虑当该范围n内有足够k个素数和不够k个素数两种条件。

2.2 题目名1

打印九九口诀表

2.2.1 伪代码

定义整型变量i,j,n,num1,num2
scanf(输入一个整数n)
for (i = 1; i <= n; i++)
把i的值赋给num1
for (j = 1; j <= i; j++)
j的值赋给num2
输出num2num1=num1num2
内循环结束
输出字符
return 0

2.2.2 代码截图

2.2.3 造测试数据


外循环从i=1开始,负数和0不能进入循环。

2.2.4 PTA提交列表及说明

错误一:输出数据时num1与num2输出顺序不同,输出结果不同。
错误输出:

正常输出:

错误二:没有在内循环结束后输出换行字符,程序输出的数据只能纵向排列,在外循环最后输出一个回车字符即可让程序完成一次外循环后换一次行,输出楼梯状。

2.3 题目名1

换硬币

2.3.1 伪代码

定义变量
输入要换的钱
for (fen5 = 20; fen5 > 0; fen5--)
for (fen2 = 50; fen2 > 0; fen2--)
for (fen1 = 100; fen1 > 0; fen1--)
if各分值乘其个数等于总金钱
total=币个数
换法count+1
输出数据
输出换法个数

2.3.2 代码截图

2.3.3 造测试数据

2.3.4 PTA提交列表及说明


错误:循环范围范围混乱,输出结果错误。

3.代码互评

同学代码截图

自己代码截图

对比:判断素数的处理方式不同,其在循环内顺序判断处理输出,我是利用利用isprime来判断输出。两种代码都能够完成题目要求,都可行。

原文地址:https://www.cnblogs.com/weiershui/p/11697964.html