• C语言博客作业03--函数


    1.本章学习总结


    1.1 思维导图

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

    1.2.1 学习体会

    • 函数的学习能够大大的简化主函数,使程序看起来更加清晰明了。其实在循环结构和分支结构中,就已经学习了一些数学函数的调用。在正式的函数学习中,则初步掌握了自定义函数的设计与运用,能够自主设计一些函数来简化程序。
      需要注意的是函数结构的一些格式以及函数调用的步骤。初步学习,在函数的调用上常出现问题,源自对于函数调用流程的不熟悉与理解的不透彻。要理解实参与形参的关系,return值的意义。同时需要掌握一些变量的运用,平衡利弊,选择适合的变量(全局变量/局部变量/静态变量),熟悉不同的变量的作用范围与时间。
      了解函数的规则,如传参方向等,能够较为清晰的掌握变量在运行过程中数值的变化。

    1.2.2 代码累计


    2. PTA总分

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

    2.2 我的总分:

    • 总分:145

    3. PTA实验作业

    3.1 PTA题目1

    本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。

    3.1.1 算法分析

    int fib( int n );
    
    定义item项目,num1第一个数字,num2第二个数字,i项数 
    	if n==1||n==2 then item=1
    	end if
    	if n>=3 then 
            for i=3 to n do
    		item=num1+num2;//前两项和 
    		num1=num2;//更新前两项值 
    		num2=item;
    	end if
    	return item;
    
    void PrintFN( int m, int n );
    
    定义i总项数,flag=0,j项数,item项目
        while fib(i)<10000  //输出所有的数 
    	i++;
    	for j=1 to i
    		item=fib(j); 
    		if n<item<m &&flag==0
    		then 
    			printf item; 
    			flag=1;//控制空格
    		end if 	
    		if n<item<m &&flag==1 //在区间内第二个数,且区间两端不相等 
    		then 
    			printf 空格+item 
    		end if 
         end while
    		
    	if(flag==0)//无输出 
    	printf 没有F数
    	end if 
    

    3.1.2 代码截图

    3.1.3 测试数据

    3.1.4 PTA提交列表及说明

    • Q:最小区间答案出现错误
    • A:当区间为[1,1]时,应该输出两个F数

    4.大作业

    4.1.函数关系图

    4.2.函数功能介绍

    • 定义

    1.函数1&2

    • 为了使主函数更加简洁并具有可读性,所以直接将菜单和结果的统计装进函数里。

    2.函数3&4&5

    gradeA&gradeB&gradeC[ABC三个等级]
    • 题目设定:答完并答对十题结束游戏
    • 采用while循环限定答题次数,如果想随时随地停止输入6666,要是想不限条件,可以改成while(1)
    • A等级为个位数的加减,产生随机数,利用%号限制位数,产生x,y两个值,对其进行输出与运算
    • 输出提示(式子)
    • 再产生一个随机数,利用switch case,随机进行加减乘除的运算。
      因为三个函数内容相似,便只展示gradeA一个函数

    3.函数5&6&7&8

    plus&minus&multiply&divide[加减乘除]
    • 为了更灵活调动函数,所以根据功能直接分装成4个函数。
    • 除法,先判断除数y是否为0,如果除数为0,则跳过,进入下一轮。
    • 为了保证输入不被除数字外的其他非法字符干扰,因此利用fflush(stdin)清空输入缓冲区;
    • 输入答案
    • 利用while循环判断,当答案正确时,输出正确提示信息,答案错误时,输出错误提示信息,并再次输入数字,直到答案正确。
    • 这里之前出现过一个很神奇的bug,不定期的会输出两边菜单,不过骂骂就好了,后来突然想到可能是因为判断除数条件的时候没有清屏导致der
    • 利用判断输入值6666,控制条件直接跳出循环跳到endingw
    • 引用暂停指令缓冲 pause
    • 清屏进入下一题。
      因为函数功能类似,这里只展示除法函数
    • fine!!这里做一个更正划重点!!!
      相较之前的代码在除数为0的情况下要清屏!!!否则碰到除数为零会重复输出鸭!!!之前思考了很久都不知道哪里出问题!!!

    4.函数9&10

    错误信息和正确信息
    • 产生随机数
    • 利用switch case随机输出提示信息

    4.3 运行结果截图

    版本1

    版本二 fine 我来更新一下程序,增加了一个答错三次提示正确答案,输入6666直接退出的功能

    输入错误

    答对

    答错三次输出正确答案

    输入非法字符

    • Fine.在纠结是否要计算执行时间这方面纠结了一下下 但是发现程序末尾系统自带了一个执行时间execution time就没有再加上这个功能啦
    统计结果

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

    • Q:输入错误的答案,没有出现相应的提示语,再次输入才出现
    • A:在错误信息的提示函数中,随机产生0 1 2 3四个数,但是少写了2对应的case,增加上即解决这个问题
    • Q:在菜单选择时,输入非A B C程序无响应
    • A:对于非法数据的处理,首先使用while循环,使菜单重复输出,用if判断,如果输入正确,break跳出循环清屏;反之,清屏输出提示语句,再次输入。
    • Q:输入答案时,输入非法字符,程序进入死循环
    • A:为了解决这个问题,尝试了不同的写法,也问了学长学姐。一开始考虑采用和PTA二进制写法类似的写法。利用循环,getchar挨个输入判断,再利用 num=num*10+ch-’0’转数字。因为涉及的地方比较多,位数不固定,所以就比较麻烦,尝试了几次就放弃了这种做法。然后尝试调用fflush(stdin)语句清空缓存区,解决了这个问题
    • A:在输出正确率时,无法输出%号
    • Q:百度后得知需要printf(“%%”);方可

    4.5 大作业总结

    • 花了一定的时间去制作思维导图,但是真的开始写大作业的时候,还是有些手足无措。
    • 联想到上次课堂派的最后一题,就先去仔细研究了一下课堂派那题的代码。在错误信息和正确信息的产生上,参考了课堂派的写法。为了使函数的调用更加灵活所以将+-*/都分开写,起初为了确认函数的书写无误,便先写了一个+函数试水(除法函数为了便于输入答案,全部以int类型计算)。调试通过后,就相应的写出另外的几个函数,再讲几个函数进行分装到不同的等级,对应不同的随机数。为了使函数更加简洁,引入了全局变量。分装完毕为了使函数看起来更加直观这个时候再写入menu和ending。简陋的程序雏形出现后,再进行美化和功能的拓展。
    • 相比从开始写,我选择了更倾向于自己第一感觉的倒序写法,便于第一时间发现错误。(一开始也考虑顺序写,但是顺序写函数套函数,无法第一时间判断函数的正误)。这样的写法使整个写代码过程过的相对比较顺利,比较快的能够出现一个雏形。大作业给我的最深刻的启示就是——千万不要想太多,先把基础的框架写出再做修改。否则只会想想想想越想越乱。另外比较重要的一点是,尝试不同的数据。刚开始写完,没有发现一些可能使程序瘫痪的地方(因为就是按着程序提示写),给同学试了一下程序之后发现了问题,在这个方面,以后要多加思考。总的来讲,写大作业的过程比写pta还是要快乐一些,真的实现了实用性的功能,希望再接再厉,多拓展功能。
    TIPS:
    • 由比较简单的函数写起,再装进复杂一些的函数中
    • 程序需要有一定的应付非法字符的能力,自我调整
    • 程序需要有一定的提示信息
    • 要能够做到重复输入
  • 相关阅读:
    Jquery里live事件移除原因
    js委托事件-addEventListeners(冒泡方向)
    后端同同不肯给我算好的时间差给我,只好自己写了:
    js滚动到顶部底部代码
    浏览器地址栏运行HTML代码(谷歌)
    黑马vue---56-58、vue组件创建的三种方式
    黑马vue---46、vue使用过渡类名实现动画
    黑马vue---28、vue中全局过滤器的基本使用
    vue devtools无法使用
    红心点赞效果的实现
  • 原文地址:https://www.cnblogs.com/salcious/p/9941199.html
Copyright © 2020-2023  润新知