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分

- 这个代码是任意排列a和b中的元素,计算a和b的每个序列的LCS(最长的“公共子序列”)的最大长度。而“公共子序列”是指对整数a和b的序列,通过删除a和b中的一些元素来使这两个序列相同,剩下的序列称为“公共子序列”。
- 第一眼看到这个题目的代码时是茫然的,有许多没有见过、学过的知识出现,但通过查阅资料后,知道了许多。例如,
- 了解了#define的用法,#define又称宏定义,在可以用来定义一个标识符从而表示一个常量。
- sort函数是对给定区间所有元素进行排序,默认为升序,也可进行降序排序。第一个参数是要排序的数组的起始地址,第二个参数是结束的地址(最后一个数据的后一个数据的地址)。
- 这段代码用到了while循环,while循环的格式是
,而while循环的执行顺序为当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环。 - scanf("%d%d",&n,&m)!=EOF中的EOF是end of file的缩写,这个语句是判断是否正常输入三个值分别给三个变量。
- 使用&&时只有当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。此外当第一个表达式为false,则不再计算第二个表达式。
- 虽然知道了#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语句也能熟练使用。在这期间遇到了很多问题,但不管怎样都会有解决的方法。一个程序能否成功运行往往决定权都在一些微小的细节上,一个字母或是一个符号。
在课前进行了预习的那一节内容,在上课时往往效率会更高,更容易接受老师传授的知识。所以在之后的学习中,要进行课前预习,提高自己的上课效率。


浙公网安备 33010602011771号