C语言|博客作业04
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11496 |
我在这个课程的目标是 | 学会自定义调用函数;回顾联系已学的内容;学习优秀代码,找出自己的不足 |
这个作业在那个具体方面帮助我实现目标 | PTA实验作业;学习内容总结:代码互评 |
参考文献 | C语言程序设计 |
学号 | 20209051 |
1.PTA实验作业
1.1害死人不偿命的(3n+1)猜想
卡拉兹(Callatz)猜想:
对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……
我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?
1.1.1 数据处理
数据表达:i,n都为整型,n直接输入数值,i初次赋值后循环累加
数据处理:
表达式:n=(3.0*n+1)/2
流程结构:while结构,if-else结构
函数参数:int main为主函数;i,n为实参
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
3 | 5 | 自定义样例 |
1000 | 72 | 最大 |
1 | 0 | 最小 |
1.1.4 PTA提交列表及说明
提交列表说明:
部分正确:使用do—while语句时,scanf函数返回值被忽略
运行超时:将n赋值,无意义
1.2 求组合数
本题要求编写程序,根据公式算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
1.2.1 数据处理
数据表达:i,n,m都为整型,result,a,b,c为浮点型
数据处理:
表达式:a=fact(n);b=fact(m);c=fact(n-m);product=product*i;
流程结构:for语句循环结构
函数参数:int main (void)为主函数;fact (int n)为调用函数,函数类型为整型;i,a,b,c为实参,product为形参
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2 7 | result=21 | 自定义样例 |
1 9 | result=9 | 结果在double类型范围内 |
9 9 | result=1 | n=m时result最小 |
1.2.4 PTA提交列表及说明
提交列表说明:
编译错误:m,n输入的位置错误m>n,计算无意义;
函数首部后加了“;”
2. 代码互评
- 同学代码(1)
(2)
- 我的代码
- 和两位同学的代码比起来,他们的明显比我的更加简洁,我设置的变量比较多。
- 解决问题的逻辑没有太大的区别,但是我认为我多设定的变量,会使我的逻辑思路更加清晰,便于他人去阅读理解。
- 其次第一份代码中多使用了一次for语句,我觉得可以让代码更加简洁
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第十一周/11.14 | 37h | 475 | while语句循环;自定义调用函数 | 调用函数;pta中scanf函数返回值忽略的问题 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
- 这一周学了自定义和调用函数,但是我还是没有把形参和实参给捋清楚
- 数学逻辑真的特别重要,在设计循环结构中,没有数学逻辑真的不行
- 阅读理解能力真的也很重要,在PTA上做题的话真的需要很认真的把题目的意思给捋出来
- scanf函数的返回值忽略问题是真的没有搞懂