第二次作业。。。

1.本章学习总结(2分)

1.1 思维导图

1475222-20181028225556046-1856324535.png

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

本周学习了循环结构,除了for循环以外还有while循环和do-while循环,比起分支结构,本周学习的难度明显加大了,需要理出一个明确的思路才好下笔写代码。程序中很多问题都不能通过直接看出来了,需要借助调试工具或者是在程序中添加输出语句来进行程序的查错。有时候还会遇到一些一时半会难以调试出的问题,这时就需要借助书本或者网络知识,结合阅读代码理清逻辑,才能写出正确的代码。

1.2.2 代码累计

1475222-20181028213204472-726047240.png

2.PTA总分(2分)

2.1截图PTA中循环结构2次题目集的排名得分

1475222-20181028213251259-1184818638.png
1475222-20181028213314405-1883389825.png

2.2 我的总分:

290

3.PTA实验作业(6分)

3.1 PTA题目1

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

3.1.1 算法分析

  • 定义整型变量num存放输入的数字,定义字符型变量ch存放输入的字符。
  • 输入一行四则运算算式,以=号结尾。
  • if i=0 do sum=num
  • else do switch(oldch)
    case'+':sum=sum+num;break;
    case'-':sum=sum-num;break;
    case'':sum=sumnum;break;
    case'/': if num!=0 do sum=sum/num
    else do flag=1并输出"ERROR"
    break; //条件都不满足则退出循环//
  • if ch=='+'或ch=='-'或ch=='*'或ch=='/' do oldch=ch //延长变量ch的存时间//
    else if ch!='=' do flag=1并输出"ERROR" ;break; //满足else if中的条件则退出整个循环//
  • 循环一次i自增1,当ch='=' do 退出循环
  • if flag==0 do 输出sum的值

3.1.2 代码截图
1475222-20181028213555186-667367763.png
1475222-20181028213621696-1720823665.png

3.1.3 测试数据
1475222-20181028214037320-755319666.png

3.1.4 PTA提交列表及说明
1475222-20181028214120161-1879832436.png

  • 开始时将一整串算式都当做字符型数据来处理,结果不但需要添加字符型数据与整型数据之间转换步骤,而且还容易弄混变量,调试改错也变得很复杂,最后尝试将数字和符号分开用不同的数据类型进行定义,发现这样较好。
  • 还有输出ERROR时没有考虑后续步骤,导致ERROR输出后还输出了num,后来引入了flag变量,解决了这一问题。

3.2 PTA题目2
以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

3.2.1 算法分析

  • 定义三个整型变量repeat,n,num
  • 输入repeat
  • for i=1 to repeat do
  • 定义五个变量num1,num2,num3,num4,num5用于统计各个等级的人数,并将它们初始化为0
  • 输入n
  • for j=1 to n do
    switch(num) //借助循环统计各个等级的人数//
    case 1:num1++;break;
    case 2:num2++;break;
    case 3:num3++;break;
    case 4:num4++;break;
    case 5:num5++;break;
  • 输出"1:"
    for k=0 to num1 do
    输出"*"
    该循环结束后输出\n
  • 按照1-5顺序重复以上操作5次,输出统计直方图

3.2.2 代码
1475222-20181028214938394-910513622.png
1475222-20181028214959689-1579739184.png

3.2.3 测试数据
1475222-20181028215747406-906121692.png

3.2.4 PTA提交列表及说明
1475222-20181028223106878-860345264.png
1.开始时打算先输出1:2:3:4:5:五行,然后在输出,但后来发现程序不能向上输入,于是明白需要先统计每个等级的人数,然后再进行循环输出

3.3 PTA题目3
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.不计算在内。
3.3.1 算法分析

  • 定义一个整型变量num,一个字符型变量ch
  • do 输入ch
  • if ch==' ' do
    while to ch==' ' do 输入下一个ch
    if i>=1 do
    if ch=='.' do 输出num
    else 输出num后带一个空格
  • num=0;
  • if ch!=' ' do num++ i++
  • while ch!='.'
  • if num!=1 do 输出num-1

3.3.2 代码
1475222-20181028220926187-108938955.png
1475222-20181028220950521-1205348039.png

3.3.3 测试数据
1475222-20181028221231869-347125123.png
3.3.4 PTA提交列表及说明
1475222-20181028223354897-480654073.png
这道题是失败最多的题目,尝试了很多次,一直在开头结尾多空格的那一个测试点卡住,找不到错误的点在哪里,因为空格无法显示,所以调试也没有调试出什么毛病,于是后来想到老师上课讲的方法,把空格替换成*,终于发现了问题,运用了一个小分支解决了它。

4.代码互评
从同学中找一篇优秀代码,和自己写的代码比较下,说明下自己和同学代码区别,各自优势是什么?

4.1 代码截图
同学代码截图。
1475222-20181028222235417-1744318381.png

自己的代码截图
1475222-20181028222315510-643604154.png

4.2 二者的不同
1.她的代码比我的代码行数少得多,看上去较为简便和清晰,可读性更高。
2.我觉得必要的注释(如不常见变量名的解释和一些较为复杂的运算步骤)应该要有,这一点我也并不是做的很好,希望我们可以一起努力。
3.她并没有运用到嵌套循环的句式,而是采用了将所有可能性一一列举,然后再进行筛选的方式,无疑这样的方式运算量较大,我觉得单从运算量多少的角度来说我的代码更胜一筹。
4.我的代码还是较为累赘,比如循环中两个printf其实可以并成一行输出,这方面我需要改进,在较少计算量的基础上追求代码的简洁。

转载于:https://www.cnblogs.com/lkjhgfdsa/p/9867821.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值