这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/SE2020-4 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11451 |
这个作业的目标 | 掌握使用for循环语句实现指定次数的循环程序设计 |
学号 | 20209217 |
1.PTA实验作业(15分/题)
从PTA题目集中选出3个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题2分。
1.1 求简单交错序列前N项和 (15分)
题目内容描述:本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范
围。
输入样例:
10
输出样例:
sum = 0.819
1.1.1实验代码截图
1.1.2数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。
数据表达:所用变量:i,k,N,flag,sum;这些变量的值的来源:N是自定义的,i是每循环一次后在原有的基础上加1,k=1 + 3 * (i - 1),flag=-flag,sum = sum + flag * 1.0
/ k;类型:整型,双精度浮点型。
数据处理:数据用到的表达式:k=1 + 3 * (i - 1);sum = sum + flag * 1.0 / k;flag=-flag;流程结构:循环结构。
1.1.3 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
- Q1:当看到编译错误后,回头再检查了一遍,觉得没什么问题
- A1:将sum = sum + flag * 1.0 / [1 + 3 * (i - 1)]变换了一下,定义了一个k,并将表达式改成k=1 + 3 * (i - 1);sum = sum + flag * 1.0 / k答案才正确
1.2 求分数序列前N项和 (15分)
题目内容描述:本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
1.2.1 实验代码截图
1.2.2 数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。
数据表达:所用变量:N,i,a,b,c,d,sum;这些变量的值的来源:N是自定义的,i是每循环一次后在原有的基础上加1,d=b;c=a + d;b=a;a=c;sum=sum + a / b;类型: 整型,双精度浮点型。
数据处理:数据用到的表达式: d=b;c=a + d;b=a;a=c;sum=sum + a / b;流程结构: 选择结构、循环结构。
1.2.3 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
- Q1:答案出现错误
- A1:试了很多遍后,发现表达式d=b;c=a + d;b=a;a=c;的顺序排错了,后将顺序调整后最终答案才正确
1.3 求平方根序列前N项和 (15分)
题目内容描述:本题要求编写程序,计算平方根序列√1+√2+√3+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 22.47
1.3.1 实验代码截图
1.3.2 数据处理
介绍实现本题过程中,你的数据表达、数据处理是怎么做的。
数据表达:所用变量:N,i,sum;这些变量的值的来源:N是自定义的,i是每循环一次后在原有的基础上加1,sum=sum + sqrt(i);类型: 整型,双精度浮点型。
数据处理:数据用到的表达式: sum=sum + sqrt(i); 流程结构: 循环结构。
1.3.3 PTA提交列表及说明
根据PTA提交列表,简要描述调试程序碰到的问题及解决办法。
- Q1:显示段错误
- A1:发现犯了一个低级错误,变量名N面前缺了一个取地址运算符&
- Q2:显示格式错误
- A2:发现在输出语句的里面多按了一个空格,删除多余空格后才显示正确
2.阅读代码(-5——5分)
找一份优秀代码,理解代码功能,并讲出你所选代码有点及可以学习的地方。
来源:https://www.nowcoder.com/ta/acm-solutions?query=&asc=true&order=&page=2
链接:https://www.nowcoder.com/ta/acm-solutions/review?tpId=20&tqId=11234&query=&asc=true&order=&page=8
问答题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入描述
第一行是测试数据
输出描述
对输入的每组数据M和N,用一行输出相应的K。
输入例子
1
7 3
输出例子
8
#include<stdio.h>
int fun
{
if(m==0||n==1)
return 1;
if(n>m)
return fun(m,m);
else
return fun(m,n-1)+fun(m-n,n);
}
int main()
{
int T,m,n;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&m,&n);
printf("%d
",fun(m,n));
}
}
此代码功能:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
学习的地方:认识了fun函数,C语言中,fun函数是用调用主函数的。它是指用来定义一个函数或是方法,这版样在引用权时可以用fun表示。比如fun(int x,y),
fun(int x,y) 有上面的出现,必然在主函数里有调它,fun没有其它意思,只是在调时用到这个单词,上面的意思是调用主函数中的数值。if(m==0||n==1)中
的“||”表示“或”的意思。while(T--)中,T--是自减运算,是每次T自身减1,while(T--)就是当T自身减到0就退出循环。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第三周 | 4天 | 156 | for语句 | 在综合表达式中,不知道为什么不能用"[ ]" |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 638 | 12 |
第二周 | 562 | 97 |
第三周 | 2058 | 156 |
3.3 学习感悟(5分)
1.感觉题目越来越难了,要花费更多的时间才能解决,但在通过自己一步一步解决问题的过程中的感觉真的很爽;
2.在写一些逻辑性比较强的代码时,不要一股脑的去编写,要把思绪理清楚再写;
3.对for语句越来越熟练了;
4.要继续努力学习并加强练习C语言。