第三次作業
作業要求 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
https://www.cnblogs.com/zcybky/p/10022913.html
https://www.cnblogs.com/moyoujiang/p/9939932.html