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提交列表及说明
提交列表说明:
- 输出字符未换行
- 中部以上输出格式错误,空格数过多
- 首先确定中部数据,然后分中部以上,中部以下分别表达
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提交列表及说明
提交列表说明:
- k个素数输出后未停止循环
- 添加break语句语句后仍有部分输出结果未解决停止循环
- 外部添加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提交列表及说明
提交列表说明:
- 忽略了若为错误输入,输出error input!后,最后也会输出0
- 加入条件,当输入换行符后才输出最终数据
3.代码互评
同学代码截图
- 循环次数较少,节省运行空间时间
- 结构相差不大,判断语句排序不同
- 定义flag变量判断是否为素数,较为简练
自己代码截图
- 变量定义、赋值和输入之间是否有空格
- 判断条件先后排序不同
- 解法不同:一个先判断是否为2^n-1后判断是否为素数,另一个相反