作業要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360。
第11周:
7-1 求簡單交錯序列前N項和 (15 分)
本題要求編寫程序,計算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N項之和。
輸入格式:
輸入在一行中給出一個正整數N。
輸出格式:
在一行中按照“sum = S”的格式輸出部分和的值S,精確到小數點后三位。題目保證計算結果不超過雙精度范圍。
輸入樣例:
10
輸出樣例:
sum = 0.819
一、實驗代碼
#include<stdio.h> int main(void) { int x,N,a=1; double y=0; scanf("%d",&N); for(x=1;x<=1+3*(N-1);x=x+3){ y=y+a*1.0/x; a=-a; } printf("sum = %.3lf",y); return 0; }
二、解題思路
1.步驟
第一步:分析題意並定義四個變量x、y、N、a、令a=1,y=0。
第二步:輸入一個正整數N。
第三步:利用for循環語句計算出每一項的值並求出他們的和y,即y=y+a*1.0/x。因為一項是正數、一項是負數,所以引入a=1並使每次的a=-a來改變正負。
第四步:輸出y並保留3位小數。
2.流程圖
3.本題調試過程碰到問題及解決辦法
第12周:
7-1 求整數的位數及各位數字之和 (15 分)
對於給定的正整數N,求它的位數及其各位數字之和。
輸入格式:
輸入在一行中給出一個不超過109的正整數N。
輸出格式:
在一行中輸出N的位數及其各位數字之和,中間用一個空格隔開。
輸入樣例:
321
輸出樣例:
3 6
一、實驗代碼
#include<stdio.h> int main(void) { int N,n=0,sum=0; scanf("%d",&N); do{ sum=sum+N%10; N=N/10; n++; } while(N!=0); printf("%d %d",n,sum); return 0; }
二、解題思路
1.步驟
第一步:定義三個變量 N,n,sum
第二步:根據題意寫出循環條件
第三步:寫出算法
第四步:輸出位數n與個數字之和sum
2.流程圖
3.本題調試過程碰到問題及解決辦法
第13周:
6-1 求m到n之和 (10 分)
本題要求實現一個計算m~n(m<n)之間所有整數的和的簡單函數。
函數接口定義:
int sum( int m, int n );
其中m
和n
是用戶傳入的參數,保證有m<n。函數返回的是m~n之間所有整數的和。
裁判測試程序樣例:
#include <stdio.h> int sum(int m, int n); int main() { int m, n; scanf("%d %d", &m, &n); printf("sum = %d\n", sum(m, n)); return 0; } /* 你的代碼將被嵌在這里 */
輸入樣例:
-5 8
輸出樣例:
sum = 21
一、實驗代碼
int sum(int m,int n){ int i,y=0; for(i=m;i<=n;i++){ y=y+i; } return y; }
二、解題思路
1.步驟
第一步:分析題意,得知自定義的函數sum是用於求m~n之間整數的和。
第二步:在sum函數內定義變量i,y=0。
第三步:寫出循環條件和算法。
第四步:返還m~n之間整數的和y的值。
2.流程圖
3.本題調試過程碰到問題及解決辦法
個人總結:
通過這一段時間的學習,我學習到了幾種循環語句和自定義函數的方法