程式設計題:練習2-18 求組合數
阿新 • • 發佈:2021-02-12
技術標籤:# 浙大版《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”所導致的答案錯誤的資訊。之後檢查了許久,才發現型別定義錯誤,真的這種錯誤不能再犯。