C语言I博客作业11
一.表格
问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10132 |
我在这个课程的目标是 | 熟练的运用与掌握计算机系统和C语言知识 |
这个作业在那个具体方面帮助我实现目标 | 函数定义及相关知识 |
参考文献 | 《C语言程序设计》、《C Primer Plus》 |
二.本周作业
1. PTA实验作业(20分/题)
从PTA题目集中选出2个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题20分(每项5分)
1.1 题目名1
1.1.1数据处理
数据表达:先根据题目定义浮点型变量a,b,c表示一元二次方程的三个系数以及定义一元二次方程的两个根x1,x2和x。其中x1,x2都是浮点型变量。
数据处理:(伪代码如下)
定义浮点型变量a,b,c,x1,x2,x
进入if语句嵌套循环分两种情况a是否为0
if(a==0)
{
if(b!=0&&c!=0||b!=0&&c==0) 如果仅当b不为0时的情况
if(x==-0) 考虑 如果x为-0时的情况
printf("x = %g",-x);
else 另x为0时的输出
printf("x = %g", x);
if(b==0&&c!=0)
当c不为0时b为0时的方程的解的情况
printf("无解\n");
if(b==0&&c==0)
当b,c都为0时解的情况
printf("无穷多解\n");
else
另当a不为0时,判断根的判别式的情况
if(b*b-4*a*c<0)
printf("x1 = %.2g+%.2gi, x2 = %.2g-%.2gi",-b/(2*a),sqrt(-b*b+4*a*c)/(2*a),-b/(2*a),sqrt(-b*b+4*a*c)/(2*a));
当判别式小于0时输出两个共轭虚根
if(b*b - 4 * a*c > 0)
printf("x1 = %g, x2 = %g",x1,x2);
当判别式大于0时输出两个不同的根
另当判别式等于0时输出两个相同实根
printf("x1 = x2 = %g",x1,x2);
输出结果
程序结束
**1.1.2实验代码截图 **
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
0 4.5 -3.6 | x = 0.8 | 样例数据 |
-0.2 0.04 -0.01 | x1 = 0.1-0.2i, x2 = 0.1+0.2i | 样例数据 |
-3 1.2 -0.12 | x1 = x2 = 0.2 | 样例数据 |
-2 0.8 -0.06 | x1 = 0.1, x2 = 0.3 | 样例数据 |
0 0 0 | 无穷多解 | 样例数据 |
0 0 3.6 | 无解 | 样例数据 |
2 2 2 | x1 = 0.5+0.87i, x2 = 0.5-0.87i | 正常数据 |
0 3 7 | x = -2.33333 | 正常数据 |
1.1.4 PTA提交列表及说明
部分正确:一开始我的共轭虚根的那一种情况写错了,我的-b/(2*a),sqrt(-b*b+4*a*c)/(2*a),-b/(2*a),sqrt(-b*b+4*a*c)/(2*a));这里公式写错了。后经查找资料改正。
部分正确:后来我提交发现一共有十个测试点,但是我只对了七个,有三个测试点不对。后仔细读题发现要考虑负零和小数点位数的问题,后来经过询问同学改正。
答案正确:......
1.2 题目2
1.2.1数据处理
数据表达:根据题目意思定义函数 int IsTheNumber ( const int N )
数据处理:(伪代码如下)
自定义函数
定义变量 n,b
int p[10]={0}; 使用数组
if(m*m==n){
如果m的平方等于n,然后进入while语句循环
while(n){
b=n%10; 取余
p[b]++;
n/=10;
for循环判断
for(int i=0;i<=9;i++){
if(p[i]>1)
return 1;
返回初始值 1
输出结果
程序结束
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
105 500 | cnt = 6 | 样例数据 |
99 405 | cnt = 5 | 范围数据 |
5 888 | cnt = 8 | 正常数据 |
77 88 | cnt = 0 | 正常数据 |
1.2.4 PTA提交列表及说明
答案正确:........
2.代码互评(5分)
同学代码截图1
自己代码截图1
比较:
1.同学代码是使用了 EPS 是在函数程序中事先说明的常量,默认的eps = 2^(-52),是控制迭代精度的,相当于微积分里面的无限小值,这是同学代码中我学到的新知识点,和我的代码显然不同。
2.两份代码在本质和使用意义上是一样的,但是我感觉思考方向上是有些不同的。
同学代码截图2
自己代码截图2
比较:
1.同学代码使用了do-while语句,但是我感觉其实不必要。使用一个while语句就可以完成所指定的任务。
2.这样相较而言,我感觉我的代码写起来就比较方便简洁。
3.学习总结(15分)
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周/9-19 | 这周花了大约三天 | 30 | Hello world编程 | 无 |
第二周/9-25 | 这周花了大约三天 | 50 | 华氏度与摄氏度 | 无 |
第三周/10-9 | 这周花了大约三天 | 100 | 目前是常量,变量的应用以及分段函数中的 if-else 的使用 | 在PTA的使用中明明答案没有问题但就是显示各种问题,在写博客园时对表格以及格式的编辑总是l力不从心! |
第四周/10-15 | 这周花了大约两天 | 150 | for语句循环体的使用 | 各种变量,语句的使用会混乱 |
第五周/10-24 | 这周花了大约三天 | 140 | 阶乘的编程,自定义函数 | 参数的设定 |
第六周/10-31 | 这周花了大约三天 | 200 | 多分支结构和else-if语句 | 字符型数据 |
第七周/11-6 | 这周花了大约三天 | 210 | switch语句 | switch语句如何更好的与for语句、if-else语句连用 |
第八周/11-13 | 这周花了大约两天 | 150 | while语句和do-while语句 | 字符型具体表达 |
第九周/11-21 | 这周花了大约三天 | 190 | break语句和continue语句以及嵌套循环 | continue语句的使用 |
第十周/11-26 | 这周花了大约三天 | 160 | 嵌套循环和字符型使用 | 格式错误的真谛 |
第十一周/12-06 | 这周花了大约三天 | 140 | 函数定义及相关知识 | 数组 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结
3.3.2 学习体会
1.在本周中学习了函数的知识,重点又讲解了变量的作用域与生存期以及按生存期可分为两种:即动态变量和静态变量。
2.我在课堂上主要学习到了变量只能在其生存期内被引用,变量的作用域直接影响变量的生存期。作用域和生存期是从空间和时间的角度来体现变量的特征。还有局部变量和外部变量。
3.在这次讲课中我学到了好多知识,其中全局变量还是尽量少使用全局变量且局部变量与全局变量同名极易导致我们犯逻辑错误。
4.还有下周就要考试了,所以在写代码的方面上我还应该再加把劲!