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

0.展示PTA总分



1.本章学习总结

1.1 学习内容总结

for语句

  • for(表达式1;表达式2;表达式3)(无需分号)
    循环体语句
    • 表达式1:对循环变量赋初值;表达式2:给出循环条件;表达式3:改变循环变量的值;循环体语句只能是一条语句,若有多条可用大括号括起组成复合语句
    • 表达式1只在循环前执行一次;表达式3在执行循环体语句后执行;若循环次数未知,运用while而非for语句

while语句

  • while(表达式)
    循环体语句
    • 表达式可为任意合法表达式;循环体语句只有一条,若有多条可用大括号括起组成复合语句;
    • 对循环变量赋初值须在循环开始之前添加;循环体语句中必须包含最终能改变循环真假的操作;若循环次数未知,运用while而非for语句

do-while语句

  • do
    {
    循环体语句
    }while(表达式);
    • 先执行循环体,后判断循环条件;无论循环条件为何值,至少会执行一次循环;
    • 表达式可为任意合法表达式;循环体语句只有一条,若有多条可用大括号括起组成复合语句;
    • 对循环变量赋初值须在循环开始之前添加;循环体语句中必须包含最终能改变循环真假的操作;

break continue

  • break跳出所在循环,使循环提前结束;continue跳出当前循环,执行下一轮循环

getchar

  • 字符型数据循环输入
  • 同行输入每次只读一个字符(其他存在键盘缓冲区)

1.2 本章学习体会

  • 对循环语句有了初步的认识和了解for(;;)语句while(表达式)语句do-while(表达式);语句
  • 不理解:while(1)、while(scanf(“”))表达的意义和在何时应用
  • 代码量:pta平台大概963(未包括部分语句修改)

2.PTA实验作业

2.1 题目名1:7-4 编程打印空心字符菱形

2.1.1 伪代码

求出中间行数
if(为第一行)then
output空格
output一个字符
for(行数小于中间行)
output空格
output字符
output中部空格
output字符
for(行数为中间行)
output字符
output中部空格
output字符
for(行数大于中间行)
output空格
output字符
output中部空格
output字符
if(为最后一行)then
output空格
output一个字符

2.1.2 代码截图

2.1.3 造测试数据

输入数据 输出数据 说明
A 9 输出九行菱形图
A 1 A 输出1个字符

2.1.4 PTA提交列表及说明

提交列表说明:

  1. 输出字符未换行
  2. 中部以上输出格式错误,空格数过多
  3. 首先确定中部数据,然后分中部以上,中部以下分别表达

2.2 题目名2:求n以内最大的k个素数以及它们的和

2.2.1 伪代码

输入最大数、需要输出的素数个数
while(已记录个数小于所需个数)
判断是否为素数
若为第一个数输出单个数字
若不为第一个数输出+数
最后输出=总和

2.2.2 代码截图

2.2.3 造测试数据

输入数据 输出数据 说明
300 7 293+283+281+277+271+269+263=1937 正常输出
12 6 11+7+5+3+2=28 素数不及6个原数据输出
1000 10 997+991+983+977+971+967+953+947+941+937=9664 正常输出

2.2.4 PTA提交列表及说明

提交列表说明:

  1. k个素数输出后未停止循环
  2. 添加break语句语句后仍有部分输出结果未解决停止循环
  3. 外部添加while语句,内部加入一条if判断语句、break语句后解决

2.3 题目名3:7-10 jmu-c-二进制转10进制

2.3.1 伪代码

二进制数由字符输入
while(input字符)
if (字符为1or0)
将字符转为十进制数
else error input!
换行符
output十进制数

2.3.2 代码截图

2.3.3 造测试数据

输入数据 输出数据 说明
多个0 0 输入全为0转为二进制也为0
不为0或1 error input! 不是二进制数
111111 63 二进制转十进制

2.3.4 PTA提交列表及说明

提交列表说明:

  1. 忽略了若为错误输入,输出error input!后,最后也会输出0
  2. 加入条件,当输入换行符后才输出最终数据

3.代码互评

同学代码截图

  1. 循环次数较少,节省运行空间时间
  2. 结构相差不大,判断语句排序不同
  3. 定义flag变量判断是否为素数,较为简练

自己代码截图

  1. 变量定义、赋值和输入之间是否有空格
  2. 判断条件先后排序不同
  3. 解法不同:一个先判断是否为2^n-1后判断是否为素数,另一个相反
posted @ 2019-10-20 22:31  泗汐  阅读(378)  评论(1编辑  收藏  举报