C语言I博客作业05
1.作业头
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-2 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11527 |
这个作业的目标 | <通过总结自己在PTA作业中的错误和分析其他同学的优秀代码让我们夯实编程基础开发思维。> |
学号 | <20209136> |
一、本周教学内容&目标
第3章 分支结构 3.1-3.2 使学生熟悉多分支结构、字符型数据类型和逻辑运算符。
二、本周作业头
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11527 |
我在这个课程的目标是 | <掌握多分支结构,熟练的定义并使用字符型变量。> |
这个作业在哪个具体方面帮助我实现目标 | <写代码的思路,逻辑思维,查找错误的方法> |
参考文献 | <C语言程序设计> |
三、本周作业
1.PTA实验作业
2.代码互评
3.学习总结
四、作业格式
1.PTA实验作业
请在此处列出自己的排名图片:
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分),内容要求如下:
1.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数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:用到了faHeight,moHeight,sex,sports,diet,变量。faHeight,moHeight的值通过调用输入函数获取用户输入的数值再进行赋值,其属于双精度浮点型变量。sex,sports,diet,的值通过调用输入函数获取用户输入的字符再进行赋值,其属于字符型变量。
数据处理:用到了算术表达式faHeight*0.923+moHeight)/2)*1.035,moHeight=(faHeight*0.923+moHeight)/2等等,用到了多分支if-else结构。
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
F 182 162 Y y | 170.8cm | 父亲身高182母亲身高162,女儿喜爱体育锻炼且有良好的饮食习惯身高能达到170.8cm |
f 178 160 Y Y | 167.9cm | 父亲身高178母亲身高160,女儿喜爱体育锻炼且有良好的饮食习惯身高能达到167.9cm |
M 150 150 N Y | 164.4cm | 父亲身高150母亲身高150,儿子不喜爱体育锻炼但有良好的饮食习惯身高只有164.4cm |
m 148 180 n n | 177.1cm | 父亲身高148母亲身高180,儿子不喜爱体育锻炼也没有良好的饮食习惯但身高有177.1cm |
m 190 150 N y | 186.4cm | 父亲身高190母亲身高150,儿子不喜爱体育锻炼但有良好的饮食习惯身高能达到186.4cm |
M 135 190 N Y | 178.1cm | 父亲身高135母亲身高190,女儿不喜爱体育锻炼但有良好的饮食习惯身高高达178.1cm |
1.1.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
提交列表说明:
1.部分正确:判断女孩身高已经正确,判断男孩身高时代码printf("%.1fcm",faHeight)错打成了printf("%.1fcn",faHeight),导致部分正确。后进行了正确修改。
2.编译错误:在解决上个问题后,在代码中删去n时不小心删去了引号,导致编译错误。于是把引号添加上。
3.答案错误:添加引号的同时又删去了return 0,又觉得逻辑可以优化下于是又添加了else,提交上去显示答案错误。于是删除掉上一步多余的操作。
4.答案错误:又发现是在修改过程中把faheight与moheight弄混了,导致提交后显示答案错误。将两个变量互换后再提交,显示答案正确。
1.2题目名2:从键盘读入一个4位数的整数,求该数中有多少位是7
题目内容描述:
输入样例:
在这里给出一组输入。例如:
4757
输出样例:
在这里给出相应的输出。例如:
2
1.2.1数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。注意:请务必按照以下方式书写。
数据表达:用到了a,b,c,s,e,g,k,d,i,f,h变量。d,i,f,h的值根据判断后的情况再被赋相应的值,其都属于整型变量。a的值通过调用输入函数获取用户输入的数值再进行赋值,其属于整型变量。k,c,b,e,s,g的值分别由算数表达式k=a/1000,c=a/100,b=c%10,e=a%100,s=e/10,g=a%10赋值而来,其都属于整型变量。
数据处理:用到了k=a/1000,c=a/100,b=c%10,e=a%100,s=e/10,g=a%10六个算数表达式,用到了赋值表达式d=1,d=0,i=1,i=0等。用到了if-else分支结构。
1.2.2实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
4757 | 2 | 个位与百位都是7所以输出数据有两个7。 |
7772 | 3 | 十位与百位还有千位都是7所以有三个7。 |
5207 | 1 | 只有个位是7所以输出数据仅仅有一个7。 |
1314 | 0 | 所有位上都不是7所以输入数据中没有7。 |
7777 | 4 | 所有位上都是7所以输出数据中有四个7。 |
9779 | 2 | 十位与百位都是7所以输出数据有两个7。 |
520 | 不符合题目四位数要求,没有输出结果。 |
1.2.4 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
提交列表说明:
1.部分正确:把g=a%10代码错误输成了g=a/10,正确改正后并进行再一次的提交。
2. 段错误:scanf("%d",&a)中少加了&导致段错误,把&加上再提交显示答案正确。
2.代码互评
同学代码截图
自己代码截图
1.同学的代码只定义了很少的变量,占用存储小,而我定义的变量太多占用的存储大。
2.同学的代码非常巧妙的将整型数转化为字符型数再来分析每个数是否符合要求,而我用的是求输入的整型数的余数的方法,步骤多且运行比较慢。
3.同学的代码存在一处漏洞,程序开始时未将sum赋值为0,虽然在PTA上能够提交正确,但在其他编译器上会输出随机值。
同学代码截图
自己代码截图
1.同学的代码思路清晰逻辑严密,而我由于一开始没有想好正确且最简便的算法,更没有选择合适的逻辑运算,所以做到一半发现回不去了只能硬着头皮上了,但还是浪费了我大量的时间。
2.同学的代码简单一目了然,而我的代码繁多杂乱很容易在编写过程中出现错误。
二.学习进度条
周/日期 | 代码行 | 这周所花的时间 | 学到的知识点简介 | 目前比较疑惑的问题 |
---|---|---|---|---|
第八周10.19-10.25 | 480 | 23小时 | 调用输入输出函数,输出任意的字符串。 | 输入输出格式常没有与题目一致 |
第九周10.26-11.01 | 599 | 33小时 | 数的类型,定义变量时要先考虑清楚。 | 数据溢出和负数的浮点型 |
第十周11.02-11.08 | 519 | 27小时 | for循环语句,if的判断语句。 | 多次循环与循环体中再添加变量赋值并再循环 |
第十一周11.09-11.15 | 520 | 20小时 | 定义函数,调用函数 | 调用函数和定义函数易将变量弄混淆 |
第十二周11.16-11.22 | 550 | 28小时 | 多分支结构、字符型数据类型和逻辑运算符。 | 多分支结构容易弄错,逻辑运算符使用不熟练 |