这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11500 |
我在这个课程的目标是 | 对函数的定义和调用有初步的认识,能模仿编程。 |
这个作业在那个具体方面帮助我实现目标 | 完成PTA上的作业的过程中、写编程总结 |
参考文献 | C语言程序设计、百度 |
1.PTA实验作业(20分/题)
1.1 求组合数
题目内容描述:
本题要求编写程序,根据公式({C}^{n}_{m})=(frac{n!}{m!(n-m)!})算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),以空格分隔。
输出格式:
按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。
输入样例:
2 7
输出样例:
result = 21
1.1.1数据处理
数据表达:所用变量:n、m、i(整型(int)),product、result(双精度浮点型(double));这些变量的值的来源:n和m是自定义的,i是每循环一次后在原有的基础上加1,product = product * i,result = fact (n) / (fact (m) * fact (n - m))。
数据处理:数据用到的表达式: product = product * i,result = fact (n) / (fact (m) * fact (n - m));流程结构:循环结构。
**函数参数:主调函数:int main();被调函数:fact();被调函数的类型:双精度浮点型(double);实参:i、n、m、n-m(整型);形参:n、m(整型)。**
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 7 | return = 21 | m<n |
3 9 | return = 84 | m<n |
6 9 | return = 84 | m<n |
6 6 | return = 1 | m=n |
0 0 | return = 1 | m=n=0 |
8 6 | return = 0 | m>n |
3 -6 | return = 0 | m>n,n<0 |
-5 3 | return = 0 | m<n,m<0 |
1.1.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
提交列表说明:
1.编译错误:多了一个分号;
解决办法:将多余分号删除。
1.2 求幂之和
题目内容描述:
本题要求编写程序,计算sum=({2}^{1}+{2}^{2}+{2}^{3}+⋯+{2}^{n})。可以调用pow函数求幂。
输入格式:
输入在一行中给出正整数n(≤10)。
输出格式:
按照格式“result = 计算结果”输出。
输入样例:
5
输出样例:
result = 62
1.2.1 数据处理
数据表达:所用变量:i、n、sum(整型(int));这些变量的值的来源:n是自定义的,i是每循环一次后在原有的基础上加1,对sum赋值,然后在循环中计算sum = sum + pow(2,i)。
数据处理:数据用到的表达式: sum = sum + pow(2,i);流程结构:循环结构。
**函数参数:主调函数:int main();被调函数:pow();被调函数的类型:整型(int);实参:i,n,sum(整型);形参:n(整型)。**
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
5 | result = 62 | 0<n<10 |
10 | result = 2046 | n=10 |
-5 | result = 0 | n<0 |
0 | result = 0 | n=0 |
13 | result = 16382 | n>10 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.编译错误:将i++打成了n++;
解决办法:将n改为i。
2.代码互评(5分)
找2份同学代码,和自己代码比较,建议互评代码尽量找代码风格差异较大。
同学代码截图
自己代码截图
1、第一份的代码与我的不同之处:代码的上部分内容与下部分内容所放位置不同,而且他还用了if-else语句说明正整数m要小于等于正整数n,他所写的代码比我自己所写的更严谨;
2、第二份的代码与我的不同之处:他写的代码所用的表达式更多,在输出所需值时,直接在printf中计算得出,而我的直接用result = fact (n) / (fact (m) * fact (n - m))计算得出;
3、第一份代码与第二份代码的不同之处:第一份代码用if-else语句,用一个表达式直接计算出所需结果,第二份代码先用多个表达式计算出所需计算的小部分,再将其合并计算得出所需结果。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第三周 | 4天 | 156 | for语句 | 在综合表达式中,不知道为什么不能用"[ ]" |
第四周 | 2天 | 169 | 函数的定义和调用 | 函数的定义和调用的格式不太懂 |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 638 | 12 |
第二周 | 562 | 97 |
第三周 | 2058 | 156 |
第四周 | 1737 | 169 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
1、本周的学习了函数的调用,写的代码有一些地方与以前不一样了,还不太习惯;
2、通过搜索资料弄明白作业中不懂的地方,又学到了新知识;
3、通过比较自己与同学所写的代码,学习他人的优点;
4、不理解的地方:函数的定义与调用的格式不太懂;
5、对于不熟的地方多加练习。