C语言I博客作业09

作业头

这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11637
我在这个课程的目标是 学会自定义函数,本次作业拿到满分
这个作业在那个具体方面帮助我实现目标 作业的严格要求和PTA的精选题集
参考文献 CSDN,博客园,《算法入门》
学号 20209078

1.PTA实验作业(20分/题)

1.1 6-1 统计某类完全平方数 (20分) (15分)

本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:

int IsTheNumber ( const int N );

裁判测试程序样例:

#include <stdio.h>
#include <math.h>

int IsTheNumber ( const int N );

int main()
{
    int n1, n2, i, cnt;

    scanf("%d %d", &n1, &n2);
    cnt = 0;
    for ( i=n1; i<=n2; i++ ) {
        if ( IsTheNumber(i) )
            cnt++;
    }
    printf("cnt = %d\n", cnt);

    return 0;
}

/* 你的代码将被嵌在这里 */

1.1.1 数据处理

数据表达:定义了整形变量a,b,c,d,e,f。
数据处理:

因为题目要求的是四位数,所以定义四个整形变量来储存各个位数:a,b,c,d
定义一个整形变量储存N的平方根,因为要求是完全平方数所以定义整形来判断。
if(e*e==N){...}
加之题目要求要有位数相等,利用取余的方式拆数:a=N%10;b=(N/10)%10;c=(N/100)%10;d=(N/1000)%10;
再利用if判断并用局部变量累加计数。
然后考虑到三位数以下的数会导致c为0的可能,所以在前面加个判断。

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
105 500 cnt = 6 题目样例
-9999 100 cnt = 1 负数到一百

1.1.4 PTA提交列表及说明

提交列表

提交列表说明:

1.答案错误:对于自定义函数里的return还不怎么理解,好多都错在这。
2.部分正确:数组的方法来的直观,但是我想写一个不用数组的,先没啥思路,后面发现PTA只测到4位数就好办了。然后有个少于三位数出现的bug所以出现了这样的提交列表。

1.2 7-1 解一元二次方程 (10分)

1.2.1 数据处理

数据表达:定义了浮点形变量a,b,c,s,x,x1,x2,m,n。
数据处理:

利用解一元二次方程求根公式。先判断无解和无穷解:
    if(a==0&&b==0&&c==0){
        printf("无穷多解");
    }
    else if(a==0&&b==0){
        printf("无解");
    }
再判断一个解:else if(a==0){...}
再判断判别式。因为double运算有误差,所以得加个比较小的数(原理我也不懂)
这个数不能超过0.016,也不能等于。实质上是0.015。也不能小于0.000000000000000007。
这里为了方便,可以使用宏定义#define WuCha 0.0005//组成就是#define 变量名字,比如这个WuCha就是误差的拼音 数值
然后就可以少打那么多0.000几什么了。

1.2.2 实验代码截图


1.2.3 造测试数据

输入数据 输出数据 说明
0 4.5 -3.6 x = 0.8 题目样例
0 0 0 无穷多解 题目样例
-2 0.8 -0.06 x1 = 0.1, x2 = 0.3 题目样例
1 -0.4 0.04 x1 = x2 = 0.2 题目样例
-0.2 0.04 -0.01 x1 = 0.1-0.2i, x2 = 0.1+0.2i 题目样例

1.2.4 PTA提交列表及说明

提交列表

提交列表说明:

1.部分正确:没看清题,两个相等要连等。还有double误差,之前我用的0,就是不对。
2.内部错误:据说是PTA自己的问题。

2.代码互评(5分)

  • 同学代码截图
    同学一的作业

    同学二的作业

  • 自己代码截图

  • 比较:
    1.同学1的用的数组这个知识点,if用得挺巧的,毕竟能让电脑累的事为什么让编程的人累。
    2.同学2的代码最开始启用for的循环语句,其实可以引入一个标志flag参与后面的if条件语句,然后再return flag,这样可以省一些...?可能是我强迫症。
    3.我这是钻空子写法,主要想尝试不用老师海绵讲的知识写。

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
10/12—10/18 40h 581 printf(),scanf()的用法,if-else的用法
10/19—10/23 33h 617 for循环
10/24—10/25 13h 262 do...while循环
10/26—11/1 15h 458 自定义函数
11/2—11/8 19h 144 pow(),sqrt()函数
11/9—11/15 14h 597 函数 如何改错,会调试了还是很慢,不熟练
11/16—11/22 21h 241 分支结构 函数递归?还有如何替换字符串。
11/23—11/29 29h 868 switch语句 我也不知道我从哪开始就懵了
11/30—12-6 10h 179 while和do...while循环
12/7—12/13 31h 312 循环嵌套 如何巧妙运用continue
12/14—12/20 12h 245 函数 一堆

3.2 累积代码行和博客字数(5分)

时间 博客字数 代码行数
第一周 1951 879
第二周 1994 458
第三周 6917 144
第四周 1924 597
第五周 4553 641
第六周 3792 868
第七周 4849 179
第八周 4060 312
第九周 4990 245

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

3.3.2 学习体会

学习内容总结:

  • 本周我们学习了函数,会利用函数简化需要重复使用的代码。

感悟:

  • 这周PTA难过头了吧。。。
  • 时刻做好笔记,做好盲点,不懂的名词积极百度,实时记录下来。
  • 对待任何事情不能急于求成,代码不能囫囵吞枣,自己的思维最重要,照搬现套,不可取,形成自己独有的思维最为重要。
  • 改别人代码挺好的,一题多解,修改他人的代码的基础上自己再创建新的题解。主要是要理解思路和原理,但是太折磨人了。
posted @ 2020-12-18 02:23  岚影  阅读(203)  评论(0编辑  收藏  举报