C 練習實例83

C 語言經典100例 C 語言經典100例

題目:求0—7所能組成的奇數個數。

程式分析:

這個問題其實是一個排列組合的問題,設這個數為 sun=a1a2a3a4a5a6a7a8,a1-a8 表示這個數的某位的數值,當一個數的最後一位為奇數時,那麼這個數一定為奇數,不管前面幾位是什麼數字。如果最後一位數為偶數,則這個數一定為偶數。

a1-a8可以取 0-7 這個八個數字,首位數字不為 0。

從該數為一位數到該數為8位數開始統計奇數的個數:

  • 1.當只有一位數時也就是該數的最後一位,奇數個數為4
  • 2.當該數為兩位數時,奇數個數為4*7=28
  • 3.當該數為三位數時,奇數個數為:4*8*7=224
  • ...
  • 8.當該數為八位數時,奇數個數為:4*8*8*8*8*8*8*7(依次為最後一位到第一位)

實例

// Created by www.xuhuhu.com on 15/11/9. // // #include<stdio.h> int main(int agrc, char*agrv[]) { long sum = 4, s = 4;//sum的初始值為4表示,只有一位數字組成的奇數個數為4個 int j; for (j = 2; j <= 8; j++) { printf("%d位數為奇數的個數%ld\n", j-1, s); if (j <= 2) s *= 7; else s *= 8; sum += s; } printf("%d位數為奇數的個數%ld\n", j-1, s); printf("奇數的總個數為:%ld\n", sum); // system("pause"); return 0; }

以上實例運行輸出結果為:

1位數為奇數的個數4
2位數為奇數的個數28
3位數為奇數的個數224
4位數為奇數的個數1792
5位數為奇數的個數14336
6位數為奇數的個數114688
7位數為奇數的個數917504
8位數為奇數的個數7340032
奇數的總個數為:8388608

C 語言經典100例 C 語言經典100例