zoukankan      html  css  js  c++  java
  • 第三次作业函数

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

    1.1 思维导图

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

    1.2.1 学习体会

    本周学习了函数和一些数据类型和表达式,函数可以将一个大的程序设计任务分解成若干小任务,这样便于实现,协调及重用,使编程更加简单,便捷,提高了工作效率。函数给我的感觉就是有一点懵,就是大概知道是这么写,但又觉得不准确,就一定要靠去编译器里尝试它的可行性,跟前面的分支和循环语句给我的感觉完全不同。可能是还不熟练。
     数据类型和表达式在前面的代码运用中多多少少了解了一些,基础的,比较常用的,印象比较深刻,记得更牢靠一些。突然本章有一堆出现的时候,就有些记不住了,还需要多看几遍。
    

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA中函数题目集的排名得分

    2.2 我的总分:

    总分 145

    3.PTA实验作业

    3.1 PTA题目1

    使用函数验证哥德巴赫猜想
    本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

    3.1.1 算法分析

    • int prime( int p

    • int flag=0 ,i

      • p=1 return 0 //判断1不是素数
      • p=2 return 0 //判断2是素数
      • for i=2;i<=p/2;i++
        • if (p%i==0)
        • flag =1
        • return 0
        • end if
      • end for
      • if (flag==0) //判断素数
      • return 1
      • end if
    • void Goldbach( int n )

      • for(p=2;p<n;p++)
        • if(prime(p)==1)
          //根据循环可以直接从小到大求得p
          • q=n-p
          • if(prime(q)==1)
          • printf("%d=%d+%d",n,p,q);
        • end for
      • end if

    3.1.2 代码截图


    3.1.3 测试数据

    3.1.4 PTA提交列表及说明

    • 先是编译错误,根据编译器指示,改了过来
    • 后来是部分正确,因为对素数的判断不严谨,1不是素数,2是素数,提前判断1,2,因为后面的判断没管1,2;

    4.大作业

    题目:实现小学四则运算。
    要求:
    题目有3个难度级别,分别为:

    第一级是1位数的一步加减乘除计算
    第二级是2位数的2步加减运算
    第三级是3位数的2步加减运算
    注意:
    运算数及运算符都是随机生成的。
    用户每选择一个难度级别后必须输入题目数量,最好能统计用户的正确率。用户每算一题,若错误,给出正确答案。
    用户中途退出,不继续做题,需要有个提示操作可中途退出。
    软件界面必须友好,多加文字提示,能让用户自己当前做什么,接下来怎么做,每步操作可以退到菜单界面。
    用户输入的非法数据,务必有友好提示,而不是让程序陷入瘫痪。
    注意函数封装,不管是几位数的加减乘除运算,相同功能的代码应该都封装都一函数,通过参数传递实现代码覆盖。也可以考虑数据输入、输出等函数封装,尽量不要把代码都放main中。各种异常情况也可以单独封装函数处理,让程序的扩展性更强。
    扩展功能:
    可以设置答题时间,用户超过答题时间,提示不能继续做题,重新选抽题。请查阅C的时间函数。
    扩展难度级别,比如出现2步加减乘除,然后乘除优先计算。比如2+3*4运算
    4.1.函数关系图

    4.2.函数功能介绍
    1.函数1

    • 根据等级判断进入第一级别
    • 自动生成数字和运算符,并计算
    • 判断输入值与输出值之间的差别
    • 判断中途退出的选项

    2.函数2、3

    • 第二、三段代码和第一段代码极为相似,整体输入格式相同
    • 其中随机数生成位数,范围不同,需要改动
    • 进行两次加减,所以增加随机字符判断,增加计算步骤

    4.3 运行结果截图
    按照程序功能,分别截图展示运行结果,对于临界、不合法数据,可单独截图运行结果图。

    4.4 调试碰到问题及解决办法

    • 运行时发现会出现1.004这样的随机数出来进行运算,算出来的答案还都不对,给的正确答案也很奇怪
      • 后来调试,发现没什么大问题,每个步骤都很对,就是在答案输出错误后下一运算上面显示的数值跟页面不同
      • 后来发现先是没有计算错误后给出提示:正确答案是,给出正确答案后又没有换行,视觉上给人错误
    • 计算除数时,无法整数时,特别是结果为无限小数时。输入什么结果,都是错的,如下图
      • 然后就想着直接让计算能整出的,然后就加了这样的代码
      • 这样的代码就会出现如果遇到不能整除的,自动跳过,但是算作是已经有一题了,导致明明要出4道题,结果就只有3道或者更少
      • 所以最后就在开始的时候,直接判断整除

    4.5 大作业总结
    大作业真的能让人快速理解并掌握已学内容,是一种非常有用的学习方法,就是需要花的时间比较长。它锻炼我们写代码时候的逻辑思维,让我们考虑东西更加全面。对于我而言,的确是有些难度,老师要求的一些拓展部分,我还是没有想出什么行之有效的方法,代码中估计还有许多bug,和还没有考虑进去的问题。它估计还很初步,还很不严谨,希望能在借来学习和一次又一次的大作业中进步,让自己的代码更严谨,自己可以考虑的更全面吧。

  • 相关阅读:
    初步认识三层架构
    机器学习技法总结(六)Decision Tree Hypothesis
    spring 事件模式 源代码导读
    Missing &#39;name&#39; key attribute on element activity at AndroidMan
    【iOS】KVC 与 KVO
    可用谷歌ip地址
    android menu事件
    #103. 子串查找
    P2590 [ZJOI2008]树的统计
    带修改莫队算法
  • 原文地址:https://www.cnblogs.com/056lu/p/9945737.html
Copyright © 2011-2022 走看看