#include<stdio.h>
double fac(int m, int n) {
int i, j, k, l, q, t;
double s;
s = 0;
l = 1;
q = 1;
t = 1;
for (i = 1;i <= m;i++) {
l = l * i;
}
for (j = 1;j <= n;j++) {
q = q * j;
}
for (k = 1;k <= (m - n);k++) {
t = t * k;
}
s = l / q / k;
return s;
}
int main() {
long int m, n;
scanf_s("ld ld", &m, &n);
if (m < n && m>0 && n > 0) {
printf("0");
return 0;
}
if (m == n && m > 0 && n > 0) {
printf("1");
return 0;
}
if (m > n && m > 0 && n > 0) {
printf("%lf", fac(m, n));
return 0;
}
else printf("-1");
return 0;
}
uj5u.com熱心網友回復:
#include<stdio.h>
//double fac(int m, int n)
double fac(long int m, long int n)
{
int i, j, k, l, q, t;
double s;
s = 0;
l = 1;
q = 1;
t = 1;
for (i = 1;i <= m;i++) {
l = l * i;
}
for (j = 1;j <= n;j++) {
q = q * j;
}
for (k = 1;k <= (m - n);k++) {
t = t * k;
}
s = l*1.0 / q / k; //保證這個運算是double型別的
return s;
}
int main()
{
long int m, n;
//scanf_s("ld ld", &m, &n);
scanf_s("%ld %ld", &m, &n);
if (m < n && m>0 && n > 0) {
printf("0");
return 0;
}
if (m == n && m > 0 && n > 0) {
printf("1");
return 0;
}
if (m > n && m > 0 && n > 0) {
printf("%lf", fac(m, n));
return 0;
}
else
printf("-1");
return 0;
}
供參考~
//scanf_s("ld ld", &m, &n);
scanf_s("%ld %ld", &m, &n);對比一下問題
注意事項:
s = l*1.0 / q / k; //保證這個運算是double型別的
//double fac(int m, int n)
double fac(long int m, long int n)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/223330.html
標籤:C語言
上一篇:求指點順序堆疊的出堆疊入堆疊操作
