第三次作业
作业要求 https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359
PTA第6次作业 7-3求平方与倒数序列的部分和
#include <stdio.h> int main() { double m,n; double sum,S=0,a; scanf("%lf %lf",&m,&n); for(;m<=n;m++){ a = m*m+1/m; S = S + a; sum = S; } printf("sum = %.6f",sum); return 0; }
解题思路:
第一步,定义m,n,sum,s,a,输入m,n的值;
第二步,判断m与n的大小关系,若m<=n,则执行循环;
第三步,m^2+1/m+(m+1)^2+1/(m+1)+⋯+n^2+1/n,根据公式推出a=m*m+1/m,令累加之和S=s+a;
第四步,令sum=S,输出sum
流程图:
运行结果:
出现问题:
结果与PTA中例子一致,但有测试点未过
输入S时没有定义初始值为0
解决方法:
输入S时将S定义初始值为0
PTA 第7次作业 7-1
#include <stdio.h> #include <math.h> int main() { double a = 0,b=1,sum = 0,i,c=1; scanf("%lf",&a); for(i=1;i<=a;i++){ sum = sum + c/b; b = b + 3; c=-c; } printf("sum = %.3lf",sum); return 0; }
解题思路:
第一步,定义a=0,b=1,sum=0,i,c=1;
第二步,输入a
第三步,判断i<=a?;若是,执行sum = sum + c/b;b = b + 3;c=-c;
第四步,输出sum
流程图:
运行结果:
出现问题:
与PTA中样例不一致,b在循环中出现问题
第一次循环执行程序时,b=1,与预期一致
第二次执行循环时,b=-1,与预期不同
解决方法:
引入新变量c,令c=1,循环一次时c=-c;
PTA 第8次作业 7-1
#include <stdio.h> int main() { int a=0,b,c=0; scanf("%d",&a); for(;a>0;){ c=a%2; if(c!=0&&a>0){ b=b+a; } scanf("%d",&a); } if(a<=0){ printf("%d",b); return 0; } printf("%d",b); return 0; }
流程图:
运行结果:
解题思路:
第一步,定义a,b,c
第二步,输入a,根据题意,判断a是否大于0,使其与样例一致,输入负数时打印结果
第三步,判断a是否为奇数,如果a是奇数,则执行sum=sum+a
第四步,输出sum
出现问题:
a可以一直输入,当a<0时,仍可以输入
问题原因:
解决方法:
for循环加入a>0条件判断
总结:
要注意for循环中的条件,注意for循环嵌套if语句
点评博客:
https://www.cnblogs.com/abcefg123/p/10022904.html