C语言I博客作业03

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-2/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11453
这个作业的目标 熟悉for循环的使用,学习他人的优秀代码,提高自己
学号 20208988

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

1.1求简单交错序列前N项和
题目内容描述:计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和

1.1.1实验代码截图

1.1.2数据处理:

数据表达:定义了整型变量x,y,浮点型变量i,sum。
数据处理:使用了表达式sum=sum+y*(1/(3*i-2)和for循环

1.1.3 PTA提交列表及说明

Q1:一开始没看见需要自己输入测试用例。
A1:后面注意到了,改正后程序正确。

1.2 求分数序列前N项和
题目内容描述:计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。
1.2.1 实验代码截图

1.2.2 数据处理

数据表达:定义了浮点型变量x, y, i, n, b, a。
数据处理:使用了表达式 b = b + y / x和for循环。

1.2.3 PTA提交列表及说明

Q1:开始的时候并没有处理好x,y值的递加转换赋值关系,耽误了好多时间。
A1:多次尝试后,想到了先给定另一个变量赋y的值再赋值给x进而解决了问题。

1.3求平方根序列前N项和
题目内容描述:计算平方根序列√1+√2+√3+⋯的前N项之和
1.3.1 实验代码截图

1.3.2 数据处理

数据表达:定义了整型变量x,i,浮点型变量sum。
数据处理:使用了表达式sum=sum+sqrt(i)和for循环。

1.3.3 PTA提交列表及说明

Q1:码代码速度慢了,还要练。
A1:题目难度不算大,一次性过了

2.阅读代码(-5——5分)

class Solution {
public:
    int minimumOperations(string leaves) {
        int n = leaves.size();
        vector<vector<int>> f(n, vector<int>(3));
        f[0][0] = (leaves[0] == 'y');
        f[0][1] = f[0][2] = f[1][2] = INT_MAX;
        for (int i = 1; i < n; ++i) {
            int isRed = (leaves[i] == 'r');
            int isYellow = (leaves[i] == 'y');
            f[i][0] = f[i - 1][0] + isYellow;
            f[i][1] = min(f[i - 1][0], f[i - 1][1]) + isRed;
            if (i >= 2) {
                f[i][2] = min(f[i - 1][1], f[i - 1][2]) + isYellow;
            }
        }
        return f[n - 1][2];
    }
}

代码功能:实现用最少次数的调整将两种颜色的树叶分类调整完毕。
代码优点:贯穿数学思想,将具体问题数字化,具有极强的逻辑性,
极大的减少了编译代码出错的可能,而且将for循环和if语句相结合以
简化代码复杂程度,并以颜色首字母作为标识字符以便识别。

3.学习总结(15分)
3.1 学习进度条(5分)

周/日期 这周所花费的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 16小时 300行 概括性的了解了本专业 暂无
第二周 20小时 500行 学会了如何提问 暂无
第三周 22小时 900行 for循环的使用 暂无
3.2 累积代码行和博客字数(5分)

3.3 学习感悟(5分)
请回顾自己的本周的学习过程,如果你有新的想法或者新的方法,请及时记录下来。
本周学习了for循环,简化了代码的复杂程度,提高了函数运算效率,体会到了c语言的实际作用。
c语言的学习,要靠不断的实践积累和自主拓展才能真正学到知识。

posted @ 2020-11-07 21:59  君风  阅读(180)  评论(15编辑  收藏  举报