C语言I博客作业04
作业头
这个作业属于哪个课程 | C语言程序设计II |
这个作业的要求在哪里 | C语言I作业04 |
我在这门课程的目标是 | 学好C语言为学习以后的语言做准备 |
这个作业在那个具体方面帮助我实现目标 | 对for语句的运用,运算细节(求小数),思考能力等 |
参考文献 | 《C语言程序设计I》,《C Primer Plus》,Dev-c++. |
1.PTA实验作业
1.1求平方与倒数序列的部分和.
1.题目内容描述:
- 本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+······+n^2+1/n.
1.1.1实验代码截图.
1.1.2数据处理.
1.数据表达:
- (1).定义了m,n两个正整数,都是整型,还有双精度浮点型sum(求和)。
- (2).运用了math.h输出头文件,用了scanf()函数,for()语句。
2.数据处理: - (1).输入m,n,scanf("%d %d",&m, &n).
- (2).循环条件for(m=m;m<=n;m++).
- (3).运算处理sum=sum+pow(m,2)+1.0/m.
- (4).输出函数printf("sum = %lf",sum).
1.1.3 造测试数据.
输入数据 | 输出数据 | 说明 |
2 8 | 204.717857 | m,n<10均为为正整数 |
50 60 | 33385.200665 | m,n<=60均为正整数 |
100 200 | 2358350.700653 | m,n<=200均为正整数 |
1.1.4PTA提交列表及说明.
编译错误:开始时没有考虑到在&m&n之间要用“,”所以导致了编译错误.
解决方法:查阅书籍发现调用scanf()函数输入多个数据时,需要用“,”分开&n&m等.
1.2求交错序列前N项和.
1.题目内容描述:
- 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
1.2.1实验代码截图.
1.2.2数据处理.
1.数据表达:
- (1).定义了flag(用做符号的交替),n(输入的正整数),变量i,都是整型,
- (2).还有sum(求和),item变量,是双精度浮点型。还用了scanf()函数,for()语句。
2.数据处理: - (1).输入正整数n,scanf("%d",&n).
- (2).循环条件for(i=1;i <= n;i++).
- (3).输出函数printf("%.3f",sum).
- (4).运算处理item=flag(1.0i/(2*i-1));sum=sum+item; flag=-flag.
1.2.3 造测试数据.
输入数据 | 输出数据 | 说明 |
1 | 1.000 | 10>n为正整数 |
68 | 0.391 | 10<n<100为正整数 |
168 | 0.392 | 100<n<200为正整数 |
668 | 0.393 | 200<n<1000为正整数 |
1086 | 0.393 | 1000<n<1100为正整数 |
1.2.4PTA提交列表及说明.
答案错误:做题不认真,我在printf()内输入了Enter sum = %.3f,导致答案错误,
解决方法:在题目中说明了输出的值只为一个数,后面把Enter sum去掉了,就正确了.
2.代码互评.
1.同学代码截图:
2.同学代码截图:
3.自己代码截图:
与第一位同学的区别:
- 1.在增值方面不同,她的代码是i=i+2,而我的是i++,她的代码在后面的编写中要简单一些,
易懂,也很简洁,而我的代码在前面(赋值)的编写中要简单一些. - 2.在定义上我定义输入的数为numble,而她是N,可见她的要简洁一些,我的易懂一些.
- 3.还有一个小细节,她在保留六位有效小数是%.6f,这当然没有错,而我的是%lf,都是一个意思.
与第二位同学的区别: - 1.最主要就是在格式说明不同.
- 2.同学是用%f,而我是用%lf,其实也没有太大的区别,区别是
- (1) 代表数据类型不同,%f(float)是单精度浮点型,%lf(double)是双精度浮点型.
- (2) 有效数字位数不同.单精度浮点数有效数字保证6位,部分7位,双精度浮点数有效数字保证15位,部分16位。也就是说双精度浮点型更加准确.
- (3)所能表示数的范围不同.单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38,双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308.
- (4).在程序中处理速度不同,一般来说,CPU处理单精度浮点型数要比双精度浮点型数要快. 但读入浮点数用%lf,输出浮点数用%f.
来自搜索引擎,第二点看不懂
3.学习总结.
3.1学习进度条.
时间 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
第一周 | 16个小时 | 28行 | 学到了编写代码的基本知识,如:顺序结构 | 符号(英)与(汉)混淆 |
第二周 | 20个小时 | 20行 | 学到了运算符,赋值 | 主要是赋值,在printf中“="左右要空格其他就不用了 |
第三周 | 23个小时 | 98行 | 学到了分支结构(if-else),&&,%,幂运算pow,平方根sqrt | 对一些新知识不能马上运用 |
第四周 | 16个小时 | 70行 | 学到了for语句,求小数点(要求用1.0来除以···),还有该变正负号知识 | 现在没问题了,在scanf()内&n&m之间要用“," |
3.2累计代码行数和博客字数.
3.3学习内容总结和感悟.
3.3.1学习内容总结.
本周学习了很多知识如:
- 1. for() 循环语句、i++、 for(i=1;i<=n;i++) i从1开始循环到小于等于n,其中i++为先赋值i后再加1.
- 2.flag正负号的转换、 flag = -flag.
- 3.求精确小数点,在计算机除法中要用有小数点的数除以一个数才能有精确小数点.
- 4.用计算机可以解决(1). 序列和mˇ2+1/m+(m+1)ˇ2+1/(m+1)+⋯+nˇ2+1/n等等数学求和问题.
3.3.2学习体会.
1.感觉每次写PTA作业都是先慢后快的,做每一个题都会有很多需要注意的地方,做完了第一题,后面要注意的也都会注意了.也就是从开时每天晚上写到十一点半到十二点写不出的难受,到后面灵感来了洗一个澡后一下就写出一个题的开心,慢慢地培养了对C的兴趣,感觉自己慢慢地从一个C小白变得越来越懂了,这是我很开心的事情,相信这也是老师为什么要布置这么多作业的原因.
2.我想对琛哥说的是,求序列 1 + 1/2 + 1/3 + ... 的前N项之和跟求序列 1 + 1/3 + 1/5 + ... 的前N项之和差不多,所以我想这两个题只出一个就行了,再另外出一个有特色的题.