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

1.本章学习总结

1.1思维导图

1475011-20181112225308690-690672176.png

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

1.2.1学习体会

本周学习了函数,其实,函数于之前学习的三大控制结构是密不可分的,而函数又有其特殊的地方,例如:函数的声明、函数的调用等等。我们之前编写程序是将过程写在主函数中,而函数则是将思路过程单独放出来写在主函数的外面,这样编写程序可以使得主函数更加简洁明了,使人阅读起来一目了然。一开始学习函数的时候,我还嫌用函数做麻烦,同样的代码,用函数写起来又长又不方便,觉得调用函数多此一举。后来在学习的过程中,及老师上课的讲解下,明白了:目前我们编写的程序又简单又短,比起调用函数,直接在主函数中编程更加方便。而当我们要编写一个大程序且多次用到同一种运算方法时,调用函数就是一个很好的方法,就可以不用重复多次的编写相同的代码,是程序更加简洁。

1.2.2代码累计

1475011-20181111085650233-848270070.png

2.PTA总分

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

1475011-20181104153914835-271769101.png

2.2 我的总分

函数:145
总分:145

3.PTA实验作业

3.1 PTA题目1

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

3.1.1 算法分析

  • fib( n )函数
定义整型变量i、三个双精度浮点型变量int1=1、int2=1、int3//用于实现Fibonacci数的累加
if n=1 或者 n=2 thenreturn 1 //当n小于3时,返回1
for i=3 to i=n doint3=int1+int2 //int3等于前两个数的和int1=int2 //将第二个数的值赋给第一个数int2=int3 //将第三个数的值赋给第二个数
end for //依此循环,实现Fibonacci数
返回 int3 的值
  • PrintFN( m , n )函数
定义整型变量i=1、flag=1//flag用于判断是否有Fibonacci数
while fib(i)<m do //让Fibonacci数增加到mi++
end while
while fib(i)<=n doflag=0if fib(i+1)<=n then //判断该项Fibonacci数是否为范围内最后一项输出 fib(i) 后输出空格 //不是,则在输出该数后输出空格else输出 fib(i) 后换行 //是,则在输出该项后换行end ifi++
end while
if flag=1 then //没有Fibonacci数输出 No Fibonacci number
end if

3.1.2 代码截图

1475011-20181104154338631-714757246.png

3.1.3 测试数据

  • 测试数据1
    1475011-20181111092014139-2038334374.png

  • 测试数据2
    1475011-20181111092049858-936531153.png

3.1.4 PTA提交列表及说明

1475011-20181104154356098-1831677310.png

Q:部分正确是有什么地方没考虑到吗?
A:一开始没考虑到第二个函数中只有1个1的情况,在另外加上这个条件语句后,这条测试点过了。
Q:中间出现的编译错误是什么情况?
A:第一次部分正确后,在添加条件语句的时候不小心将等号写成了赋值号。
Q:过了该测试点,还有什么问题?
A:之后提交多次发现 最大范围 的那个测试点过不了,之前遇到这类问题,改变一下数据类型就好了,但是我改变了数据类型后,还是一样的结果。在多次尝试未果下,请教了其他同学。但是也不知道为什么过不了,就转换了一下解题思路,换了种方法做,才将题目解出来。

4.大作业

4.1.函数关系图

1475011-20181113165658686-540326329.png

4.2.函数功能介绍

1.友好输出界面函数,供用户查看

输出友好界面,供用户查看,解决非法字符输入问题,专治熊孩子
  • void Menu();//显示菜单
    1475011-20181113175155506-1910940169.png

  • int LevelChoice();//级别选择
    1475011-20181113175226643-1608922421.png

2.随机获取数值、运算符

使得用户做的题目不同,做到随机出题
  • void NumberGet();//获取随机数
    1475011-20181113175447291-12424946.png
  • void OperatorGet();//获取随机运算符
    1475011-20181113175536634-1152380352.png

3.游戏运行主干函数

用于整合各个函数,保证程序运行
  • void GameBegin();//游戏主程序
    1475011-20181113175744295-243750676.png
    1475011-20181113175758828-691308475.png

4.计算函数

计算程序随机给出的题目,用于判断用户答案的正误
  • double Calculate();//题目计算
    1475011-20181113180033082-1850402195.png

5.void Choice();

一轮游戏结束后,选择是否继续游戏 

1475011-20181113180134657-1695069147.png

4.3 运行结果截图

  • 非法输入(专治熊孩子)
  • 情况一
    1475011-20181113170055255-1060768872.png
  • 情况二
    1475011-20181113170126645-50670108.png
  • 正常输入
  • 1
    1475011-20181113170655586-1524812978.png
  • 2
    1475011-20181113170723291-1553169855.png
  • 直接退出
    1475011-20181113221123365-501031724.png

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

