C语言I博客作业04
| 这个作业属于哪个课程 | 班级的链接 |
|---|---|
| 这个作业要求在哪里 | 作业要求的链接 |
| 这个作业的目标 | 练习本周所学,模仿编程,学习模仿他人代码的优点,总结本次学习 |
| 学号 | 20209014 |
1.PTA实验作业
1.1 求组合数:本题要求编写程序,根据公式C n,m=n!/(m!*(n-m)!)算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
1.1.1数据处理
-
数据表达:运用了double来定义了result与sum,int来定义了m,n,i等变量,而m,n是通过scanf来赋值。
-
数据处理:表达式:运用了关系表达式,赋值表达式,算术表达式,流程结构:顺序结构与循环结构。
-
函数参数:主调函数int main(),被调函数double fact(int n)类型为浮点型,实参为result类型为浮点型,形参为n,m,i,sum类型为整型

1.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 2 3 | result=3 | 取简单数字验算程序 |
| 3 2 | result=0 | 尝试取m>n时是否有值 |
| 8 10 | result=45 | 取复杂数字验证程序 |
1.1.4 PTA提交列表及说明

-
1. 编译错误:因为return的时候没有返回sum,导致多次编译错误。
——解决方法:将return 0改为return sum。
-
2. 部分正确:粗心将n-m写成了m-n
——解决方法:反复查看代码,最终将其揪出。
1.2 求幂之和:本题要求编写程序,计算sum=21+22+23+⋯+2n。可以调用pow函数求幂。
1.2.1 数据处理
-
数据表达:该程序只运用int整型,定义了i,sum,product,n等变量,而n是通过scanf赋值。
-
数据处理:表达式:运用了关系表达式,赋值表达式,算术表达式,流程结构:顺序结构与循环结构。
-
函数参数:主调函数int main(),被调函数double fact(int n)类型也为整型,n与product为实参,而i,sum等为形参。
1.2.2 实验代码截图

1.2.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 2 | result=6 | 取简单数字验算程序 |
| 3 | result=14 | 多次验证程序的可行性 |
| 10 | result=2046 | 取复杂数字验证程序 |
1.2.4 PTA提交列表及说明

- 这个题目做得很成功,在吸取前面的教训以后,几乎是一气呵成。
2.代码互评
同学代码

自己代码
-
比较:1. 对方的代码还可以再简单一点,我觉得不需要再定义x,y,z了,而我直接使用fact()解决了中间变量。
2. 对方的代码是使用的声明再在后续进行编写,而我是直接准备好函数,把主函数放在了后面。
3. 对方的浮点型使用较多,而我整型使用较多。
同学代码

自己代码

-
对比:1. 对方的代码思路与我不太一样,对方直接使用for循环,而我定义一个函数,因此对方的代码比我要简单。
2. 对方的格式可以再进一步改善,如多加空格,能够使代码更清晰。
3.学习总结
3.1 学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 第8周/10.19~10.25 | 12h | 280 | 预习了一下课本,了解代码的样子,并学习了基本代码 | 无 |
| 第9周/10.26~11.1 | 15h | 300 | 了解了基本的常量与变量,与数据类型 | 对于细节有许多不到位,还有对许多知识完全不了解 |
| 第10周/11.2~11.6 | 20h | 350 | if语句和for循环语句的运用 | 就像今天的作业一样,看不懂复杂代码,只能在简单中窥探 |
| 第11周/11.7~11.14 | 16h | 410 | 自定义函数的使用 | 无,但学习态度方面越来越被动 |
3.2 累积代码行和博客字数

3.3 学习内容总结和感悟
3.3.1 学习内容总结



浙公网安备 33010602011771号