| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 750 人关注过本帖
标题:一个简单的计算组合数程序
只看楼主 加入收藏
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:3 
一个简单的计算组合数程序
计算组合数C(m,r)=m!/(r!*(n-r)!)


#include<iostream.h>
int mul(int a)
{
    int i,b=1;
    for(i=1;i<=a;i++)
        b=b*i;
    return b;
}
int ride(int m,int r)
{
      int c;
      c=mul(m)/(mul(r)*mul(m-r));
      return c;
}
main()
{
    int m,r,k,c;
    loop:    cout<<"请输入C(m,r)中m的值和r的值(m>r):";
    cin>>m>>r;
    if(m<=r)
    {    
        cout<<"输入错误";
        return 0;
    }
    c=ride(m,r);
    cout<<"C("<<m<<","<<r<<")"<<"="<<c<<endl;
    cout<<"1 继续操作;      0 退出 "<<endl;
    cin>>k;
    if(k=0)
      return 0;
        else
            goto loop;
}


程序是没有错误,不过运行结果不对。而且当输入0时它也不能返回。
搜索更多相关主题的帖子: include return 
2008-03-19 17:42
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include <stdio.h>
#define N 100
int a[N],nn;
void output(int *a)
{
    int i;
    static int count=1;
    printf("%3d:",count++);
    for(i=1;i<=nn;i++)
        printf("%d",a[i]);
    printf("\n");

}


void comb(int n,int k)
{
   
   
    if(n>k&&k>1)
    {
        comb(n-1,k);
        a[k]=n;
        comb(n-1,k-1);
    }
    else if(k==1)
    {
        for(;n>0;n--)
        {   a[k]=n;
            output(a);
        }
        
    }
    else if(n==k)
    {   
        for(;n>0;n--)
        a[n]=n;
        output(a);
    }
}

int main()
{   nn=3;
    comb(5,3);
    return 0;
}
我这个是输出所有组合的..你看看..以前写的

学习需要安静。。海盗要重新来过。。
2008-03-19 17:47
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
得分:0 
嗯,你这个也不错。但是能不能帮我看一下我那个程序到底是什么地方有问题?

2008-03-19 21:01
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
得分:0 
哦,谢谢了,现在已经OK了。
#include<iostream.h>
int mul(int a)
{
    int i,b=1;
    for(i=1;i<=a;i++)
        b=b*i;
    return b;
}
int ride(int m,int r)
{
      int c;
      c=mul(m)/(mul(r)*mul(m-r));
      return c;
}
main()
{
    int m,r,k,c;
    loop:    cout<<"请输入C(m,r)中m的值和r的值(m>r):";
    cin>>m>>r;
    if(m<=r)
    {    
        cout<<"输入错误";
        return 0;
    }
    c=ride(m,r);
    cout<<"C("<<m<<","<<r<<")"<<"="<<c<<endl;
    cout<<"1 继续操作;      0 退出 "<<endl;
    cin>>k;
    switch(k)
    {
    case 1: goto loop;
    case 0: return 0;
    }
        
}

2008-03-19 22:19
快速回复:一个简单的计算组合数程序
数据加载中...
 
   



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

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