C语言I博客作业04

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9770
我在这个课程的目标是 掌握各大数学函数、循环语句的调用及关系运算符的运用
这个作业在那个具体方面帮助我实现目标 掌握使用for循环语句实现指定次数的循环程序设计
参考文献 《C语言程序设计》

一、PTA实验作业

1.1求平方与倒数序列的部分和

题目内容描述:本题要求对两个正整数m和n(m≤n)编写程序,计算序列和\(m^2+1/m+(m+1)^2​​+1/(m+1)+⋯+n^2​​+1/n\)
输入格式:输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。

1.1.1数据处理

数据表达:在调入输出函数之后,该题要用到幂函数,所以加入#include<math.h>.再用int定义两个整型变量m,n。用double定义双精度浮点型变量sum。(sum表示累加和。)再调用scanf()函数输入m,n。然后使用for语句执行循环,最后输出sum的值。
数据处理:在进入循环之前设置相关变量的初值,置sum为0,以保证sum在0的基础上累加。然后用for语句实现循环,进行累加时需要注意运用幂函数pow(x,n)的形式来表达\(m^2+1/m\)

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
1 2 6.500000 较小的数
4 4 16.250000 m=n
10 17 1500.610584 较大的数
3 20 2867.097740 m<<n

1.1.4 PTA提交列表及说明

1.格式错误:调用scanf函数输入m,n时两个%d中间没打空格,导致输入的多个数据之间没有间隔,在两个%d中添加一个空格解决问题。
2.多种错误:将for语句中的循环体语句中幂函数表达为pow(m,2)+1/m,把1换成1.0解决问题。
3.答案错误:输出sum的值时=两边没有打空格,导致与题目所要求的格式不同,直接复制题目给出的输出格式中的sum = 解决问题。

1.2 求交错序列前N项和

题目内容描述:本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
输入格式:输入在一行中给出一个正整数N。
输出格式:在一行中输出部分和的值,结果保留三位小数

1.2.1 数据处理

数据表达:求前n项和,意味着循环n次,每次累加1项。先用int定义三个整型变量i,flag,n。(i表示循环的次数。flag表示第i项的符号,初始为正。)再用double定义双精度浮点型变量sum。(变量sum存放累加和。)调用scanf()语句输入n。然后使用for语句执行循环,最后输出sum的值。
数据处理:在执行循环之前设置相关变量的初值,即flag=1,sum=0。找出序列中每一项分子与分母的规律,得出公式。在每次循环执行flag=-flag可以实现正负交替变化

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
3 0.933 较小的数
5 0.917 较小奇数
31 0.897 较大奇数
8 0.377 较小偶数
40 0.390 较大偶数
100 0.391 较大的数

1.2.4 PTA提交列表及说明

1.答案错误:在设置循环体语句中的表达公式时,分母没有用括号括起来,导致整个公式不能计算,在分母上添加括号解决问题。
2.答案错误:调用scanf()函数时在%和d中间打了一个空格,导致格式控制说明错误,删去空格解决问题。
3.答案错误:在设置循环体语句中的表达公式时,打成flag*1,导致输出的结果会是整数,将1改成1.0解决问题。
4.答案错误:输出时使用了sum=,通过查看输出样例,直接输出保留三位小数的值即可,删去sum=解决问题。

二、代码互评

题目:7-2 求奇数分之一序列前N项和

同学代码截图

自己代码截图

相同之处

  • 用int定义了整型变量n和i,i表示循环的次数。
  • 用double定义双精度浮点型变量sum。
  • 都运用了for语句执行循环。

不同之处

  • 她在用double定义双精度浮点型变量sum时就置sum为0,我是在用double定义sum之后再置sum为0。 设置的循环步长的表达式为i=i+2,我的是i++。
  • 她定义的i表示分母,在设置for语句中的表达式为i=i+2,即每次循环时分母递增2.我用int定义了整型变量denominator,denominator表示每一项的分母,初始为1,对应第一项分母为1,每次循环分母都递增2,即执行denominator=denominator+2.

题目:7-3 求简单交错序列前N项和

同学代码截图

自己代码截图

相同之处

  • 用int定义了整型变量n和i,i表示循环的次数。
  • 用double定义双精度浮点型变量sum。
  • 都运用了for语句执行循环。

不同之处

  • 她在写循环体语句时,对i进行了取余,运用if-else语句,如果余数为0,本次循环需要变号为负才能继续累加;我是在每次循环执行flag=-flag来实现正负交替。

三、学习总结

3.1 学习进度条

这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周 6小时 29行 对C语言、markdown语法,编程有了初步的认识 对编程一窍不通,只会照着书上打
第二周 8小时 19行 学会如何提问,安装MinGW-w64并用它编译C程序 markdown语法掌握不熟练
第三周 10小时 96行 关系运算、if-else语句、格式化输入语句scanf(),以及常用的数学库函数 对编程中各大语句的运用不熟悉
第四周 13小时 93行 for循环语句实现指定次数的循环程序设计 运用for语句时因为总会出现很多错误

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

本周主要学习了for循环语句实现指定次数的循环程序设计。for语句的一般形式为:
for (表达式1;表达式2;表达式3)
循环体语句

  • 两个分号分隔三个表达式,但for的后面没有分号,因为for与其后面的循环体语句合起来作为一条完整的语句。
  • 如果循环体语句由多条语句组成,必须用大括号把它们括起来,变成一条复合语句。
  • i++是用来设置循环步长的表达式,一定不能漏。
  • 每次循环执行flag=-flag可以实现正负交替变化
  • 变量denominator表示每一项的分母。变量item定义为浮点型变量,表示第i项。

3.3.2 学习体会

通过开学以来每周一次的博客,对markdown语法已经越来越熟悉。写一篇博客,不但在于内容充实,同时排版也要让人看起来赏心悦目。本周学习了for循环语句实现指定次数的循环程序设计。打PTA时经常犯很多错误,但是犯的错越多,我收获的也就越多。犯错或者不懂的话就去网络或书本上寻找问题的答案,或者是向同学求助,但是一定要锻炼自己独立思考的能力,才能在每一次作业中进步。

posted @ 2019-10-17 15:08  沈星楼  阅读(400)  评论(7编辑  收藏  举报