zoukankan      html  css  js  c++  java
  • 第二次作业循环结构

    1.本章学习总结

    1.1思维导图

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

    1.2.1学习体会

    ·经过这两周的学习,我学到了循环结构的一些知识,for语句,while语句,do-while语句,和上周相比,程序执行的步骤大幅度增加,一般的断点调试有着明显的局限性,利用printf输出是一个可以处理大规模循环的调试方法。
    ·flag是个好东西,这个可爱的小朋友可以用来表示一个状态,配合if可以简化很多东西,膜拜发flag的大神。
    ·PTA方面体会,循环结构的题目和顺序分支结构相比,题目难度略大,PTA在提交时很难一次看到一片红,要不断地去修改,这也许是一个计算机专业学生必由之路吧,任何程序不可能十全十美,只有不断调试修改,才能臻于完美,当把PTA中一个个绿色的答案错误全部变成红红的答案正确,成就感十足。

    1.2.2代码累计

    PTA总分

    2.1排名截图

    2.2我的总分:

    290

    PTA作业

    3.1简单计算器

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

    3.1.1算法分析

    定义num,result分别用来表示被用来运算的数和结果,定义flag表示输入是否合法,定义ch来表示运算符。
    输入num
    while ch!=0
    do 输入ch,输入num
    if ch/&&num0
    then 输出error
    switch(ch)
    case + result=result+num
    case - result=result-num
    case * result=result*num
    case / result=result/num
    default 输出error
    end while
    输出result

    3.1.2代码截图

    3.1.3数据测试

    3.1.4提交列表

    Q:这种做法与老师上课讲的用oldCh保存原有运算符的做法相比有什么好处。
    A1:老师的做法有一个缺点,就是第一个输入的数的正负是受限制的,比如上课展示的代码只可以来做第一个数是正数的情况。
    A2:在循环外先输入一个数,在用一个循环条件恒成立的do-while循环配合break使用,可以在循环中随时退出,更加灵活。

    3.2给食堂打分

    在商业和科学研究中,人们经常需要对数据进行分析并将结果以直方图的形式显示出来,这会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,输入一个正整数repeat (0<repeat<10),做repeat次下列运算:

    输入一个正整数n(1≤n≤20),表示有n个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~5这5个等级(1表示最低分,5表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。

    3.2.1算法分析

    定义repeat表示要评分的次数,n表示每次评分要有多少人,num1,num2,num3,num4,num5表示每种评分的个数
    输入repeat
    for i=1 To repeat
    输入n
    num1=num2=num3=num4=num5=0//归零,防止累加
    for j=1 To n
    输入mark
    switch(mark)
    case 1 num1++
    case 2 num2++
    case 3 num3++
    case 4 num4++
    case 5 num5++
    end for
    输出1:for j=1 To j=num1
    输出2:for j=1 To j=num2
    输出3:for j=1 To j=num3
    输出4:for j=1 To j=num4
    输出5:for j=1 To j=num5
    end for

    3.2.2代码截图

    3.2.3测试数据

    3.2.4提交列表

    本题最最需要注意的地方是在输入n后要对5个num进行归零操作,不然最后一张打印的表会是所有数据的总和。
    此外,本题要用多个for语句,一定要分清每个for之间的关系,是嵌套还是并列。

    3.3单词长度

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

    3.3.1算法分析

    定义ch表示输入的字符,定义count用来计数,flag用来处理空格带来的格式错误问题
    while(1) do输入ch
    if ch!=' '&&ch!='.' count++//合法字符,count计数
    Then else if ch' '&&count!=0//如果中间有多个空格,只输出一个count
    输出count
    Then else if ch
    '.' &&count!=0//出现'.'先完成最后的输出,再跳出循环
    输出count break

    3.3.2代码截图

    3.3.3测试数据

    3.3.4提交列表

    count!=0和格式是这道题的重点,也是易错点,如果在输出数据的时候不注意要加上count!=0的判断条件,很容易多输出好几个0,因为熊孩子们不一定在词与词之间只输入一个空格。
    另外,我自认为在按字符输入的时候用while(1)和break配合的“迷之死循环”更加灵活,因为字符只能每次输入一个,break在跳出循环方面更加灵活。

    4.代码互评

    小伙子,你要知道,你自己渣渣得很!!!

    康友煌同学的念数字代码

    我的念数字代码

    ROUND 1:代码简洁性

    30行 VS 60+行,

    康友煌WIN。

    ROUND 2:程序运行情况

    将数按字符输入,并挨个念出 VS 按常量输入,调用pow函数算出几位,在从左到右依次提出每位数字念出,

    康友煌WIN。

    格式错误处理方面

    都用了flag,但是我的flag处理明显不如他,毕竟我是用了连个switch的男人,让flag直接成了摆设。

    康友煌WIN。

    被完虐。

    总结

    在做题的时候不要冲动,不要因为老师上课讲过或者见过就马上去写,先构思好,怎么可以让代码简单。
    (说实话,我的代码在一开始写了100+行,后来把可以删掉的大括号删了,把case printf break写在了一行才变成了现在的60行,刚写完的时候我甚至有成就感,希望以后不会有这样的成就感.).
    向前学习,后面学习的很多知识可以简化以前的问题,比如数组。

    生命不息,学习不止,这次是我们计算机的学生一生的追求。

  • 相关阅读:
    Linux 资源监控整体分析-TOP
    GO基础之闭包
    GO基础之函数的高级用法
    GO基础之函数
    GO基础之流程控制语句
    数据结构导论(第二章线性表)
    JVM 参数配置
    GO基础之变量的使用
    数据结构导论(第一章概论)
    网络经济与企业管理(第11章:企业文化管理)
  • 原文地址:https://www.cnblogs.com/qsls8643/p/9864091.html
Copyright © 2011-2022 走看看