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

    1.本章学习总结

    1.1思维导图

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

    1.2.1学习体会

    • 经过两周的学习,开始接触了“函数”这个高大上的概念,经过思考……开始意识到学习计算机语言是一个发现问题,分析问题,解决问题的过程。
    • 刚开始学习函数的时候,感觉函数是一个很高级的东西,后来才意识到,我们在学习C语言的时候就一直在用函数,只不过我们用的函数都是编译器自带的函数定义,当我们的目的是编译器自带函数解决不了的时候,我们就开始自己定义函数。后来的数据类型课上,老师稍微地也提到了数组——有的时候计算机提供的变量定义范围不能满足要求的时候,定义数组来满足要求。
    • 函数就好比是一块块积木,把一块块积木搭建起来,也就建成了程序的大厦。在以后的学习中,可以把一些常用的函数写出来,存在一个文件夹里,随时调用……

    1.2.2代码累计

    PTA总分

    2.1排名截图

    2.2我的总分:

    145

    3. PTA实验作业

    3.1 使用函数输出指定范围内的Fibonacci数

    • 本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
    • 其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。如果给定区间内没有Fibonacci数,则输出一行“No Fibonacci number”。

    3.2 算法分析

    int fib( int n );
    定义循环变量i,输入n,定义三个值储存连续的斐波那契数;
    for i=1 to n
      if n1||n2 return 1
      end if
       f1=f2;
       f2=f3;
       f3=f1+f2;
    end for
    return f3;

    void PrintFN( int m, int n );
    定义i=1,表示第i个斐波那契数,范围为【m,n】
    while(1)
      if fib(i)<=n&&fib(i)>=m
      输出fib(i)
      end if
       i++;
      if fib(i)>n//超出范围
      break;
    end while

    3.1.2代码截图

    3.1.3测试数据



    3.2.4提交列表

    • 部分正确
    • 在第一个函数输出斐波那契数的时候没有对f3赋初值,或者是第一个函数的返回值没有写成f3,而是f2……
    • 运行超时
    • 时间有点久了,好像是乱注释把有用的注释掉搞得,进不去第二个函数。

    4大作业

    4.1函数关系图

    4.1.1 main()

    主函数,显示菜单。

    4.1.2void Degree1() 一级运算

    用时间函数产生随机数,用产生的随机数取余4产生随机的1,2,3,0,switch产生随机的运算符。

    4.1.3void Degree2()&void Degree3() 二级三级运算

    二者差不多,只显示一个吧
    result逐步运算结果,两个switch产生两个随机运算符

    4.1.4RightMessage()&WrongMessage() 提示正确或错误信息

    调用时间函数,可以使生成的信息随机(感谢课堂派,可见代码交流的重要性)。

    • 时间函数是个好东西,可以用于生成随机数,配合%使用可以生成一个范围的数,再配合switch的使用,可以生成随机的任何东西。
    • 可以算正答率,并根据正答率输出对应信息。

    4.3测试结果

    4.3.1菜单

    4.3.2回答正确

    4.3.3回答错误

    4.3.4错误输入

    正答率

    突然觉得最后显示正答率信息的时候有出现菜单有点不好看,做出更改,加一清屏函数。

    4.4遇到的问题以及解决方案

    Q1:输入做题数目后,程序竟然是死循环。
    A1:在输入难度等级的是时候,我用了一个do-while来解决不合法输入的问题,但是while循环条件写错,导致了只要输入正确,就会继续循环…………我不死循环谁死循环。
    Q2:怎么生成随机运算符?
    A2:有问题,问度娘……结果进了数组的坑…………不过最终失败了……最后突发奇想用switch。
    Q3:清屏函数的使用。
    A3:清屏函数的使用摸索了好长时间,因为它一清就是全屏伤害,把握清屏函数的位置是一门艺术。

    4.5大作业总结

    • 别人在写程序,而我在写BUG。写完程序之后编译,错误列表前所未有之多,程序还是编写边调,写完一个调一个比较好。
    • 以前一直在PTA上做题,对程序界面友好这个概念并不是很重视,写完大作业之后,意识到界面提示的重要性,不然使用者真的很懵。
    • 在四则运算中,最棘手的还是除法,至今我还没解决如何解决除数为零的问题,本来我用了一个if来使除数不为零,但是如果除数为零,会导致“/”不能正常输出,程序一个2 0=的情况,程序有待优化,希望同学们可以提出解决方向让我借鉴一下。

    PS 对除法运算结果无意义的优化处理

    部分代码截图

    优化后

    优化前

    如果除法运算不能满足要求的话,如果不进行优化那么会出现没有运算符的情况。
    更改之后,将除法改成除法,到时可以算是解决问题还是希望同学们能提一下意见。

  • 相关阅读:
    Type Safety and Type Inference
    LEARN SWIFT
    swift 类型备份
    Swift
    associatedtype关联类型
    深入理解 Swift 派发机制
    Swift中self和Self
    Postfix Self Expression
    CGContext与上下文
    eeee
  • 原文地址:https://www.cnblogs.com/qsls8643/p/9941100.html
Copyright © 2011-2022 走看看