1. 本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量
1.2.1 学习体会
- 通过了本章的学习,我学到了C语言中的循环结构,并且通过作业,如PTA,课堂派,能够巩固对循环结构的认识,并且能够较好的运用到题目中。
- 本章学习学到了while语句,do-while语句,以及break语句和continue语句,而且通过做作业后能够较好的使用这些语句,感到非常开心。
- 学习C语言并没有想象中的那么恐怖,做什么事都是要慢慢来,没有一时就可以都学会的。每当做出一道题,都会有很大的成就感,这样也就更有动力去学习,也更有动力去深入了解C语言编程。
- 通过本章的学习还学到了伪代码的编写方法,每当做题前最好是先写一遍伪代码整理思路,写完伪代码之后再编程效果会更好。
1.2.2 代码累计
2. PTA总分
2.1 PTA中循环结构2次题目集的排名得分
2.2 我的总分:
- 循环结构(单层):175分
- 循环的嵌套:115分
- 总分:290分
3. 实验作业
3.1 PTA题目1
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
3.1.1 算法分析
- int sum=0存放十进制数 x=0判断是否输入非法字符
- char op=‘0’进入循环
- while(op!=‘\n‘)
scanf ("%c",&op)
if(op==‘\n‘) break;
if(op!=‘0‘&&op!=‘1‘) x=1 break
else sum=2*sum+op-‘0‘
- end while
if(x==1) printf ("error input!")
else printf ("%d",sum)
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
- Q1:一开始没有定义x来判断是否有输入非法字符,跳出的输入非法字符的阶段时会有sum的输出。
- A1:后来运用老师教的可以用flag来解决此问题,用上之后就解决了问题。
- Q2:一开始不知道如何解决输入字符如何变成数字。
- A2:后来运用老师教的op-‘0’可以字符转化成数字解决了问题。
3.2 PTA题目2
在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来,这会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。
3.2.1 算法分析
- int repeat,n,grade定义次数,人数,分值
- int x1=0,x2=0,x3=0,x4=0,x5=0,x定义储存各个分值的人数
- char op=‘*‘
for(i=1;i<=repeat;i++)
输入人数n
for(j=1;j<=n;j++)输入成绩grade
switch(grade)
如果输入1 x1++break
如果输入2 x2++break
如果输入3 x3++break
如果输入4 x4++break
如果输入5 x5++break
end for
输出1:令x=0直到x=x1 输出
输出2:令x=0直到x=x2 输出
输出3:令x=0直到x=x3 输出
输出4:令x=0直到x=x4 输出
输出5:令x=0直到x=x5 输出*
x1=x2=x3=x4=x5=0从新定义为下一次的表格做准备
end for
3.2.2 代码截图
3.2.3 测试数据
3.2.4 PTA提交列表及说明
- Q1:一开始从x=0开始直到x=x1,结果出现每个表格的每个分值都会有至少一颗星。
- A1:后来改成x=1开始直到x=x1,结果才正确。
- Q2:一开始结束的时候没有定义x1=x2=x3=x4=x5=0,结果第二章表格会被第一张表格的数值影响从而出错。
- A2:后来在结尾定义了x1=x2=x3=x4=x5=0才正确。
3.3 PTA题目3
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it‘s算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。
3.3.1 算法分析
- int x=0定义单词的字母个数,count=0定义有几个单词
- 输入字符op=‘0’进入循环
while(op!=‘.‘) scanf ("%c",&op)
if(op==‘.‘) 当输入.时当x!=0且count==0是第一个单词时输出x
如果count!=0不是第一个单词则输出空格加x
如果一开始输入.时break;
if(op!=‘ ‘) x++
if(op==‘ ‘)且x!=0时count++ if(count==1) 输出x,x从新归零
if(count!=1)输出空格加x,x从新归零
3.3.2 代码截图
3.3.3 测试数据
3.3.4 PTA提交列表及说
- Q1:这段代码写了很长时间,总是有一两个测试点过不去。
- A1:加上一个count后,解决了只有一个单词时的问题。
- Q2:还有一个问题就是输出结果后面不可以有空格。一开始是输出一个结果之后加上一个空格,结果老是出错。
- A2:后面运用了多个嵌套语句终于解决了。
4.代码互评
4.1 代码截图
4.2 不同之处
- 同学是使用flag控制输出,而我是使用count来控制输出。flag表示是否为第一个单词,而我的count是计算单词的个数,当count==1的时候也就是输出一个单词的时候,单词长度x不用加空格。否则需要加空格来控制最后一个单词输出后面不会加空格。
- 同学的代码与我的都是差不多的思路,都是分为三个情况,一个是输入.时的情况,一个是输入空格时的情况,一个是不输入空格的情况。但是同学的代码看起来思路比较清楚。
- 同学的代码看起来是有经过写思路之后才开始写的代码,而我的是直接开始写了,缺少了什么再补什么,这样的代码看起来比较不容易理解,以后会学学同学的方法,先列思路,写伪代码,再去做题。
C博客第02次作业---循环结构
原文:https://www.cnblogs.com/wcrbailun/p/9851169.html