C语言博客作业--函数

一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路

  • 第一步:调用数学函数

  • 第二步:函数定义 int reverse(int number)

  • 第三步:定义整型变量count=0,i,remainder (余数),inversion=0(逆序数),a(存放number的值)

  • 第四步:a=number

  • 第五步:number=number/10,count=count+1

  • 第六步:当number不等于0时,重复执行步骤5,当numberde等于0时,结束循环,进入下一步

  • 第七步:remainder=a%10,a=a/10

  • 第八步:count=count-1,inversioon=inversion+remainder*pow(10,count)

  • 第九步:当a不等于0时,重复执行步骤7、8,当a等于0时,结束循环,进入下一步

  • 第十步:将inversion的值返回到主函数

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

刚开始输出时,多了一位数,经调试后,发现自己count的位置放错了应该将count放在前面才行

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

1. 本题PTA提交列表

2. 设计思路

  • 第一步:函数定义int fib(int n)
  • 第二步:定义整型变量i,number,a=1,b=1,c
  • 第三步:i=3,i小于等于n
  • 第四步:c=a+b,number=c
  • 第五步:a=b,b=c
  • 第六步:重复执行步骤4、5,直到i>n
  • 第七步:如果n1或n2,number=1
  • 第八步:将number的值返回到主函数
  • 第九步:函数定义void PrintFN(int m,int n)
  • 第十步:定义整型变量k=1,count=0
  • 第十一步:当fib(k)<=n时,进入下一步
  • 第十二步:如果fib(k)>=m并且fib(k)<=n,当count不等于0时,输出空格
  • 第十三步:输出fib(k)的值,count=count+1
  • 第十四步:k=k+1
  • 第十五步:重复执行步骤12-14,当fib(k)>n时,结束循环
  • 第十六步:如果count==0,输出No Fibonacci number

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

最初编写的代码输出给定范围[m, n]内的所有Fibonacci数时,当m、n的数值很大时运行的速度很慢,提交上去后,显示运行超时
后来上网查询了一下,了解了别人的写法,自己又思考了一下,改了代码后就通过了

题目3:求组合数

1. 本题PTA提交列表

2. 设计思路

  • 第一步:函数声明double fact(int n)
  • 第二步:主函数:定义浮点型变量result,定义整型变量m、n
  • 第三步:输入m、n的值
  • 第四步:result=fact(n)/(fact(m)*fact(n-m))
  • 第五步:输出result的值
  • 第六步:函数声明double fact(int n)
  • 第七步:定义整型变量i,定义浮点型变量item=1
  • 第八步:i=1,i<=n
  • 第九步:item=item*i,i=i+1
  • 第十步:重复执行步骤9,当i>n时,结束循环
  • 第十一步:将item的值返回主函数

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

1.函数声明时double fact(int n)刚开始写成int fact(int n),然后就有个测试点过不了,自己又找不出错误,请求同学的帮助后,同学帮我找到了错误
2.item刚开始定义为整型变量,调试时结果不对,自己又重新看了一下代码,改了过来

二、同学代码结对互评

1.同学互评照片。

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

我的代码

梁才玉同学的代码

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

我的代码简洁、执行效率高,而同学的代码长,执行效率低,她用循环的方法,当数值大时,要执行很多次才能判断出来结果,比较不实用
我更喜欢自己的代码

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

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

整型、字符型和实型。实型又分为单精度型float和双精度型double

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

'a'和'A'是不同的字符型常量
字符型常量可以用相应的ASCII码表示,也可以用整数来表示

1.3 自增自减运算符?

++n,先执行n=n+1,再将n的值作为表达式++n的值
n++,先将n的值作为表达式n++的值,再执行n=n+1(- -n、n- -和++n、n++一样)

1.4 运算符优先级?

按从高到低的顺序为:逻辑运算符(!)、算术运算符、关系运算符、逻辑运算符(&&、||)、条件表达式、赋值运算符、逗号运算符
单目运算符>双目运算符

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

算数表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式
第9小题(j=3,j++)
正确答案是3,而我选了4,对于j++理解的不够透彻,应该是先将j的值作为j++的值,然后再执行j=j+1这个步骤,所以(j=3,j++)的值是3,而j的值是4

1.6 其他内容?

double型数据的输入格式控制必须要用%lf或%le
赋值号右侧表达式的类型自动转换成赋值号左侧变量的类型,赋值号右侧表达式的类型比赋值号左侧变量的类型级别高,运算精度会降低

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

对于上机考试的最后一题那种字符型的题目,我还不是很懂,看到题目有点无从下手的感觉,可能对于这种字符型的题目我还需要多加练习

3.循环结构考试总结(全部同学都要写)

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

小于m的最大的10个素数,一不小心括号括错了地方,导致判断素数时,什么也输不出来,自己也没发现错误,后来经老师点拨后知道自己是错在括号的位置不对

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

不满意,素数那题平时就做过好几次判断素数的,但考试时由于自己的不认真,导致自己在这题上花费了太多的时间,后面两题就没时间再做了
下次自己一定会认真点,遇到过不了的,要改变一下自己的策略,先去做其他题目,不能杠上

3.其他总结

经验是不断积累起来的,对于自己做的不够好的地方,一定要好好的反思一下,争取下次不再犯同样的错误。对于自己不懂的地方,一定要勤翻书,多请教同学和老师,这样才能不断的进步。学习是很枯燥,但希望自己能够坚持下去

posted @ 2017-11-18 18:32  hoppp  阅读(341)  评论(6编辑  收藏  举报