https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360
第七次作业(循环)
7-2 求分数序列前N项和
1.实验代码
#include <stdio.h> int main(){ int N,i; double sum=0,a=2,b=1; scanf("%d",&N); for(i=1;i<=N;i++){ sum=a/b+sum; a=a+b; b=a-b; } printf("%.2f",sum); return 0; }
2.(1)解题思路
第一步:通过分析题目可知,需要找到分子和分母的通项公式,再加入到循环体中就可以了。
第二步:题中要求,结果精确到后两位,所以在定义分子,分母,以及总和时要用double来定义。
(2)流程图
3.本题调试过程碰到问题及解决办法
在一开始的编辑过程中遇到过一点小问题,在分子分母的赋值过程中,每一项的分子是前一项分子与分母的和,分母是前一项的分子
我将分母用a赋值,但在赋值分母之前,我已经将分子a赋里一个新的值,所以要在原有基础上再减去一个之前的分母。
调试过程
先进入循环
分子赋值
分母赋值
再次进入循环
第九次作业(循环)
7-2 输出闰年
1.实验代码
#include<stdio.h> int main() { int number,i; scanf("%d",&number); if(number<=2000||number>2100){printf("Invalid year!");} else{ for(i=2001;i<=number;i++){ if(i%4==0&&i%100!=0||i%400==0){ printf("%d ",i); } } } if(number<=2003&&number>=2001){ printf("None"); } return 0; }
2.解题思路
第一步:划分区间分为三个部分小于2000,2000-2100,大于2100。
第二步:加入for循环,判断在2000-2100之间的闰年,在for循环中嵌套if条件语句。
第三步:输出结果。
流程图
3.本题调试过程碰到问题及解决办法
在第一次变异的过程中,出现了许多的小问题。在改正后
第二次我用while循环做的还是存在些许问题。
最后我用上述代码,for循环解决了所有的问题。
调试的过程
首先我输入的是2004
进入循环判断,从i=2001开始
当i=2004循环结束
i=2005跳出循环,结束。结果只有2004一个闰年。
第十一次作业(函数)
6-1 求m到n的和
1.实验代码
#include <stdio.h> int sum(int m, int n); int main() { int m, n; scanf("%d %d", &m, &n); printf("sum = %d ", sum(m, n)); return 0; } int sum( int m, int n ){ int i,result=0; for(i=m;i<=n;i++){ result+=i; } return result; }
return 0,之前的代码是题中已知的。
2.解题思路
第一步:总体来说这道题相当简单。主函数已将给出,只需将子函数一个循环,最后在返还到主函数中输出即可。
流程图
3.本题调试过程碰到问题及解决办法
运行结果
调试过程
我先输入m,n为1,2,结果应该是3
从主函数中进入子函数
进入子函数后,进入循环
循环结束
再将结果传回主函数输出
结果等于3,和预估结果相同。
个人总结
在本周的学习中,我对于循环语句的学习进一步深入,循环中的循环,在循环中嵌套循环,同时我还学习到函数。
在一开始学习函数时,我不太理解主函数与子函数之间的关系,不懂函数有什么用处,但在做题实践中,我发现,函数的使用可以让题变得更清晰,更加简单易懂。
折线图
https://www.cnblogs.com/chen0803/p/10046139.html