C语言博客作业--函数
一、PTA实验作业
题目1 (6-7)
(1).本题PTA提交列表
(2)设计思路
设计第一个函数判断是否完数int factorsum( int number )
- 定义sum、i;sum初始化归0,循环变量i
- 若number=1,则sum=1
- i=1,当i小于number时循环
- 若number能被i整除,
- sum+=i
- 返回sum的值
设计第二个函数void PrintPN( int m, int n )
逐行输出每个完数的因子累加形式的分解式
- 标志变量flag=1,循环变量i
- for (;m<=n;m++)
- 若m等于1,
- flag=0
- 输出1 = 1\n
- 若
factorsum( m ) == m &&m !=1
- flag=0
- 输出m = 1;
- 进入循环
- i=2,当i小于m时循环,i++
- 若
m%i==0
成立 - 输出 + i的值
- 当内循环结束时再输出换行符
- 外循环结束
- 若
flag==1
- 输出No perfect number
- 函数结束
(3)调试问题及解决方法
发现当number的值为1时会返回0,所以number=1时不会输出1 is a perfect number;并且1 = 1不输出,等于号后面的空格没有输出
加入判断当number的值为1时返回1,循环中当m=1时输出1 = 1并换行
发现输出中的有的数字后边多了一个空格
在printf语句中修改,并对判断输出条件修改
题目2(6-8)
(1).本题PTA提交列表
(2)设计思路
设计第一个函数int fib( int n )
实现输出第t个fib数
- 定义循环变量i,Fibonacci数列初始两数a、b(全为1),count(a+b之和)
- 若
n==1||n==2
, - return 1
- i=3,当i小于等于n时循环,i++
- count=b+a
- b=a
- a=count
- 循环结束
- return count
设计第二个函数void PrintFN( int m, int n )
实现一行中输出给定范围[m, n]内的所有Fibonacci数
- 定义循环变量i,标志变量flag=0
- 当m小于等于n时循环;m++
- i=1,循环终止条件在循环中给出
- 若
m==fib (i) && flag==0
,进入分支 - 若
m==1
, - 输出1 1
- flag=1;
- 回到第一个循环(
break;
) - 若m不等于1,
- 输出m,
- flag=1,
- 回到第一个循环
- 若
m==fib (i) && flag==1
, - 输出空格+m的值
- 回到第一个循环
- 若
fib(i)>m
, - 回到第一个循环
- i循环结束
- 若
flag==0
, - 输出No Fibonacci number
(3)调试问题及解决方法
输出的数不正确,并且,当n等于1或2时,输出的值也不正确
原因在于我没有把n=1、n=2的情况特殊判断,并且先交换了i、j、k的值,导致count=1时k就已经等于3
解决方案:先提出n=1、n=2的情况,使当它们成立时返回1;再把和的式子放在后边来执行
输出可以,但是没有设定跳出条件,所以无限循环,且每个数字后都有一个空格,不符合题目要求,而且,当m=n=1时,输出的结果就不正确
重新调整代码,调用之前定义的函数,当m等于fib(i)且flag=0时:若m等于1,就特殊输出,并且跳出i 的循环等等,就可以实现题目要求
题目3 (7-1)
(1).本题PTA提交列表
(2)设计思路
设计实现组合数计算功能的函数double fact(int n)
- 定义循环变量i,双精度变量result,并将其初始化为1
- i=1;当i小于等于n时循环;i++
result=i*result;
- i循环结束
return result;
主函数int main ()
- 设计变量m、n
- 输入m、n的值
- 若
n==0
, - 输出result = 1
- 若n不为0,
- 输出
fact(n) / ( fact(m) * fact(n-m) )
的值
(3)调试问题及解决方法
用的是int而不是double,导致答案错误
由于没有对n=0做特殊处理,所以输出了result = 0这一错误答案,使n==0时输出result = 1即可
二、同学代码结对互评
1.同学互评照片
2.我的代码、互评同学代码截图
我的代码
他(黄泽彬)的代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
1)不同在于对循环条件的确立,以及变量数的不同
2)他的优势在于能用较简洁的代码去实现题目要求的功能;而我多想了一些,将一些特殊情况单独处理,并且我是使用m作为循环变量,上限是n,他则另取一变量i,使i等于m,我认为可以将i用m取代,这样应该也是可以实现题目要求的;在内循环方面,他的条件是j<=0.5*i,而我的条件是i<m,计算量比他的多了许多。
3)我更喜欢他那种简洁且实用的风格
三、截图本周题目集的PTA最后排名。
PTA排名
四、本周学习总结
1.你学会了什么?
- 整型、字符型、实型
- 加与不加 '' 的字母、数字不相等;字符型变量可以与整型变量转换;转义字符中 \ 的应用;
- ++n与n++、--n与n--的区别
- 运算符的优先级的区别
- 对合法浮点数的定义
- 关系运算符运算顺序从左到右
- 逗号运算符的运算顺序从左到右
2.本周的内容,你还不会什么?
- 位运算符的应用;位逻辑运算符的使用:如位非运算的具体使用
- 移位运算的三种方式的的实际应用
3.循环结构考试总结
(1)哪题做错了,怎么改?
7-3 二进制的前导的零
- 开始思路错误,以为要先将十进制数转为二进制数再循环去末位得到位数,再用32减去得到的位数
- 回去分析二进制和十进制之后发现只要使十进制数每次除2并使计数变量+1,最后得到的计数变量的值就是该十进制数转换成二进制之后的位数,再用32减去计数变量就能得到最后结果
- 然后错在当十进制数为负数
- 由于负数在转换为二进制数时需要进行反码,即1变成0、0变成1,所以此时应输出0
- 以及当输入的数是0时,和负数一样做特殊处理,应输出32
7-5 单词长度
- 第一次出错在于“空句子”和“开头结尾多空格”、“连续多空格”
- 加入另一个字符串变量b,使其初始化为空格符,用来记入前一个字符;若前一个字符为空格,且现字符为空格,则不输出,解决“连续多空格”问题
- 再加入标志变量flag,用来控制空格的输出,但是并没法解决问题
- 在循环外加入判断,当b!=' '时输出字符个数,并且前面做对应修改,解决“空句子”问题
- 用了各种各样的方法和语句尝试了两个多小时,不是“开头结尾多空格”问题就是“连续多空格”问题, 最后发现只要在原来的代码里的flag的判断中加入b!=' '的判断就可以实现
(2)考试结果满意么,怎么改进?
不满意,多做题多思考,锻炼对题目的灵敏感觉,学会灵活运用所学知识解决问题
(3)其他总结
- 通过这次的考试,我发现我对循环语句的掌握还是不够,总是在一些细节的地方犯错;
- 以及对于将其他语句同循环语句结合也是一般,经常的以为能把它们没有出错的结合起来就行了,对于这个过程中花费的时间不是很在意
- 思路的差异是解题速度不同的原因之一,我应该要多锻炼自己的思路的可行性和严谨性,去观摩和学习大神的代码
C语言博客作业--函数的更多相关文章
- C语言博客作业——函数
一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...
- C语言博客作业--函数嵌套调用
一.实验作业(6分) 本周作业要求: 选一题PTA题目介绍. 学习工程文件应用,设计实现学生成绩管理系统. 学生成绩管理系统要求 设计一个菜单驱动的学生成绩管理程序,管理n个学生m门考试科目成绩,实现 ...
- C语言博客作业—函数
一.PTA实验作业 题目1:使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1)首先定义函数narcissistic(number)判断number是否为水仙花数: (2)narc用 ...
- C语言博客作业--函数 陈张鑫
一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...
- C语言博客作业—函数嵌套调用
一.实验作业 1.1 PTA题目:递归法对任意10个数据按降序排序 1.1.1设计思路 void sort(int a[],int n) { 定义整型循环变量i,中间变量temp,最小值min: 令m ...
- C语言博客作业06——结构体&文件
C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...
- C语言博客作业6---结构体&文件
C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...
- C语言博客作业5--指针
C语言博客作业5--指针 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里 ...
- C语言博客作业3--函数
C语言博客作业3--函数 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...
随机推荐
- ASP.NET Core 新核心对象WebHost(一)
以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...
- eclipse -解决Unhandled event loop exception GC overhead limit exceeded
今天第一次遇到这个问题, 拿出来和大家分享一下. 首先说明下我发现这个错误的过程, 看下面的三张图片 1,在本地weblogic发布项目的时候 2 , 等待一段时间, 出现以下错误 3 , 点击上 ...
- DELL XPS 13 9350 装Win7系统(坑爹)
0.记一次悲惨的装机记录 1.为什么这么难装呢? 因为这个NB本身是为Win10设计的,所以官网没有Win7驱动,系统设置各种不兼容 2.希望你能看到本文最后 因为你看到最后,你就不会给这个逗比装Wi ...
- RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
Get Network Connection Status关键字用来获取手机的网络连接状态.在获取到连接状态后,会返回不同的数字. Set Network Connection Status关键字用来 ...
- Css3关键帧动画
@keyframes设置动画规则,可以理解为一个剧本: 1.name动画的名字必需填写 2.可以使用百分比0%-100%或者from...to...必填内容: 3.需要变化css的样式:必需: ani ...
- HAproxy负载均衡
HAproxy 简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这 ...
- linux 下oracle 11g静默安装(完整版)
1.操作系统及Oracle版本Linux版本:CentOS release 6.5Oracle版本:Oracle Database 11g Release 2 (11.2.0.1.0) for Lin ...
- Redis主从配置及HA方案
首先说下主从同步Replication的原理 在Slave启动并连接到Master之后,它将主动发送一条SYNC命令.此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后 ...
- Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入
一.目标 实现在Linux下用pycharm调试工具/Python开发 Linux使用vi/vim工具写Python,缺点:调试不方便,无代码提示.跳转等诸多功能. Windows使用idle/pyc ...
- Anaconda更新源
国内的网络连接Anaconda的官方源,速度基本为0,大部分时间是连接不上的.国内清华大学有对应的镜像源,可以更改为对应的源. 命令行中运行以下代码即可添加 Anaconda Python 免费仓库: ...