| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 765 人关注过本帖
标题:请问这个编程怎么做?我弄了很久都没做出来。。。(题目+我做的编程:如下) ...
只看楼主 加入收藏
暉曦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
请问这个编程怎么做?我弄了很久都没做出来。。。(题目+我做的编程:如下)
2、根据以下公式求p的值。m与n为两个正整数且要求m>n。
p= m!/(n!(m-n)!)
 
我做的:
#include <stdio.h>
main()
{
    int i,n,m,p,sum,f=1,k=1,t=1;
    scanf("%d%d",&n,&m);
    sum=m-n;
    if(m>n)
    {
        for(i=1;i<=n;i++)
        f=f*i;
        for(i=1;i<=m;i++)
        k=k*i;
        for(i=1;i<=(m-n);i++)
        t=t*i;
        p=(k/(f*t));
    }
    printf("p=%d\n",p);
}
2010-04-11 22:02
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
先整理好思路再写程序!!!

★★★★★为人民服务★★★★★
2010-04-12 07:55
暉曦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-11
收藏
得分:0 
你讲的道理我都懂,可是我就是找不准思路呀
2010-04-12 08:08
暉曦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-11
收藏
得分:0 
麻烦会的指点下,谢了。。。
2010-04-12 08:24
a910317930
Rank: 2
等 级:论坛游民
帖 子:5
专家分:17
注 册:2009-4-8
收藏
得分:8 
#include"stdio.h"
void main(void)
{
    int fun(int a);//处理累乘的函数
    int p,m,n;//m,n是参数,p是结果
    printf("请输入两个正整数m,n(之间用分号隔开,且m>n)\n");
    scanf("%d;%d",&m,&n);
    p=fun(m)/(fun(n)*fun(m-n));
    printf("按照公式得到的结果是:%d\n",p);
}
int fun(int a)
{
    int i,l=1;
    for(i=1;i<=a;i++)
    l=l*i;
    return l;
}
/*
根据以下公式求p的值。m与n为两个正整数且要求m>n。
p= m!/(n!(m-n)!)
*/

/*
以上程序已经在VC++6.0上调试通过,并能得到正确结果
2010年4月12日
*/
2010-04-12 11:57
屎娃娃
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2010-4-12
收藏
得分:4 
把语句
 }
    printf("p=%d\n",p);
中的括号放在后面,像下面这样就对了~~

    printf("p=%d\n",p);
 }
2010-04-12 15:31
minicat
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2010-4-12
收藏
得分:8 
#include<iostream.h>
float fun(int n);
void main()
{
  int m,n;
  float p;
  do
  {
    cout<<"please input m and n,m>0,n>0,m>n:"<<endl;
    cin>>m>>n;
    if(m<=n||m<=0||n<=0)
      cout<<"the number worse,please input again"<<endl;
  }while(m<=n||m<=0||n<=0);
  p=fun(m)/(fun(n)*fun(m-n));
  cout<<"the p equal:"<<p<<endl;
}

float fun(int n)
{
   if(n==1) return 1;
   return fun(n-1)*n;
}
2010-04-12 20:29
minicat
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2010-4-12
收藏
得分:0 
高级编程交流群:111679647
欢迎各位一起来交流。
2010-04-12 20:33
暉曦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-11
收藏
得分:0 
谢谢各位了。。
2010-04-12 21:59
codelet
Rank: 2
来 自:广东深圳
等 级:论坛游民
帖 子:61
专家分:37
注 册:2007-11-6
收藏
得分:0 
p= m!/(n!(m-n)!)
有更加高效的方式.
另k = m-n
如果 n > k: 则p = m(m-1)...(n+1) / k!
如果 n <= k: 则p = m(m-1)...(k+1) / n!

编写一个函数计算从a到b(a<b)的各整数的乘积
unsigned long fun(int a, int b)
{
    unsigned long sum = 1;
    while(a <= b)
    {
        sum *= a;
        a ++;
    }
    return sum;
}

代入上面两条公式有:

如果 m > k: 则p = fun(n+1, m) / fun(1, k)
如果 m <= k: 则p = fun(m-n+1, m) / fun(1, n)

7楼的递归,效率就更低了。

Losing emotion, Finding devotion.
2010-04-19 15:13
快速回复:请问这个编程怎么做?我弄了很久都没做出来。。。(题目+我做的编程: ...
数据加载中...
 
   



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

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