1.PTA实验作业(20分/题)
1.1 C程序设计 实验2-3-1 (20分)
身高预测。
每个父母都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和
自身的性别密切相关。
设 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表示不好)等条件,利用给定公式和身高预测方法对身高进行预测。
输入格式:
在一行中给出性别、父亲身高、母亲身高、是否喜爱体育锻炼、是否有良好饮食习惯,数据间以空格分隔。
输出格式:
输出预测的身高,保留一位小数。
输入样例:
F 182 162 N Y
输出样例:
在这里给出相应的输出。例如:
167.5cm
1.1.1数据处理
数据表达:所用变量:faHeight,moHeight,myHeight,sex,sports,diet;这些变量的值的来源:faHeight、moHeight、sex、sports、diet是输入的值;myHeight是根据faHeight、moHeight、sex、sports、diet这些值得出的;类型:双精度浮点型(double),字符型(char)。
数据处理:数据用到的表达式:myHeight = (faHeight * 0.923 + moHeight) / 2,myHeight = (faHeight + moHeight) * 0.54,myHeight = myHeight * 1.02,myHeight = myHeight,myHeight = myHeight * 1.015;流程结构:。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
F 182 162 N Y |
167.5cm |
女性,不喜爱体育锻炼,有良好的卫生饮食习惯 |
f 182 162 n Y |
167.5cm |
女性,不喜爱体育锻炼,有良好的卫生饮食习惯 |
f 172 158 y y |
164.0cm |
女性,喜爱体育锻炼,有良好的卫生饮食习惯 |
F 188 167 y n |
173.7cm |
女性,喜爱体育锻炼,没有良好的卫生饮食习惯 |
f 196 166 Y n |
176.9cm |
女性,喜爱体育锻炼,没有良好的卫生饮食习惯 |
M 182 162 N Y |
188.5cm |
男性,不喜爱体育锻炼,有良好的卫生饮食习惯 |
m 173 168 y n |
187.8cm |
男性,喜爱体育锻炼,没有良好的卫生饮食习惯 |
M 167 156 Y y |
180.6cm |
男性,喜爱体育锻炼,有良好的卫生饮食习惯 |
m 171 168 n n |
183.1cm |
男性,不喜爱体育锻炼,没有良好的卫生饮食习惯 |
1.1.4 PTA提交列表及说明
1.答案错误:在分支结构中缺了一部分导致答案错误;
解决办法:刚开始认为分支结构里的内容写错了,于是把分支结构重新写了一遍,提交后答案还是出现错误,就重新理清分支结构,检查分支结构里的逻辑,发现缺了一部分内容后,重新补上,最后才显示答案正确。
1.2 有多少位是7? (40分)
描述
从键盘读入一个4位数的整数,求该数中有多少位是7
输入格式:
一个4位数的整数
输出格式:
该整数中7的个数
输入样例:
在这里给出一组输入。例如:
4757
输出样例:
在这里给出相应的输出。例如:
2
1.2.1 数据处理
数据表达:所用变量:x,a,b,c,d,n,a1,b1,c1,d1;这些变量的值的来源:x是输入的值, a = x / 1000, b = (x - a * 1000) / 100, c = (x - a * 1000 - b * 100) / 10, d = x - a * 1000 - b * 100 - c * 10, a1是根据a的值确定的,b1是根据b的值确定的,c1是根据c的值确定的,d1是根据d的值确定的,n = a1 + b1 + c1 + d1;类型:都为整型(int)。
数据处理:数据用到的表达式:a = x / 1000,b = (x - a * 1000) / 100,c = (x - a * 1000 - b * 100) / 10,d = x - a * 1000 - b * 100 - c * 10,a1 = 1,a1 = 0,b1 = 1,b1 = 0,c1 = 1,c1 = 0,d1 = 1,d1 = 0,n = a1 + b1 + c1 + d1;流程结构:分支结构。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
4757 |
2 |
只有个位与百位上为7 |
3577 |
2 |
只有个位与十位上为7 |
2779 |
2 |
只有十位与百位上为7 |
7657 |
2 |
只有个位与千位上为7 |
5777 |
3 |
只有个十百位上为7 |
7767 |
3 |
只有个百千位上为7 |
7778 |
3 |
只有十百千位上为7 |
7777 |
4 |
个十百千位上都为7 |
0000 |
0 |
个十百千位上都为0 |
1.2.4 PTA提交列表及说明
1.编译错误:第35行将%d写成了%n,第5行scanf ("%d",&x);中至少存在一个中文符号;
解决办法:在第一遍检查中发现第35行将%d写成了%n,后将%n改成了%d,提交后还是显示编译错误,编译器上提示第6行5列的‘a’前期待出现‘)’,将‘)’重新用英文打出后还是显示编译错误,后来干脆把("%d",&x)重新用英文打出,最后才显示答案正确。
2.代码互评(5分)
同学代码截图
自己代码截图
1.尹志成同学的代码中运用到for语句和if语句计算所求值;
2.阳榕同学的代码中运用到while语句和if语句计算所求值;
3.我的代码只运用了if-else语句去计算所求值,上面两位同学的计算方式与我的不一样,代码比我的更简便。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
第三周 |
4天 |
156 |
for语句 |
在综合表达式中,不知道为什么不能用"[ ]" |
第四周 |
2天 |
169 |
函数的定义和调用 |
函数的定义和调用的格式不太懂 |
第五周 |
3天 |
192 |
分支结构if-else语句和字符型(char) |
有同学作业中运用到的没学过的知识不太理解 |
3.2 累积代码行和博客字数(5分)
时间 |
博客字数 |
代码行数 |
第一周 |
638 |
12 |
第二周 |
562 |
97 |
第三周 |
2058 |
156 |
第四周 |
1737 |
169 |
第五周 |
2520 |
192 |
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
1.本周学习了分支结构,将之前所学的又增加了一点内容——运用if语句的嵌套解决实际问题,简单的四则运算,一种数据类型——字符型(char),逻辑运算符——逻辑与(&&)、逻辑或(||);
2.感觉本周所学的内容还蛮容易的,作业完成速度加快了一点,但在做PTA上的作业中的第二个题时,花费了不少时间,问题就出在中间有一部分分支结构丢了下半部分;
3.对比其他同学的做题方法,学习他人的优点;
4.对不熟的地方要多加练习。