C语言博客作业--函数
2017-11-18 15:55
381 查看
一、PTA实验作业
题目1:使用函数输出一个整数的逆序数
1. 本题PTA提交列表
2. 设计思路
第一步:定义函数与形参即int reverse(int number)第二步:定义变量 int x,result=0;
第三步:当number不等于0的时候,循环第四步到第七步。
第四步:x=number%10
第五步:当number大于10或者小于-10时,result=(result+x)*10
第六步:否则 result=result+x
第七步:number=number/10
第八步:返回result
3.本题调试过程碰到问题及PTA提交列表情况说明
(1)虽然提交列表全对,但我在devc++中调试过,一开始我忘记判断number大于10或者小于-10,导致输出的逆序数会多一个0,即变成正确答案乘10,原因就是在逆序数的最后一位,我也是result=(result+x)*10,通过调试后发现问题,添加判断if(number>10||number<-10)答案正确题目2:求组合数
1.本题PTA提交列表
2.设计思路
第一步:声明fact函数 double fact(int n);第二步:定义变量 int m,n; double result;
第三步:输入m,n
第四步:调用fcat函数 result=fact(n)/(fact(m)*fact(n-m)),进入第六步
第五步:printf("result = %.0f",result)
第六步:定义函数double fact(int n)
第七步:定义变量int i;double result=1;
第八步:进入循环for(i=1;i<=n;i++) 循环第九步
第九步:result=result*i
第十步:返回result的值
3.本题调试过程碰到问题及PTA提交列表情况说明
(1)一开始错误,输入 2 7时答案等于0.000000,通过调试,监控result,发现result参数定义错误,定义成了int,因为在fact函数中同名变量result它只是整数,而在主函数中它是double型的导致错误。(2)阶乘忘记给result初始化为1,导致输出结果为0
题目3:使用函数验证哥德巴赫猜想
1.本题PTA提交列表
2.设计思路
第一步:定义prime函数及形参即int prime(int p)第二步:定义变量并初始化 int i,n;n=sqrt(p);
第三步:如果p为1,则返回0;
第四步:否则进入循环for(i=2;i<=n;i++)循环第四步
第五步:如果p能整除i,则返回0
第六步:return 1
第七步:定义Goldbach函数即void Goldbach(int n)
第八步:定义变量int q,p
第九步:进入循环for(p=2;p<=n;p++)循环第十步和第十一步
第十步:if(prime(p)==1),则q=n-p;
第十一步:if(prime(q)==1) 则printf("%d=%d+%d",n,p,q)并退出循环
3.本题调试过程碰到问题及PTA提交列表情况说明
(1)输出许多形式为n=q+p的结果,通过调试监控n,p,q发现循环没有在输出一次数据后结束,在if里输出后添了一句break就正确了(2)忘记判断p是否为1,如果为1直接就不为素数
(3)一开始Goldbach函数中for(q=1;q<=n;q++),q一开始初始化为1,但1显然不为素数导致错误
二、同学代码结对互评
1.同学互评照片
2.我的代码、互评同学代码截图
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题
思路不同在判断Fibonacci数时,他和我使用了不同的方法,我是通过规律直接求出Fibonacci数,而他只能求出第二项之后的Fibonacci数,所以他在代码里直接添加了第一项的Fibonacci数在输出m到n区间内的Fibonacci数时,他用了嵌套循环,循环m到n间的每个数,判断它是不是Fibonacci数,是的话就输出。而我是先计算小于m的那个Fibonacci数,当Fibonacci数大于m小于n的时候就输出,我只用了一个while循环,他用了for的嵌套循环.
喜好
我更喜欢我的代码,在判断Fibonacci数时我的做法更具有规律性和逻辑性,他是取巧,并且我的变量也比他少,更简洁。在输出m到n区间内的Fibonacci数时,他用两个循环我用一个,所以我的代码比较简洁易懂,不会看乱。
三、截图本周题目集的PTA最后排名
四、本周学习总结
1.你学会了什么?
1.1 C语言哪些数据类型?
有int型,float型,double型,char型,short型,long型,undesigned型,longlong型。1.2 字符型数据需要注意地方?
要注意字符型数据只能保存一个字符,有的时候先输入一个数,再输入一个字符型数据很可能不成功,因为字符型数据很可能已经被保存为回车。1.3 自增自减运算符?
n++,n的值加了1,但n++的值与原来的n相等。++n,n的值加了1,++n的值与现在的n相等。n--,n的值减了1,但n--的值与原来的n相等。--n,n的值减了1,--n的值与现在的n相等。