C语言博客作业--函数
一、PTA实验作业。
题目1:6-5 使用函数输出一个整数的逆序数
1.本题PTA实验结果
2.设计思路
-
(1)在reverse(int number)函数内定义并赋值整型变量count=0,i,j,x,a,sum=0,number_copy=number
-
(2)当number!=0时,执行循环 count++;number=number/10;直到number=0时,退出循环
-
(3)将number_copy值赋给number。
-
(4)当i<=count时,执行循环,i=1,x=number%10;a=x;sum=sum+a;number=number/10; i++;直到i>count,退出循环;
-
(5)在(4)中循环嵌套一个循环当j<=count-i执行循环,j=1,a=a*10;j++;直到j>count-i时,跳出循环
-
(6)返回 sum。
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116211734327-926858780.png)![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116211747687-33059471.png)本应该一次循环后number=1234,而其又变成了12340.导致最后的答案变成了0; - ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116212310656-1663506661.png)![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116212321249-915934256.png)调试到最后不管输入什么,都显示的为0;因为当上一个循环结束时,number=0,没有做任何处理直接进入下一个循环,使值为0
-
解决办法:将number=number_copy去掉,这样就能得到去除个位的值,使答案正确;重新定义一个变量来装改变前的number值。再在上一个循环结束后,将原来的值重新赋给number。
题目2:6-6 使用函数输出水仙花数
1.本题PTA实验结果
2.设计思路
-
(1)执行函数narcissistic( int number );定义整型变量 sum=0,i,x,a;
-
(2)将number的值赋给a
-
(3)如果number=10000,返回0值
-
(4)如果number/1000>=1,执行循环,当i<=4时执行'x=number%10;sum=sum+xxx*x;number=number/10;i++';直到i>4时退出循环。
-
(5)否则,执行循环,当i<=4时执行'x=number%10;sum=sum+xxx;number=number/10;i++;'直到i>4时退出循环。
-
(6)如果sum=a,返回1.否则返回0。
-
(7)执行函数PrintN( int m, int n );
-
(8)定义整型变量sum,j,x,i,a。
-
(9)当j=m+1,j<n时,执行循环,a=j,sum=0;
-
(10)如果a=10000,不进行下面操作直接进行下一次循环;
-
(11)如果a/1000>=1,执行循环,当i<=4时执行'x=a%10;sum=sum+xxx*x;a=a/10;i++;'直到i>4时退出循环。
-
(12)否则,执行循环,当i<=4时执行'x=a%10;sum=sum+xxx;a=a/10;i++;'
直到i>4时退出循环。 -
(13)如果sum=j,则输出j的值。
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116213434952-733291143.png)![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116213350265-1041594404.png)![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116213403109-697165257.png)本应该由2开始,他直接将j=359,并跳出循环 - ![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116213739812-2020173968.png)![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116214003031-1938488293.png)![](http://images2017.cnblogs.com/blog/1232112/201711/1232112-20171116214010484-1681267433.png)最后答案没有,并且当j=370,sum不等于已经定义好的370,而只有25,可知x^3
无法用于有关计算
- 解决办法:将j=359改为j=m+1;将x^3改为‘xxx’即可。
题目3:7-1 求组合数
1.本题PTA实验结果
2.设计思路
-
(1)执行主函数int main(void)。定义两个整型变量m,n.浮点型变量result。
-
(2)输入两个变量的值m,n。
-
(3)计算‘result=fact(n)1.0/(fact(m)fact(n-m));’
-
(4)输出printf("result = %.0f",result);保留整数。
-
(5)在主函数的基础上执行fact(int n)函数;
-
(6)在自定义函数内定义整型变量i,浮点型变量result_fact,并赋值为1;
-
(7)当i=1,i<=n时执行循环,计算'result_fact=result_fact*i',直到i>n时结束循环。
-(8)返回result_fact值
3.本题调试过程碰到问题及解决办法
-
碰到的问题:
- ![]上面写的是答案错误,但我带入了多个值,都是正确的,据我估计应该是某个值带入,导致整型与浮点型有了差异。
-
解决办法:将result_fact定义为浮点变量
二、同学代码结对互评(2分)
1.互评同学名称。
- 崔志彬
2.我的代码、互评同学代码截图。
-
6-5
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
-
6.5
-
变量不同;我用的是先得出位数,再利用位数算出逆序数,他是用输出‘个位数*10’+个位然后与之类似的循环;
-
他的代码较为简单,只用了一次循环结构,并且添加了注释;我的相对于他的比较复杂,没有用什么技巧性的方法,比较适合像我这样的一类人
-
他的简便的方法值得我学习,技巧性的思维方式也值得我学习,也要学会使用注释使代码更加的易懂。
-
三、截图本周题目集的PTA提交列表及最后排名。
1.PTA提交列表
2.PTA排名
四、本周学习总结
1.你学会了什么?
1.1 C语言哪些数据类型?
整型(int,long[int],short[int],unsigned[int]等),字符型(char),浮点型(float和double)
1.2 字符型数据需要注意地方?
-
(1)scanf输入时要用%c。
-
(2)赋值时要加' '。
1.3 自增自减运算符?
-- 自减,++ 自增。++n是先赋值在运算,n++是先运算在赋值。
1.4 运算符优先级?
!—— ++,--,+,-,(单目)—— / %——+ - ——< ,<=,>,>=——== ,!=——&&,||——?:——=,+=,-=,*=,/=,%=——,由高到低,由左到右执行
1.5 C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因?
-
赋值表达式,关系表达式,关系表达式,逻辑表达式,条件表达式
-
有关整型变量的相除,如课堂派第六题,x=10/4,我把他当做平常运算格式计算了,正好x为浮点型,所以写错了。
1.6 其他内容?
函数在编程方面的运用,可以使算式变得简便。
2.本周的内容,你还不会什么?
数据结构中有关表达式运算顺序的地方不是很懂。还有就是两种自定义函数的结合运用还是不怎么懂,主要是下一个自定义函数的一部分可以用上一个自定义函数表示,但自己不会表示;还有就是有关字符变量和数字变量的转换还是不怎么会。有时候还会弄混淆。
3.循环结构考试总结(全部同学都要写)
1.哪题做错了,怎么改?
7-5 单词长度。改为就对了。因为之前的代码当只输入一个单词时会输出1“ ”这样的而不是1。
2.考试结果满意么,怎么改进?
不满意,认真完成老师布置的作业和pta,做到每道题目都自己做,自己能够解决。
3.其他总结。
有些题目知道什么地方错了,但dev调试不出来,格式错误不管怎么输,答案都跟例子一样。看不出来。