| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1903 人关注过本帖, 1 人收藏
标题:有一个问题不懂,指教
只看楼主 加入收藏
chenyuxi2016
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2016-9-22
结帖率:0
收藏(1)
已结贴  问题点数: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
快速回复:有一个问题不懂,指教
数据加载中...
 
   



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

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