Q:是怎么解决熊孩子问题的?
A:最开始的时候,将输入的选项定义成整型,在调试的过程中发现程序无法识别除数字外的非法字符,然后就考虑用字符变量的方法做,改完代码后就可以识别任意的非法字符。在舍友的提醒下,发现还存在着一个bug,万一那孩子特皮,输入了一连串的非法字符该怎么办?后来想到可以用while循环消除掉一连串的非法字符。
Q:在改动非法字符输入的那块程序时,出现了无法输入的情况,是怎么解决的?
A:一开始是懵的,后来突然想到,前面有输出的时候要用一个空格吃掉字符,再进行输入。
Q:一级难度中除法除不尽的情况下,是怎样解决判断正误的问题的?
A:刚开始的时候,全部用整型数据,调试的时候也除法直接取整,觉得一点毛病也没有。后来写着写着突然醒悟,这不是C语言,是小学生的四则运算。然后就把所有数据都改成了double类型的,后来再运行的过程中发现,当除数除不尽的情况下输出正确答案也显示答案错误。经过一番思考,发现电脑中的结果是无限小数,与我们输入的数永远不可能相等。然后我就在想该怎样将无限小数四舍五入成有限的两位小数。第一个反应是强制类型转换,然后经过试验之后发现这个方法是可行的。
(强制转换做法:rightAnswer=number1/number2+0.005;    rightAnswer=1.0*((int)(rightAnswer*100))/100;)

4.5 大作业总结

其实,编写代码就是一个写代码,发现bug,改代码的过程。在写大作业的过程中,写着写着就发现,啊,之前有一种情况又没想到,然后就火急火燎的返回去改,改一次代码就要改动好多地方,改完继续写,这时候又有人提出来会存在怎样的bug,回头一看,哎呀,我也有这样的问题,然后再次大动干戈地改动。编写代码就在反反复复的查看代码,寻找bug,改代码。这是都是需要耐心的。但是在代码完成,已知bug改正完毕之后,一股自豪感又会油然而生。

转载于:https://www.cnblogs.com/Lay-549/p/9904192.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Insta360:从软到硬,一年做出360°全景相机,中间填了多少坑?

摘要刘靖康在大学就开始创业。在大二的时候他曾经去腾讯实习&#xff0c;然后又去了“超级课程表”这个团队实习半年&#xff0c;2013 年 9 月回到南京创业&#xff0c;一开始的产品叫“名校直播”&#xff0c;是一款围绕院校名师讲座所做的视频直播产品。 不久前&#xff0c;一…

No.10 awk、变量、运算符、if多分支

awk、变量、运算符、if多分支 awk语法 ~ awk -F: {print $3,$4} /etc/passwd //-F指定:分隔符 默认以空格作为分隔符 ~ awk -F: {print &0,NF} //$0打印全部,NF有几段内容 ~ awk -F: {print $NF} /etc/passwd //$NF打印最后一段内容 ~ awk -F: {print NR} /etc/passwd…

排序: 选择排序

1. 基本原理 将待排序的元素分为已排序(初始为空)和未排序两组&#xff0c;依次将未排序的元素中值最小的元素放入已排序的组中。 直接选择排序简单直观&#xff0c;但性能略差&#xff1b;堆排序是一种较高效的选择排序方法&#xff0c;但实现起来略微复杂。 2. 直接选择排序 …

全景摄像技术大有可为

网络摄像机发展至今&#xff0c;已经基本满足了“高清”、“日夜监控”、“远距离监控”的需求&#xff0c;但是 随着细分市场的发展&#xff0c;超广角摄像机需求逐渐凸显出来。主要应用在会议室、办公室、大厅/大堂、商场、仓库、车间等大面积开阔的区域&#xff0c;解决原来…

java文件传输之文件编码和File类的使用

---恢复内容开始--- 我们知道&#xff0c;在用户端和服务端之间存在一个数据传输的问题&#xff0c;例如下载个电影、上传个照片、发一条讯息。在这里我们 就说一下文件的传输。 1.文件编码 相信大家小时候玩过积木&#xff08;没玩过也看过吧&#xff09;&#xff0c;看到一个…

arm-linux-gcc:Command not found的问题

标签&#xff1a; ubuntulinux 2015-05-15 10:47 680人阅读 评论(0) 收藏 举报 分类&#xff1a; Ubuntu&#xff08;23&#xff09; /etc/profile gcc&#xff08;9&#xff09; ARM汇编指令&#xff08;4&#xff09; 折腾了一天&#xff0c;终于搞定了。 ubuntu没有roo…

PASTE Splay

题目描述 我们用文本处理器来处理一个特殊的文本文件&#xff0c;该文本文件共有N行文本&#xff0c;每一行文本仅包含一个自然数&#xff0c;第一行为1、第二行为2&#xff0c;以此类推至N行为自然数N。   假设对该文本文件执行一次“剪切和粘贴”操作含义如下&#xff1a;…

