C语言I博客作业05
作业头
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11533 |
我在这个课程的目标是 | 学会分支结构,本次作业拿到满分 |
这个作业在那个具体方面帮助我实现目标 | 作业的严格要求和PTA的精选题集 |
参考文献 | 《C语言程序与设计》,百度 |
学号 | 20209078 |
1.PTA实验作业(20分/题)
1.1 C程序设计 实验2-2-1
用if-else语句编程,根据输入的百分制成绩score(整数),转换成相应的五分制成绩grade后输出。
当 90≤ score≤100时, grade=A;
当80≤ score<90时,grade=B;
当70≤ score<80时, grade=C;
当60≤ score<70时,grade=D;
当0≤ score<60时,grade=E。
如果输入成绩 score<0或 score>100,则输出“Input error!”。
1.1.1 数据处理
①数据表达:定义并使用了单精度浮点型变量score,字符型变量grade。
②数据处理:表达式【 if (score>=90&&score<=100){grade='A'}】等,利用分支结构if-else判断并输出相应的等第A,B,C,D,E或者Input error!
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
85 | B | 题目的样例数据 |
120 | Input error! | 题目的样例数据 |
91 | A | 测试90≤ score≤100时是否正确 |
72 | C | 测试70≤ score<80时是否正确 |
67 | D | 测试60≤ score<70时是否正确 |
39 | E | 测试0≤ score<60时是否正确 |
-1 | Input error! | 测试score<0时是否正确 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.编译错误:之前搞习惯了用if-else时,else后面经常忘记打{},我之前刷题不会就去网上搜一搜,发现网上也有好多答案没有这个{},
后面换了一个编译器:从C(gcc)换成了C(clang)。然后居然对了。
2.答案正确:加上后答案就对了,挺突然的。记笔记:记得if后面有多个语句就要加{}。
1.2C程序设计 实验2-3-1
身高预测。
每个父母都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
设 faHeight为父亲的身高,moHeight为母亲的身高,身高预测公式为: 男性成人时身高=( faHeight+moHeight)×0.54 女性成人时身高=( faHeight×0.923+ moHeight)/2cm 此外,如果喜爱体育锻炼,那么身高可增加2%;如果有良好的卫生饮食习惯,那么身高可增加1.5%。
试编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F或f表示女性,输入字符M或m表示男性)、父母身高(用实型变量存储,faHeight为父亲的身高,moHeight为母亲的身高)、是否喜爱体育锻炼(用字符型变量 sports存储,输入字符Y或y表示喜爱,输入字符N或n表示不喜爱)、是否有良好的饮食习惯(用字符型变量diet存储,输入字符Y或y表示良好,输人字符N或n表示不好)等条件,利用给定公式和身高预测方法对身高进行预测。
1.2.1 数据处理
①数据表达:定义并使用了单精度浮点型变量f,m,x,字符型变量s,a,d。
②数据处理:表达式【x=(f + m) * 0.54;】,【x=(f * 0.923 + m) / 2;】,【x=x*(1+0.02);】,【x=x*(1+0.015)】,【x=x】。并按照题目运用if-else结构完成题目要求。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
F 182 162 N Y | 167.5cm | 题目的样例数据 |
f 182 162 n y | 167.5cm | 测试小写是否有效 |
F 182 162 Y Y | 170.8cm | 改变是否喜欢体育运动测试,看结果是否对应改变 |
F 182 162 N N | 165.0cm | 改变是否有良好饮食习惯测试,看结果是否对应改变 |
F 177 161 N Y | 164.6cm | 改变父母身高测试,看结果是否对应改变 |
M 182 162 N Y | 188.5cm | 改变性别,看结果是否对应改变 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.答案错误:之前读题不认真,看错公式了。写成了x=(f * 0.923 + m) * 0.54。
2.答案错误:改完之后还是答案错误,思维定式去找表达式错误去了。看到最后才发现要保留一位小数,同样也是读题问题。
3.答案正确:终于答案正确。以后读题要仔细仔细仔细仔细仔细。不然就像定义的字符型变量一样“s,a,d”=>sad.
2.代码互评(5分)
-
同学代码截图
同学一的作业
同学二的作业 -
自己代码截图
-
比较:
1.同学一的代码用了自定义函数,还写出了一个像指针的东西char* argv[]。我觉得这个代码核心就是把四位数利用除法拆分成4个数再判断是否为7,他是放到自定义函数里再在主函数中调用,用void a1应该是因为返回是随机的。我按照这位同学的样子模仿了一下,但我觉得可以直接在主函数里写,就省去了自定义函数那一部分。
2.同学二的代码构思比较巧妙,利用%1d的方式只读取一位数将四位数分别放入了四个整形变量里,再分别判断并累加7的个数。和我的思路大同小异吧(我利用数组的优势将原来的四个if判断写成了一个循环四次的if判断?)
3.我自己的代码用了数组吧,就省去了拆的那一步。但是没学明白,在C(gcc)编译器下“运行时错误”,在C(clang)答案是正确的。//淦,刚测试(2020/11/20),gcc编译器也过了,挺玄学的。还希望大佬能回答原因。
(我打死不承认是为了与同学的代码不同才这么写的。)
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
10/12——10/18 | 40h | 581 | printf(),scanf()的用法,if-else的用法 | 无 |
10/19——10/23 | 33h | 617 | for循环 | 无 |
10/24——10/25 | 13h | 262 | do...while循环 | 无 |
10/26——11/1 | 15h | 458 | 自定义函数 | 无 |
11/2——11/8 | 19h | 144 | pow(),sqrt()函数 | 无 |
11/9——11/15 | 14h | 597 | 函数 | 如何改错,会调试了还是很慢,不熟练 |
11/16-11/22 | 21h | 241 | 分支结构 | 函数递归?还有如何替换字符串。C(gcc)和C(clang)的区别,什么情况叫做数组越界 |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 1951 | 879 |
第二周 | 1994 | 458 |
第三周 | 6917 | 144 |
第四周 | 1924 | 597 |
第五周 | 4553 | 641 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
学习内容总结:
- 本周我们学习了分支结构的一部分,实验课自主练习了利用取余符号%来拆分多位数。并且在本次PTA作业的中运用了。这次的PTA作业的特点就是文字特别多(1,2题)或者特别少(3,4题),难度还行,就是除第三题外都要好多好多个if的,比较麻烦。
感悟:
- 曾经我在博客作业中写到:可以用多个if来简化if-else的“连环套”。唉,这次我尝试了挺多次,最后发现适当用else比单纯用if来得清楚和简单。
- C语言好难学。太多不会的了。
- C语言是学会,然后用熟的。(11/22修改)