1. 程式人生 > 其它 >程式設計題:練習2-18 求組合數

程式設計題:練習2-18 求組合數

技術標籤:# 浙大版《C語言程式設計(第3版)》題目集c語言程式語言

題目要求:

本題要求編寫程式,根據公式在這裡插入圖片描述
​​ 算出從n個不同元素中取出m個元素(m≤n)的組合數。
建議定義和呼叫函式fact(n)計算n!,其中n的型別是int,函式型別是double。

輸入格式:

輸入在一行中給出兩個正整數m和n(m≤n),以空格分隔。

輸出格式:

按照格式“result = 組合數計算結果”輸出。題目保證結果在double類型範圍內。

輸入樣例:

2 7

輸出樣例:

result = 21

程式碼實現:

#include <stdio.h>
#include<stdlib.h>
double fact(int n) { int i = 1; double sum = 1.0; for (i = 1; i <= n; i++) { sum = sum * i; } return sum; } int main() { int m, n = 0; double s1, s2, s3 = 0; double result = 0; scanf("%d %d", &m, &n); s1 = fact(n); s2 = fact(m); s3 = fact(n - m); result = 1.0 * s1 / (
s2 * s3); printf("result = %.0lf\n", result); return 0; }

總結:

一定要根據題意去定義每一個臨時變數的型別。就像我,在函式體fact()中將sum的型別定義搞錯了寫成了int型,導致最後在pta練題上一直提示:“輸入:m==n/2”所導致的答案錯誤的資訊。之後檢查了許久,才發現型別定義錯誤,真的這種錯誤不能再犯。