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修改)
posted @ 2020-11-19 18:16  岚影  阅读(235)  评论(8编辑  收藏  举报