Spring---基于Spring IOC的小程序

实现的功能以及各文件间的关系 IHelloMessage&#xff1a;一个接口&#xff0c;用于定义输出问候信息。 HelloWorld、HelloChina&#xff1a;接口的实现类。在这里表示人在不同的地方 Person&#xff1a;一个人物类&#xff0c;调用IHelloMessage接口&#xff0c;向用户输出问候…

MIPI DSI协议介绍

原文地址&#xff1a;http://blog.csdn .NET/qq160816/article/details/19555957 一、MIPI MIPI&#xff08;移动行业处理器接口&#xff09;是Mobile Industry Processor Interface的缩写。MIPI&#xff08;移动行业处理器接口&#xff09;是MIPI联盟发起的为移动应用处理器制…

130242014018-郑志良-第2次实验

一、实验目的 1&#xff0e;熟悉体系结构的风格的概念 2&#xff0e;理解和应用管道过滤器型的风格。 3、理解解释器的原理 4、理解编译器模型 二、实验环境 硬件&#xff1a; 软件&#xff1a;Python或任何一种自己喜欢的语言 三、实验内容 1、实现“四则运算”的简易翻译器。…

【BZOJ 4170】 4170: 极光 (CDQ分治)

4170: 极光 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 121 Solved: 64Description "若是万一琪露诺&#xff08;俗称rhl&#xff09;进行攻击&#xff0c;什么都好&#xff0c;冷静地回答她的问题来吸引她。对方表现出兴趣的话&#xff0c;那就慢慢地反问。在她考…

自动生成web服务器日志解析规则

2019独角兽企业重金招聘Python工程师标准>>> 当前web服务器的多样化使得访问日志的数据清洗变得越来越复杂&#xff0c;企业需要投入专业的数据清洗人员编写数据清洗规则&#xff08;解析规则或者解析正则&#xff09;&#xff0c;或者需要关心web服务器访问日志的生…

mybatis一级缓存二级缓存

一级缓存 Mybatis对缓存提供支持&#xff0c;但是在没有配置的默认情况下&#xff0c;它只开启一级缓存&#xff0c;一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下&#xff0c;我们使用同一个SqlSession对象调用一个Mapper方法&#xff0c;往往只执…

mysql简单创建数据库权限(待修改备注)

CREATE DATABASE web DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;一、环境&#xff1a;CentOS 6.8mysql 5.6二、背景给外包的工作人员提供我司某台服务器的 mysql 中某个数据库的访问权限。之所以要做限制&#xff0c;是防止他们对我司其他的数据库非法进行操作。三、…

ISP 图像传感器camera原理

1、Color Filter Array — CFA 随着数码相机、手机的普及&#xff0c;CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据&#xff0c;常用的有 BGR 模式和 CFA 模式。BGR 模式是一种可直接进行显示和压缩等处理的图像数据模式&am…

51nod 1027 大数乘法

1027 大数乘法基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 0 难度&#xff1a;基础题收藏关注给出2个大整数A,B&#xff0c;计算A*B的结果。 Input第1行&#xff1a;大数A 第2行&#xff1a;大数B (A,B的长度 < 1000&#xff0c;A,B > 0&#xff…

C#如何开发多语言支持的Winform程序

C# Winform项目多语言实现(支持简/繁/英三种语言)有很多种方案实现多语言&#xff0c;我在这里介绍一种最简单最容易理解的&#xff0c;作为教学材题应该从通俗易懂入手。在写这篇文章之前&#xff0c;本来想用枚举窗体对象成员的方式设置语言&#xff0c;但是找不到源代码了&a…

Alpha 冲刺 (2/10)

Alpha 冲刺 &#xff08;2/10&#xff09; 队名&#xff1a;第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬&#xff08;组长&#xff09; 过去两天完成了哪些任务&#xff1a; 文字/口头描述&#xff1a; 1、学习qqbot库&#xff1b; 2、实时保存…

Linux C语言调用C++动态链接库

Linux C语言调用C动态链接库 标签&#xff1a; C调用C库 2014-03-10 22:56 3744人阅读 评论(0) 收藏 举报 分类&#xff1a; 【Linux应用开发】&#xff08;48&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 如果你有一个c做的动态…

HTTP Live Streaming直播(iOS直播)技术分析与实现

不经意间发现&#xff0c;大半年没写博客了&#xff0c;自觉汗颜。实则2012后半年&#xff0c;家中的事一样接着一样发生&#xff0c;实在是没有时间。快过年了&#xff0c;总算忙里偷闲&#xff0c;把最近的一些技术成果&#xff0c;总结成了文章&#xff0c;与大家分享。 前些…