C语言I博客作业05
C语言程序设计 | 2020计算机3班 |
作业要求 | 作业要求 |
课程目标 | 熟悉多分支结构、字符型数据类型和逻辑运算符 |
作业帮助实现目标的具体方面 | 多次使用不熟练的内容,强化记忆从而达到目标 |
参考文献 | C语言程序设计 |
学号 | 20209003 |
1.PTA实验作业
从PTA题目集中选出2个你最满意的题目完成.
1.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 实验代码截图
-
1.1.2 数据处理
数据表达:
变量及其类型:
整型变量:faHeight,moHeight
浮点型变量:Height。
字符型变量:sex,sports,diet
变量由来:通过题目已知定义。
数据处理:
表达式:sex=='F'||sex=='f',Height=(faHeight*0.923+moHeight)/2,sex=='M'||sex=='m',Height=(faHeight+moHeight)*0.54,sports=='Y'||sports=='y',Height=Height*1.02,sports=='N'||sports=='n',Height=Height,Height=Height*1.015。
流程结构:分支结构。
-
1.1.3 造测试数据
输入数据 :性别\父亲身高\母亲身高\是否喜爱体育锻炼\是否有良好饮食习惯 | 输出数据 :Height (cm) | 说明 |
---|---|---|
F \ 182 \ 162 \ N \Y | 167.5 | 女性(大写),不喜体育锻炼 ,有良好饮食习惯 |
f \ 182 \ 162 \ Y \Y | 170.8 | 女性(小写),喜体育锻炼 ,有良好饮食习惯 |
M \ 182 \ 162 \ N \Y | 188.5 | 男性(大写),不喜体育锻炼 ,有良好饮食习惯 |
-
1.1.4 PTA提交列表及说明
1.编译错误:忘记对Height进行赋值。
2.部分正确:没有注意小写m,f的可能性。
1.2 有多少位是7?
从键盘读入一个4位数的整数,求该数中有多少位是7
输入格式:
一个4位数的整数
输出格式:
该整数中7的个数
-
1.2.1 实验代码截图
-
1.2.2 数据处理
数据表达:
变量及其类型:
整型变量:n,i,a,b,c,d。
变量由来:通过题目已知定义。
数据处理:
表达式:a=n/1000,b=(n/100)%10,c=(n%100)/10,d=n%10,a==7,i++,i=i,b==7,c==7,d==7。
流程结构:分支结构。
-
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1117 | 1 | 一个7且在个位 |
2577 | 2 | 两个7且在个位和十位 |
3747 | 2 | 两个7且在个位和百位 |
7727 | 3 | 三个7且在个位百位千位 |
-
1.2.4 PTA提交列表及说明
1.编译错误:在使用自定义变量d之前忘记定义d了。
2.代码互评
-
同学代码截图
- 身高预测
-
同学一
-
同学二
-
- 身高预测
-
自己代码截图
- 身高预测
- 身高预测
-
不同之处
- 1.对于我而言,同学一的代码很简洁明了,可读性很高。
- 2.同学二的代码看起来很复杂,耗时长,但其实思维难度很小。
3.学习总结
3.1学习进度条
周\日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
7\11.15-11.21 | 约7小时 | 约200行 | 学习多分支结构、字符型数据类型和逻辑运算符 | 无 |
6\11.8-11.14 | 约6小时 | 约95行 | 生成乘方表与阶乘表 | 不理解函数的定义和调用如果将主函数放在前面,第一次出现的double fact(int n)后要加分号 |
5\11.1-11.7 | 约8小时 | 约140行 | for语句 | 输出%d与%6.1lf之间不能有空格的原因 |
4\10.18-10.24 | 约6小时 | 约105行 | if-else语句 | 不能理解求个位数用n%10,十位数n/10%10等 |
3.2累积代码行和累积博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
体会:
- 这周用新学的知识写PTA作业,写是写出来了,但是自己并不满意,因为自己的答案很死板,有的代码甚至比别人多了足足60行。体会到自己对知识需要更灵活的运用,而不是生搬硬套。
- 感觉自己容易钻牛角尖,无论来多少相似的题都一样,最终都会走到同一个死胡同里。例如:对分支结构的运用中,会陷入“是”之后存在一个分支,“否”之后也存在一个分支,无法在之前的基础上计数的死胡同,以致无法继续写下去。实际上遇到这个情况并不需要使用多分支,只需要直接往下另起一个分支即可。