C语言I博客作业03

这个作业属于哪个课程 计科三班
这个作业要求在哪里 作业要求
这个作业的目标 掌握本周所学知识,学习优秀代码,回顾本周学习
学号 20209017

1. PTA实验作业

从PTA题目集中选出3个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题2分,内容要求如下:

1.1 阶梯电价

题目内容描述:为了提倡居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:月用电量50千瓦时(含50千瓦时)以内的,电价为0.53元/千瓦时;超过50千瓦时的,超出部分的用电量,电价上调0.05元/千瓦时。请编写程序计算电费。

1.1.1 实验代码截图

1.1.2 数据处理

数据表达:用了x和cost变量,这些变量的值是定义赋值计算而来,类型是双精度浮点型(double)。
数据处理:表达式用了数学表达式与条件表达式,流程结构用的if-else结构。

1.1.3 PTA提交列表及说明

  • Q1:大于50的数学表达式错误。
  • A1:认真读题后,发现大于50的部分是提高0.0元/千瓦时。
  • Q2:一开始不知道多个if的使用方法。
  • A2:在除第一个if后的if前要加else。

1.2生成3的乘方表

输入一个非负整数n,生成一张3的乘方表,输出3⁰~3ⁿ的值。可调用幂函数计算3的乘方。

1.2.1 实验代码截屏

1.2.2 数据处理

数据表达:用了i、n和y变量,这些变量的值是定义赋值计算而来,类型是整数型(int)。
数据处理:表达式用了数学表达式与条件表达式,流程结构用了循环结构。

1.2.3 PTA提交列表及说明

  • Q1:答案部分正确,不知道哪里出了问题。
  • A1:将n误打为了0。

1.3 求N分之一序列前N项和

题目内容描述:本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。

1.3.1 实验代码截屏

1.3.2 数据处理

数据表达:用了N、i、sum变量,这些变量的值是定义赋值计算而来,类型分别是整数型与双精度浮点型。
数据处理:表达式用了条件表达式与数学表达式,流程结构使用循环结构。

1.3..3 PTA提交列表及说明

  • Q1:出来的是一张表。
  • A1:把最后的printf放在了if的大括号里。

2.0 阅读代码

找一份优秀代码,理解代码功能,并讲出你所选代码有点及可以学习的地方。参考网站:

ACM解题
leecode面试数题网站,找简单题目阅读分析。
注意:这部分内容回答太泛要倒扣5分

  1. 这个代码是任意排列a和b中的元素,计算a和b的每个序列的LCS(最长的“公共子序列”)的最大长度。而“公共子序列”是指对整数a和b的序列,通过删除a和b中的一些元素来使这两个序列相同,剩下的序列称为“公共子序列”。
  2. 第一眼看到这个题目的代码时是茫然的,有许多没有见过、学过的知识出现,但通过查阅资料后,知道了许多。例如,
  • 了解了#define的用法,#define又称宏定义,在可以用来定义一个标识符从而表示一个常量。
  • sort函数是对给定区间所有元素进行排序,默认为升序,也可进行降序排序。第一个参数是要排序的数组的起始地址,第二个参数是结束的地址(最后一个数据的后一个数据的地址)。
  • 这段代码用到了while循环,while循环的格式是,而while循环的执行顺序为当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环。
  • scanf("%d%d",&n,&m)!=EOF中的EOF是end of file的缩写,这个语句是判断是否正常输入三个值分别给三个变量。
  • 使用&&时只有当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。此外当第一个表达式为false,则不再计算第二个表达式。
  1. 虽然知道了#define的用法,但对这段代码中的使用仍旧有点迷茫。long long是属于int型,而#define ll long long是将程序中的ll替换成long long,但是程序中并没有出现ll ,那么为什么要这个语句呢,这个语句在程序里起了什么作用,这是我目前仍存的困惑。
    对于#define pi acos(-1.0)我只查到了acos是数学中反余弦函数的意思,此外还查到了这个语句在另外的一道题目(【#define PI acos(-1.0)】【非凸包】poj 2365 Rope)中用来定义π,具体在本程序中是干什么,我依旧存疑。还有就是之前老师说过,在int类型的函数的最后要加return 0;返回,用来表示完成本函数。但是在这段函数中并没有看到return 0;的存在,我也不是很清楚是不是因为函数类型的不同,所以不用加return 0;。

3. 学习总结

3.1 学习进度条

周/日期 这周所花时间 代码行 学到的知识点简介 目前比较困惑的问题
第一周 0天 0行 C语言知识的大纲 目前没有问题
第二周 3天 约20行 Hello world编程Markdown语法 目前没有问题
第三周 5天 约80行 华氏度与摄氏度的转换、调试 对应该如何调试还不太懂
第四周 5天 约90行 if-else语句 PTA作业在scanf语句处有警告,该如何修改
第五周 5天 约125行 for语句 对for语句的使用不够熟练

3.2 累积代码行和博客字数

时间 博客字数 代码行数
第一周 0 0
第二周 808 20
第三周 808 100
第四周 1426 190
第五周 2968 315

3.3 学习感悟

学习C语言也有几周时间了,刚接触是什么都不懂,觉得能打Hellow World!都很厉害,现在自己也能熟练的完成Hellow World!这类题目,if-else语句也能熟练使用。在这期间遇到了很多问题,但不管怎样都会有解决的方法。一个程序能否成功运行往往决定权都在一些微小的细节上,一个字母或是一个符号。
在课前进行了预习的那一节内容,在上课时往往效率会更高,更容易接受老师传授的知识。所以在之后的学习中,要进行课前预习,提高自己的上课效率。

posted @ 2020-11-07 13:49  彭樱  阅读(265)  评论(6)    收藏  举报