C语言第五次博客作业--函数

一、PTA实验作业

题目1:6-2 简单实现x的n次方

1. 本题PTA提交列表

1233806-20171113231259718-393192299.png

2. 设计思路

(1)定义函数 mypow( double x, int n )
(2)定义整型变量i为循环变量,浮点型变量sum为阶乘的积
(3)for i=1 to n 重复下面步骤
(4)计算sum=sum*x
(5)返回sum的值

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

初始代码是这样的:提交错误为段错误
1233806-20171113232238093-676449273.png
第二天学霸室友告诉说要用for循环和一个求阶乘的变量,然后我就添加了一个for循环,但是并没有正确,因为我的返回值没有正确,也没有给sum赋值,错误代码如下:

1233806-20171113233552406-1090671991.png
她看了我的代码无奈的解释道,这个题不用输出,已经定义的变量不用再定义一次,再次改正,还是没有正确,然后就开始调试,运行及调试过程如下:
1233806-20171113234045656-2043636974.png
1233806-20171113234140031-125120848.png
不管i 为多少sum一直都是0,后来把sum定义为浮点型才算正确,正确代码如下:
1233806-20171113234352999-1074431762.png
一步步下来发现自己的代码离正确代码十万八千里,不知道用for循环,没有重新定义新的变量,没有赋值,输出和返回值也错得一塌糊涂,我不是很明白返回值是什么意思,为啥要返回?又该如何返回?返回给谁?

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

1. 本题PTA提交列表

1233806-20171115173253015-984120239.png

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提交列表情况说明

初始代码:
1233806-20171115174646109-895773457.jpg
1233806-20171115174745952-2103624275.jpg
编译的时候要输入两个以上的数据,但是又只能识别一个数据,要么是前面的YES,要么就是后面的No,如上图所示
PTA提交列表为部分正确,根据提示好像是少考虑了m负数的情况了,但是改着改着改成了编译错误

题目3:400~499 中4出现的次数

1. 本题PTA提交列表

1233806-20171115233536531-2063007076.png

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,补上之后就正确了,代码过程如下:
1233806-20171115234900265-1696421357.jpg

1233806-20171115234923781-1739863069.jpg

题目4:求组合数

1. 本题PTA提交列表

1233806-20171118165821593-1610594392.jpg

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的区别

1233806-20171118172902968-905851450.jpg

二、同学代码结对互评

1.同学互评照片

1233806-20171118220134515-1252366345.jpg

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

我的代码:
1233806-20171118220328156-1477251700.png

雅慧的代码:
1233806-20171118220409249-839154991.png

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

我和雅慧代码不同在我的多,她的少

我的优势是变量定义得比她的详细,她的优势是代码少,清晰,她用了for循环,而我没有

我更喜欢她的风格,但是她的代码我没看懂,我的我看懂了

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

1233806-20171118220043140-1198294834.jpg

四、本周学习总结

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.考试结果满意么,怎么改进?

不满意,还是学不会啊,谁能教教我怎么改进

转载于:https://www.cnblogs.com/danzhai/p/7829132.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值