C语言I博客作业09
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 熟练使用C语言 |
这个作业在那个具体方面帮助我实现目标 | 对本周的学习内容理解更深,总结反思这周学习感受 |
参考文献 | 《C语言程序设计》 |
学号 | 20209017 |
1.PTA实验作业
1.1 题目名1:水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=本题要求编写程序,计算所有N位水仙花数。
输入格式:输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:3
输出样例:
153
370
371
407
1.1.1数据处理
数据表达:用了b,c,num, n,d,a,y,x变量,这些变量的值是定义赋值来的,类型是整型与双精度浮点型。
数据处理:数据用到数学表达式、条件表达式。 流程结构用到循环结构(while)与选择结构(if-else)。
1.1.2实验代码截图
1.1.3 造测试数据
测试用例 | 运行结果 | 说明 |
---|---|---|
3 | sample同例 | |
7 | 极端值 | |
2 | 运行结束 | 超出极端值 |
1.1.4 PTA提交列表及说明
提交列表说明:
1.答案错误:只有运行测试时3结果才是对的。
解决办法:发现在各位数的几位数幂的地方写的3,将3改为n。
2.部分正确:运行超时,数字7运行不出来。
解决办法:在网上找解决方法,网上说可以将7单独拎出来,如果数的位数为7则直接输出。
1.2 题目2:解一元二次方程组
请编写程序,解一元一次方程
一元二次方程的求根公式为:
要求:
若 a=0,则为一元一次方程。
若 b≠0,则方程有唯一解,输出这个解;
若 b=0,c≠0,则方程无解,输出“无解”;
若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。
若 a≠0,则为一元二次方程。
若 Δ>0,则方程有两个不等的实根,输出这两个根;
若 Δ=0,则方程有两个相等的实根,输出这两个根;
若 Δ<0,则方程有两个共轭的虚根,输出这两个根。
输入格式:a,b,c
输出格式:x 或 x1,x2
注:所有实数均以格式限定符 %g 输出。
输入样例1:0 4.5 -3.6
输出样例1:x = 0.8
输入样例2:0 2.8 0
输出样例2:x = 0
输入样例3:0 0 3.6
输出样例3:无解
输入样例4:0 0 0
输出样例4:无穷多解
输入样例5:-2 0.8 -0.06
输出样例5:x1 = 0.1, x2 = 0.3
输入样例6:-1 0.2 0
输出样例6:x1 = 0, x2 = 0.2
输入样例7:1 -0.4 0.04
输出样例7:x1 = x2 = 0.2
输入样例8:0.3 0 0
输出样例8:x1 = x2 = 0
输入样例9:-0.2 0.04 -0.01
输出样例9:x1 = 0.1-0.2i, x2 = 0.1+0.2i
输入样例10:3 0 0.27
输出样例10:x1 = 0+0.3i, x2 = 0-0.3i
提示:注意实数的负零问题和误差问题。
1.2.1 数据处理
数据表达:用了a,b,c,x1,x2,value,d,e,e2变量,此变量的值是定义计算赋值来的,类型是双精度浮点型。
数据处理:数据用到条件表达式与数学表达式。 流程结构用到选择结构(if-else)。
1.2.2 实验代码截图
1.2.3 造测试数据
测试用例 | 运行结果 | 说明 |
---|---|---|
0 4.5 -3.6 | x = 0.8 | a=0,b≠0,c≠0 |
0 2.8 0 | x = 0 | a=0,b≠0,c=0 |
0 0 3.6 | 无解 | a=0,b=0,c≠0 |
0 0 0 | 无穷多解 | a=0,b=0,c=0 |
-2 0.8 -0.06 | x1 = 0.1, x2 = 0.3 | 有两个不等实数根 |
-1 0.2 0 | x1 = 0, x2 = 0.2 | 有两个不等实数根,且有一个根为0 |
1 -0.4 0.04 | x1 = x2 = 0.2 | 有两个相等实数根 |
0.3 0 0 | x1 = x2 = 0 | 相等的两个实数根为0 |
-0.2 0.04 -0.01 | x1 = 0.1-0.2i, x2 = 0.1+0.2i | 两个共轭的虚根 |
3 0 0.27 | x1 = 0+0.3i, x2 = 0-0.3i | 两个共轭的虚根,实部为零 |
1.2.4 PTA提交列表及说明
提交列表说明:
1.答案错误:无穷多解与无解的顺序反了。
解决方法:重新看题干,发现错误,将顺序改了。
2.部分正确:提交后多多个错误。
解决方法:根据提交后的错误,一个一个的改每个分支里的代码。
3.部分正确:两个实数根的分支错误,调试后value的值应该为0,但等于2点多。
解决方法:将value等于0的情况与value大于0的情况放在一起。
2.代码互评:一元二次方程
请编写程序,解一元一次方程
一元二次方程的求根公式为:
要求:
若 a=0,则为一元一次方程。
若 b≠0,则方程有唯一解,输出这个解;
若 b=0,c≠0,则方程无解,输出“无解”;
若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。
若 a≠0,则为一元二次方程。
若 Δ>0,则方程有两个不等的实根,输出这两个根;
若 Δ=0,则方程有两个相等的实根,输出这两个根;
若 Δ<0,则方程有两个共轭的虚根,输出这两个根。
输入格式:a,b,c
输出格式:x 或 x1,x2
注:所有实数均以格式限定符 %g 输出。
2.1.1同学1
2.1.2同学2
2.1.3自己
2.1.4不同之处
1.同学对于等于0的数是为避免出现小数就直接令其等于0,最后再直接输出。
2.同学是将大于0与等于0放在一起写的。
3.同学用的是sqrt函数我用的是pow。
3.学习总结
3.1学习进度条
周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第一周 | 0天 | 0行 | C语言知识的大纲 | 目前没有问题 |
第二周 | 3天 | 约20行 | Hello world编程Markdown语法 | 目前没有问题 |
第三周 | 5天 | 约80行 | 华氏度与摄氏度的转换、调试 | 对应该如何调试还不太懂 |
第四周 | 5天 | 约90行 | if-else语句 | PTA作业在scanf语句处有警告,该如何修改 |
第五周 | 5天 | 约125行 | for语句 | 对for语句的使用不够熟练 |
第六周 | 5天 | 104 | 如何定义函数 | 对定义函数的操作不过熟练 |
第七周 | 5天 | 184 | char数据类型的用法 | 用char类型不熟练,分不清什么时候要加'' |
第八周 | 5天 | 272 | switch语句用法 | 有部分情况不知怎么用 |
第九周 | 4天 | 251 | while语句与do-while语句用法 | 暂无疑惑 |
第十周 | 5天 | 262 | break,continue,多重for循环的应用 | 对于continue的用法仍不太清楚,多重for循环不够熟练,经常出错。 |
第十一周 | 5天 | 339 | 函数的分类,变量 | 对于一些概念还很模糊。 |
3.2累计代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 0 | 0 |
第二周 | 808 | 20 |
第三周 | 808 | 100 |
第四周 | 1426 | 190 |
第五周 | 2968 | 315 |
第六周 | 4144 | 409 |
第七周 | 7053 | 593 |
第八周 | 8814 | 865 |
第九周 | 11037 | 1116 |
第十周 | 13003 | 1378 |
第十一周 | 15463 | 1717 |
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
1.对于本周的学习的内容还没有弄得太懂,还需要再去回顾,理解,加深印象。
2.对于上周的PTA作业有些地方并没有弄得太懂那里为什么要这样写,还需要去理解,并对一些题目进行第二次码代码。
3.快要考试了,对于以前的知识点需要回顾。
4.本周还有自己线上学习第六章的任务,要记得学习,不懂的要及时询问。