C语言I博客作业04
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 提高自身编程能力和学习别人代码的优点补足缺点以及学会进一步总结 |
这个作业在那个具体方面帮助我实现目标 | 编写并总结pta上的习题提高编写能力和总结能力,评论同学代码取长补短,写下本周学习总结等提高总结能力 |
参考文献 | 已知三边求三角形面积公式,《C语言程序设计(第三版)》,《C Primer Plus(第六版)》 |
学号 | 20209027 |
1.PTA实验作业(20分/题)
1.1 数字金字塔
本题要求实现函数输出n行数字金字塔,其中n是用户传入的参数,为[1, 9]的正整数,要求函数按照如样例所示的格式打印出n行数字金字塔,注意每个数字后面跟一个空格。
裁判测试程序样例:
1.1.1 数据处理
数据表达:整数型:i,o,n。i和o用于承载测试数据,n用于承载输入数据。
数据处理:数据表达式:赋值表达式,关系表达式。流程结构:循环结构。
函数参数:主调函数:main
被调函数:pyramid( int n ),整数型。
实参:无。
形参:n。
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
5 | ![]() |
当输入5时将打印出5行的数字金字塔 |
7 | ![]() |
当输入7时将打印出7行的数字金字塔 |
9 | ![]() |
当输入9时将打印出9行的数字金字塔 |
1.1.4 PTA提交列表及说明
1.部分错误:
1.1 格式错误:开始只使用了一个for循环语句,完全无法实现数字金字塔的生成,之后想到了再for循环语句中反复使用for循环语句来达到目的。
1.2 答案错误:由于反复调用for循环语句而没有梳理清楚其循环条件而导致答案错误,之后重新梳理弄清原因是第二个for循环语句中分循环条件为o<=n-1而不是单纯的o<=n。
1.2 三角形判断。
给定平面上任意三个点的坐标(x1,y1),(x2,y2),(x3,y3),检验它们能否构成三角形。
输入格式:
输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1,y1,x2,y2,x3,y3。
输出格式:
若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。
1.2.1 数据处理
数据表达:双精度浮点型:L, A, l1, l2, l3, p, x1, x2, x3, y1, y2, y3。A,L,l1, l2, l3,p用于承载测试数据分别表示面积、周长、三边长和计算海伦公式的p值,x1, x2, x3, y1, y2, y3用于承载输入数据即为三点坐标。
数据处理:数据表达式:赋值表达式,关系表达式,逻辑表达式。流程结构:判断结构。
函数参数:主调函数:main,math。
被调函数:无。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4 5 6 9 7 8 | L = 10.13, A = 3.00 | 输入三点坐标(4,5),(6,9),(7,8)输出其构成三角形的面积为3.00和周长为10.13 |
4 6 8 12 12 18 | Impossible | 输入三点坐标(4,6),(8,12),(12,18)其不能构成三角形 |
7 9 8 9 5 6 | L = 8.85, A = 1.50 | 输入三点坐标(7,9),(8,9),(5,6)输出其构成三角形的面积为1.50和周长为8.85 |
9 5 3 4 6 7 | L = 13.93, A = 7.50 | 输入三点坐标(9,5),(3,4),(6,7)输出其构成三角形的面积为7.50和周长为13.93 |
1.2.4 PTA提交列表及说明
1.部分错误:
1.1 答案错误:编译完成后出现部分答案错误,其检查点提示输入为实数,恍然大悟,因为我之前将所有坐标变量设定为整形,而实数不止有整数还有分数,于是我将坐标变量设定为双精度浮点型变量从而将问题迎刃而解。
2.编译错误:因为应用了海伦公式的表达有些复杂和众多的变量导致了公式的表达错误从而导致了编译错误。
2.代码互评(5分)
所选题目:
根据公式C=n!/m!(n−m)!算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。
同学代码截图
自己代码截图
不同:
1. 排版方式不同,这两位同学的代码较为紧凑,与我的相比可读性较差。
2. 第二位同学的代码是将自定义函数先赋给特定的值再进行计算而我的将其整合到一起,相比较我的更简便但他的更明了。
3. 第二位同学没有养成函数主函数结束后打return的习惯。
4. 两位同学的定义变量不太明确,没注释无法由名知意,缺乏可读性。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
6/10.5-6/10.11 | 9小时左右 | 大约432行 | 输出“Hello World!"及温度转换 | 无 |
7/10.12-7/10.18 | 8小时左右 | 大约471行 | 分段函数中的if-else语句和温度转换表 | scanf语句的使用 |
8/10.19-8/10.25 | 10小时左右 | 大约640行 | for循环语句与乘方表和阶乘表的生成 | 自定义函数的调用 |
9/10.26-9/11.1 | 8小时左右 | 大约640行 | 二分支和多分支结构和if-else及else-if语句还有字符型数据和逻辑运算 | 字符型数据的灵活运用 |
10/11.2-10/11.8 | 10小时左右 | 大约920行 | switch语句 | 无 |
11/11.9-11/11.15 | 9小时左右 | 大约740行 | 自定义函数的使用 | 无 |
3.2 累积代码行和博客字数(5分)
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
经过了这周的编程学习我又掌握了许多编程小知识,特别是最近学习的自定义函数格外有趣,
如果熟练运用就能够编译出很多有趣的程序,
这大大加强了我对C语言的兴趣,还有这周我学习并练习了打字方法,速度有了有质的飞跃且慢慢可以盲打了,funning!