C语言经典例76-根据n的奇偶性累加
生活随笔
收集整理的這篇文章主要介紹了
C语言经典例76-根据n的奇偶性累加
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 1 題目
- 2 分析
- 3 實現
- 4 運行結果
1 題目
編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+…+1/n,當輸入n為奇數時,調用函數1/1+1/3+…+1/n(利用指針函數)。
2 分析
首先判斷n的奇偶性,通過if控制語句對2取余來判斷,再根據n的奇偶性調用不同的計算方法,這里把兩個計算方法寫成兩個函數,不難發現累加的規律為當n為偶數時,所有累加項都是以1為分子,分母是從2開始的偶數序列;當n為奇數時,所有累加項分子也是1,分母則是從1開始的奇數序列。
注:本題使用函數指針來實現。
3 實現
#include <stdio.h> #include <stdlib.h> double evenumber(int n); double oddnumber(int n);int main() {int n;double sum;double (*pfunc)(int); // 定義函數指針printf("請輸入n:");scanf("%d", &n);if (n % 2 == 0) { // 判斷奇偶pfunc = evenumber; // 偶數函數} else {pfunc = oddnumber; // 奇數函數} sum = (*pfunc)(n); // 通過指針調用函數printf("%lf\n", sum);return 0; }// 當n為偶數時 double evenumber(int n) {double s = 0; // 累加和double a = 0; // 保存每一項的臨時變量for (int i = 2; i <= n; i += 2) {a = (double)1/i; // 該除法會出現小數,所以要強制轉換s += a; // 累加}return s; }// 當n為奇數時 double oddnumber(int n) {double s = 0; // 累加和double a = 0; // 保存每一項的臨時變量for (int i = 1; i <= n; i += 2) {a = (double)1/i; // 該除法會出現小數,所以要強制轉換s += a; // 累加}return s; }4 運行結果
PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF } 請輸入n:10 1.141667 PS E:\C++WorkSpace> cd "e:\C++WorkSpace\" ; if ($?) { g++ FFF.cpp -o FFF } ; if ($?) { .\FFF } 請輸入n:51 2.610834 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的C语言经典例76-根据n的奇偶性累加的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言经典例75-反转整数
- 下一篇: C语言经典例79-字符串排序