C语言I博客作业05

一.作业头

这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 作业05
我在这个课程的目标是 学会使用字符型的规则即用法,拓展自己在循环语句中的其他知识
这个作业在那个具体方面帮助我实现目标 在调试过程中的报错会促使我去寻找问题的答案,一步步修改,查询资料
参考文献 《C Primer Plus》
学号 20209032

二.本周作业

1.PTA实验作业(20分/题)

1.1 C程序设计 实验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.1.1
  数据表达:使用了sex,sprots,diet,faHeight, moHeight,height六个变量;其中sex,sprots,diet,faHeight, moHeight是由scanf定义的值,height由后续的判断选择语句中的计算式对其赋值;其中sex,sprots,diet都为字符型,faHeight, moHeight,height为双精度浮点型。
  数据处理:数据用到的表达式为赋值表达式,关系表达式,逻辑表达式;流程结构为if——else与if的分支结构
1.1.2实验代码截图

1.1.3 造测试数据
输入数据 输出数据 说明
F 182 162 N N 165.0cm 当输入的是“N”时,对sprots的判断是否能正确,并且对两个都为“n”时的正确性
f 182 162 N Y 167.5cm 当输入的是“f”时,对sex的判断是否能正确
f 182 162 Y Y 170.8cm 当输入两个都为“Y”时的正确性
M 182 170 Y Y 196.8cm 对男性的判断,看是否与结果相似
1.1.4 PTA提交列表及说明



  1、答案错误:当提交列表全部出来时,全部报错,便放入visual studio中进行调试,将会出现几个问题,但是调试好后,发现在后面的两个if语句中的表达式无论输入什么都无法计算里面的表达式,自己一个人真的试了很久,最后还是在同学的帮助下,解决了问题,问题的原因出在在scanf中,我并未在后两个%c中出现空格,但是在用户输入时,会输入空格,但是此时的空格被char识别,因此在此处,被识别的便是空格。基于以上原因,于是在应当自己输入空格的地方输入空格,答案才会正确。
  2、编程错误:改问题不是来自pta是有关visual studio的使用中出现的问题,如上图,即使会有弹窗对其做出反应,但是在输入数值后,会对其报错,且没有数值输出,该问题是上网搜索才知道,一个新名词“缓冲值”,但是还是不太理解,就个人理解而言,即在开始时会对其定义一个缓冲值,在输入时还需对其缓冲值进行定义,如果输入的缓冲值大于了定义中的缓冲值,将会出现输入的字符丢失的情况,该问题还需继续深入!!!!

1.2判断体质完整版

1.2.1 数据处理
  数据表达:使用了BMI,kilogram,height三个变量;其中kilogram,height是由scanf定义变量值,BMI是由计算式赋值计算得出;kilogram,height都为双精度浮点型。
  数据处理:数据用到的表达式为BMI的计算标准以及指数函数;流程结构为分支结构。
1.2.2 实验代码截图

1.2.3 造测试数据
输入数据 输出数据 说明
50 1.75 偏瘦 尝试一下自己的BMI
60 1.60 正常 比自己重,比自己矮一点会是什么样子
70 1.82 正常 较高,较重
62 1.75 正常 试一下自己需要多少体重才能达到标准
1.2.4 PTA提交列表及说明

  1、答案错误:没有看清题目,一开始以为是体重除以身高,然后再平方。发现自己输入的数据的结果总是错误的,然后发现是计算式的错误,然后就一直在尝试他给我的应该是什么计算式。

2.代码互评(5分)

2.1 同学代码截图


2.2 自己代码截图

2.3 区别

  1. 同学1的代码看上去就比较长了,感觉特别繁琐的样子跟我的这个代码一样的长,但是其实对其进行不同的流程的话,会简化自己的流程。
  2. 会不会有更简单的语句对那些判断相同的整合在一起呢,我一开始想到的便是自定义函数,但是更加简单的暂时还为想到。便开始编写自定义函数,并去翻阅书籍查找那种跟简单的方法,同学2的就特别简单,该思路也还挺清晰的,感觉还是要多学习,多学的东西可以用来简化自己的程序的结构,以提升他的运行速度。
  3. 从同学1的代码中,本人建议还是养成良好的输入习惯,符号与字符之间输入空格增加美观,虽然我也是上一次慢慢改的,希望同学一也可以慢慢养成。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
6 10.8~10.11 2h 51 打印“ hello world”
7 10.12~10.18 8h 70 各个符号代表的是什么的基础知识 还有许多符号分辨不清
8 10.19~10.25 10h 93 数学函数的调用 对于大佬前面的哪些头文件的调用类型看不懂
9 10.26~11.1 10h 154 if-else语句
10 11.2~11.6 10h 348 for语句 较为复杂的循环还搞不清循环几次,循环内容
11 11.2~11.13 8h 360 用户自定义函数的使用,理解与明白函数的定义与调用的区别 自定义函数中如果变量与主函数的变量相同,为什么计算机会分清这两个变量是谁?想不清楚为什么会自己跳动到相应的地点再进行运算,是有什么相应的规则让他自己跳动吗?
12 11.14~11.20 15h 470 if的嵌套语句,关于char在使用中的事项 关于《C Primer Plus》中有些关于3.4.8的有些概念性的问题较为模糊

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会
  • 这一周学习的学习内容主要是if的嵌套语句,其实已经有所了解了,所以会比较容易理解了,所以还是要预习的,预习的功效还是挺明显的。
  • 如果说发现问题,就一定要搞清楚这个问题是什么原因,不要跳过去,那样将会错过自己学习的机会的!!!!
  • 如果说现在我能察觉到学的东西多有什么好处的话,我第一下肯定就是,简化流程,缩小运算所需要的时间,甚至节省空间,这正是编程的人员考虑的问题。
posted @ 2020-11-20 19:12  光air  阅读(210)  评论(5编辑  收藏  举报