这个作业属于哪个课程 | C语言程序设计I |
---|---|
这个作业要求在哪里 | 作业链接 |
我在这个课程的目标是 | 熟悉掌握for语句 |
这个作业在那个具体方面帮助我实现目标 | PTA的for语句练习及博客园作业展示 |
参考文献 | 作业评价标准 |
1、PTA实验作业
1.1 求平方与倒数序列的部分和
问题描述:本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。
1.1.1 数据处理
- 数据表达:使用了m、n、sum和item,分别代表m,n两个变量、序列和和第i项,前两个类型为整型变量,后两个为双精度浮点型变量。
- 数据处理:使用int与double定义变量,scanf来输入数据,if-else进行分支来处理不同数据,for语句进行循环计算, 最后用printf输出数据。其中还使用了数学函数pow来计算幂函数,表达式为item=pow(m,2)+1.0/m和sum=sum+item
1.1.2 实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
1 10 | 387.928968 | 前十个数据之和——运行图 |
5 10 | 355.845635 | 题目样例——运行图 |
1 100 | 338355.187378 | 前一百个数据之和——运行图 |
1.1.4 PTA提交列表及说明
- 1、多种错误:输入数据时两个数字间没有空格,分子没有用1.0,多个语句少了分号。
- 2、答案错误:没有注意要保留六位小数。
- 3、部分正确:没有考虑到m=n的情况。
- 3、部分正确:考虑到了m=n的情况,但是for语句的第一个表达式写的m=1,应该改为m=m。
1.2 求交错序列前N项和
问题描述:本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
1.2.1 数据处理
- 数据表达:使用了denominator表示分母,N表示输入的数据,flag为自定义的变量用来表示每一项的符号,sum表示所求和的值,item表示第i项,i表示循环次数,numerator表示分母。
- 数据处理:同样使用int与double定义变量,scanf来输入数据,for语句进行循环计算, 最后用printf输出数据。用到的表达式有:
item=flag·numerator/denominator,sum=sum+item,
flag=-flag,denominator=denominator+2,
numerator=numerator+1.0
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
0 | 0.000 | 最小偶数——运行图 |
1 | 1.000 | 最小奇数——运行图 |
8 | 0.377 | 偶数——运行图 |
11 | 0.904 | 奇数——运行图 |
5 | 0.917 | 题目样例——运行图 |
1.2.4 PTA提交列表及说明
- 1、编译错误:numerator作为分子,应该设为浮点型以确保item为浮点型变量。
- 2、编译错误:numerator单词打错了。
- 3、部分正确:flag前漏了负号。
2、代码互评
C语言第三次作业代码比较——参考同学——图片链接
图一是同学的,图二是我的。
- 1、变量定义,输入和输入都是一样的,但我是先进行求余运算,再用if-else对余数x进行关系运算,所用运算符为“与”(&&),从而得出结果;而该同学是直接在if-else语句中使用逻辑运算符“或”(||)来对初始数据进行关系运算。
- 2、同意题目,答案一致,过程却不一样,不管是哪种方法都有它的优点和缺陷;我先进行求余运算能使过程更加简洁明了,但多加入了一个变量x,更容易出现错误;该同学没有加入新的变量使得出现错误的几率变小,题目准确度更高,但打的代码更多,耗费时间更多一些。
- 3、学以致用,寻找更简单准确的方法一直是我的目标。
3、学习总结
3.1 学习进度条
日期 | 这周所花的时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
10/7--10/13 | 9+个小时 | 100+ | 编写if-else语句,算术运算与赋值运算规则等 | while语句的使用以及适用范围 |
10/14--10/20 | 8+个小时 | 190+ | for的使用,if-else与for的组合使用 | while与for的区别 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
- 1、for语句:由三个表达式确定执行循环次数以及是否执行下一条语句,循环体语句过多时要用{}括在一起。
- 2、逻辑运算符:&&和||等均为逻辑运算符,与其他运算符的优先级关系为——! > 算术运算符 > 关系运算符 > && > || > 赋值运算符。
3.3.2 学习体会
答:这周学习相对轻松,因为之前有提前自学循环语句,所以for语句学起来很容易上手,要说难点的话,我目前觉得最大的难点是关于while和for的区别吧,共同点是两者都用于循环结构,但其区别我到现在还没搞清楚。C语言学起来并不是像传闻中那样十分枯燥无味,当你投入到其中时,你可能只会因为解决了一道难题,发现了一个技巧而开心半天,从而想更上一层楼,那种成就感是只有亲身体会才能理解的。