标题:有一个问题不懂,指教
只看楼主
chenyuxi2016
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-9-22
结帖率:0
已结贴  问题点数:20 回复次数:20 
有一个问题不懂,指教
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
float proc(int m,int n)
{
float s;
int A=1,B=1,C=1,i,j,k,x;
x=m-n;
for(i=1;i<=m;i++)
A*=i;
for(j=1;j<=n;j++)
B*=j;
for(k=1;k<=x;k++)
C*=x;
if(m>n)
s=A/(B*C);
return s;
}
void main()
{
system("CLS");
printf("p=%lf\n",proc(20,10));
}





本题求m!/(n!(m-n)!)实在不知道错在哪里求助
搜索更多相关主题的帖子: include 
2016-09-22 09:54
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:0 
int数据溢出了,改成double试试
2016-09-22 10:07
chenyuxi2016
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-9-22
得分:0 
回复 2楼 grmmylbs
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
float proc(int m,int n)
{
float s;
double A=1.0,B=1.0,C=1.0;
int i,j,k,x;
x=m-n;
for(i=1;i<=m;i++)
A*=i;
for(j=1;j<=n;j++)
B*=j;
for(k=1;k<=x;k++)
C*=x;
if(m>n)
s=A/(B*C);
return s;
}
void main()
{
system("CLS");
printf("p=%lf\n",proc(20,10));
}




这样吗?但是结果还是不对啊   主要是单个输出值的话 20!结果是不对的。。。也不知道错在哪里
2016-09-22 10:15
demon90s
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:44
专家分:121
注 册:2016-1-3
得分:4 
int改成long long

s=(float)A/(B*C);

[此贴子已经被作者于2016-9-22 10:26编辑过]

2016-09-22 10:21
chenyuxi2016
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-9-22
得分:0 
回复 3楼 chenyuxi2016
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
float proc(int m,int n)
{
float s;
int A=1,B=1,C=1, i,j,k,x;
x=m-n;
for(i=1;i<=m;i++)
A*=i;
for(j=1;j<=n;j++)
B*=j;
for(k=1;k<=x;k++)
C*=x;
if(m>n)
s=(float)A/(B*C);
return s;
}
void main()
{
system("CLS");
printf("p=%lf\n",proc(20,10));
}



我刚才试了一下结果也不对,,,,这个问题和诡异
2016-09-22 10:28
chenyuxi2016
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-9-22
得分:0 
回复 4楼 demon90s
把 int 换成 long也不可以呀
2016-09-22 10:30
demon90s
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:44
专家分:121
注 册:2016-1-3
得分:0 
回复 6楼 chenyuxi2016
long long哦。。
2016-09-22 10:38
chenyuxi2016
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-9-22
得分:0 
回复 6楼 chenyuxi2016
long long  A=1,B=1,C=1;
int i,j,k,x;


这样吗?
D:\VC++程序代码\vvc\fffffff.cpp(7) : error C2632: 'long' followed by 'long' is illegal  不合法呀
2016-09-22 10:57
demon90s
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:44
专家分:121
注 册:2016-1-3
得分:0 
程序代码:
float proc(int m,int n)
{
    float s = 1;

    int c = m - n;

    while (1)
    {
        s *= (float)m / (n * c);
        
        if (m > 1)
            --m;
        
        if (n > 1)
            --n;
        
        if (c > 1)
            --c;

        if (m <= 1 && n <= 1 && c <= 1)
            break;
    }

    return s;
}
2016-09-22 10:58
demon90s
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:44
专家分:121
注 册:2016-1-3
得分:0 
找到出错位置了:
for(k=1;k<=x;k++)
C*=x;

不是*x。而是k。
2016-09-22 11:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469054-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.546621 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved