C语言博客作业--函数

一、PTA实验作业

题目1:使用函数判断完全平方数

1. 本题PTA提交列表

2. 设计思路

  • 1.函数定义,定义n为形参
  • 2.用sqrt(n)==(int)sqrt(n)判断根号n的结果是否为整数,如果是,返回1
  • 3.不是则返回0

3.本题调试过程碰到问题及PTA提交列表情况说明

本题并没有遇到什么大问题,因为此题比较简单,想了一会儿就想到可以用强制类型转换来判断一个数是否为整数。

题目2:使用函数输出指定范围内的Fibonacci数

1.本题PTA提交列表

2.设计思路

fib函数:

  • 1.定义变量i,a,b,result
  • 2.第一项和第二项都为1
  • 3.result=a+b;a=b;b=result;
  • 4.重复第三步,直到i<=n,求出第n项的值并返回

PrintFN函数:

  • 1.定义变量i,j,count
  • 2.当范围包括1时,1有两个,所以先输出1个1
  • 3.判断fib(j)==i,如果成立,则count++;否则执行第5步
  • 4.判断count==1,如果成立,输出i,否则输出一个空格再输i
  • 5.判断fib(j)>i,如果成立,跳出循环
  • 6.重复第3步
  • 7.重复第6步,直到i<=n
  • 8.判断count==0,如果成立,输出No Fibonacci number

3.本题调试过程碰到问题及PTA提交列表情况说明

第一次提交到pta上时,很意外,居然提示运行超时,检查代码并运行后发现循环的次数太多了,导致运行时间太久;再次提交,还是有两项错误点,分别是fib(1)和fib(2)答案错误,这一点我调试了很久都没有调出来,于是就去找舍友讨论一下这个问题,发现当范围包括1时,要输出两个1,这一点我一直都没有发现,可能我对题目的理解有误。

题目3:使用函数输出一个整数的逆序数

1.本题PTA提交列表

2.设计思路

  • 1.函数定义,number为形参
  • 2.定义变量a,b
  • 3.a=number%10;取出每一位数
  • 4.b=b*10+a;
  • 5.number=number/10;去掉每一位数
  • 6.重复第3步,直到number==0
  • 7.返回b的值

3.本题调试过程碰到问题及PTA提交列表情况说明

刚开始做的时候,思路想的很复杂,导致做不出来,自己也快被弄乱掉了,总想着要先把每位数提取出来后就直接乘上相应的倍数,后来理了一下自己的思路,发现用b=b*10+a,一位一位的乘上去就很简单的可以实现逆序。

二、同学代码结对互评

1.同学互评照片

2.我的代码、互评同学代码截图


3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题

我的代码是有点取巧成分的,比如当范围包括1时,我会先输出一个1,而周炳辉的代码就不同,他的代码我感觉比我的好,他把n之前的Fibonacci数都输出来,就避免了当范围包括1时,只输出一个1的错误情况;还有我求第n项的Fibonacci数时也是先输出已知的前两项;相比之下,我更喜欢周炳辉的代码,他的代码比较有逻辑性。

三、截图本周题目集的PTA最后排名

PTA排名

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

整数类型(短整型,长整型),浮点型(单精度,双精度),字符型

1.2 字符型数据需要注意地方?

字符型数据要加单引号,用scanf()输入要用%c,也可用getchar输入,输入字符型数据时要小心可能会把并不想输的空格或换行符给读进去了。

1.3 自增自减运算符?

++n,n++都相当于n=n+1,但++n的值为n+1的值,而n++的值依然为n;n--和--n同上。

1.4 运算符优先级?

1.5 C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因?

C语言有算术表达式,赋值表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式。
课堂派函数部分因为弄不清楚局部变量的作用范围而导致错误

1.6 其他内容?

学会了函数的知识,了解了全局变量和局部变量,全局变量最好不要用,否则很容易导致各函数间互相干扰;还学会了变量生存周期和静态局部变量。

2.本周的内容,你还不会什么?

对于进制转换问题还有点不懂,还有对于位运算还不熟练,还需多加练习。

3.循环结构考试总结

1.哪题做错了,怎么改?

单词长度这一题做错了。在考试时,这题运行时看起来都没错,后来发现原来在当字符串尾部有多个空格时,输出的时候尾部也会有一个空格,这是不符合题目要求的,调了好久,后来干脆重写一遍,有了前面的经验,再做一遍感觉思路就比较清晰,做了一会儿就做出来了。

2.考试结果满意么,怎么改进?

我对于这次考试并不满意,最后一题没能做出来,其中有一部分原因是我在做第一题时就卡住了,做了很久才做出来,这浪费了我很多时间,导致我后面的题目没时间做;而且当我第一题卡住时,我越做越着急,思路就开始混乱了,以后遇到这种情况要冷静,不能着急,越着急越做不出来,试试先做别的题目冷静一下,再回过头来做可能就会有一种恍然大悟的感觉。

posted @ 2017-11-18 12:13  久念  阅读(391)  评论(6编辑  收藏  举报