C语言第五次博客作业--函数
一、PTA实验作业
题目1:6-2 简单实现x的n次方
1. 本题PTA提交列表
2. 设计思路
(1)定义函数 mypow( double x, int n )
(2)定义整型变量i为循环变量,浮点型变量sum为阶乘的积
(3)for i=1 to n 重复下面步骤
(4)计算sum=sum*x
(5)返回sum的值
3.本题调试过程碰到问题及PTA提交列表情况说明
初始代码是这样的:提交错误为段错误
第二天学霸室友告诉说要用for循环和一个求阶乘的变量,然后我就添加了一个for循环,但是并没有正确,因为我的返回值没有正确,也没有给sum赋值,错误代码如下:
她看了我的代码无奈的解释道,这个题不用输出,已经定义的变量不用再定义一次,再次改正,还是没有正确,然后就开始调试,运行及调试过程如下:
不管i 为多少sum一直都是0,后来把sum定义为浮点型才算正确,正确代码如下:
一步步下来发现自己的代码离正确代码十万八千里,不知道用for循环,没有重新定义新的变量,没有赋值,输出和返回值也错得一塌糊涂,我不是很明白返回值是什么意思,为啥要返回?又该如何返回?返回给谁?
题目2:使用函数判断完全平方数
1. 本题PTA提交列表
2. 设计思路
(1)函数接口定义int IsSquare( int n )
(2)int i放循环变量,m放输入的一个整数,M放完全平方数
(3)赋值m=1,M=1
(4)输入一个整数m,当i<=m时,重复循环
(5)如果m*m==M,返回1,否则,返回0
3.本题调试过程碰到问题及PTA提交列表情况说明
初始代码:
编译的时候要输入两个以上的数据,但是又只能识别一个数据,要么是前面的YES,要么就是后面的No,如上图所示
PTA提交列表为部分正确,根据提示好像是少考虑了m负数的情况了,但是改着改着改成了编译错误
题目3:400~499 中4出现的次数
1. 本题PTA提交列表
2. 设计思路
(1)int integer放整数,i放循环变量,count放4的次数,single放个位数字,ten放十位数字,hundred放百位数字
(2) 分别求个位十位百位的值, single=x%10; //整数取余得到个位数// ten=x/10%10; //除10再取余得到十位数// hundred=x/100; //除以100得到百位数//
(3)个位为4,十位和百位不为4,十位为4,个位和百位不为4,百位为4,个位和十位不为4,则4出现的次数为1次
(4)个位不为4,十位和百位为4,十位不为4,个位和百位为4,百位不为4,个位和十位为4,则4出现的次数为2次
(5)个位十位百位都为4,则4出现的次数为3次
(6)个位十位百位都不为4,则4出现的次数为0次
(7)返回count
3.本题调试过程碰到问题及PTA提交列表情况说明
第一次没有仔细检查符号标点等细节造成编译错误,第二次是答案错误,因为没有考虑count=0的情况,也没有在每个if的后面加上count,补上之后就正确了,代码过程如下:
题目4:求组合数
1. 本题PTA提交列表
2. 设计思路
(1)int m,n; double result;
(2)输入m,n
(3)调用函数求阶乘 fact(n); fact(m);fact(n-m);
(4)根据公式计算结果 result=fact(n)/(fact(m)*fact(n-m));
(5)result = 组合数计算结果”输出
(6)定义求组合数函数
(7) int i为循环变量, double sum实现累乘
(8)当i<n,重复循环,sum=sum*i
(9)返回sum
3.本题调试过程碰到问题及PTA提交列表情况说明
(1)调用函数求阶乘的时候只调用了一个,没有对sum赋值,
(2) 计算result=fact(n)/(fact(m)*fact(n-m))没有把除号后面括起来,导致结果很大
(3)定义变量的时候想太多,以为很复杂,所以定义了很多个循环变量
(4)result = %.0f和result = %f的区别
二、同学代码结对互评
1.同学互评照片
2.我的代码、互评同学代码截图
我的代码:
雅慧的代码:
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?
我和雅慧代码不同在我的多,她的少
我的优势是变量定义得比她的详细,她的优势是代码少,清晰,她用了for循环,而我没有
我更喜欢她的风格,但是她的代码我没看懂,我的我看懂了
三、截图本周题目集的PTA最后排名
四、本周学习总结
1.你学会了什么?
c语言的数据类型有整型,浮点型,字符型。
字符型数据不能乱打空格,因为空格也算一个字符
自增自减运算符的运算对象只能是变量,不能是常量或表达式,n++和n--都相当于n=n+1,但是n++的运算顺序是先将n的值作为表达式n++的值,再执行n=n+1,++n的运算顺序是先执行n=n+1,在将n的值作为表达式++n的值。n--和--n 同理
2.本周的内容,你还不会什么?
二进制,十进制和十六进制,补码反码原码,运算符和表达式,l例如a+=a-=a*a总是会算错
3.循环结构考试总结
1.哪题做错了,怎么改?
一个题都没做对,不知道要怎么办了都
2.考试结果满意么,怎么改进?
不满意,还是学不会啊,谁能教教我怎么改进