第三次作业----函数

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,和还没有考虑进去的问题。它估计还很初步,还很不严谨,希望能在借来学习和一次又一次的大作业中进步,让自己的代码更严谨,自己可以考虑的更全面吧。

posted on 2018-11-13 16:32  白居过隙巍澜可期  阅读(227)  评论(0编辑  收藏  举报

导航