| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:新手,写了个关于排列组合计算的程序,错了,请指教
只看楼主 加入收藏
Ziverson
Rank: 2
来 自:湖北十堰
等 级:论坛游民
帖 子:14
专家分:12
注 册:2012-9-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
新手,写了个关于排列组合计算的程序,错了,请指教
程序代码:
[local]2[/local]//输入下标,程序对排列或组合进行计算//
#include<stdio.h>
int main()
{
    int a,c,i,j,r,k,A;
    char l;
    A=1;
C :
E :
    printf("请依次输入A或C的下标和上标\n");
    scanf("%d%d",&j,&k);
    if (j<k)
    {
        printf("您输入的数字有误,请核对\n");
        goto E;
    }
    for(k=j;k>=j-i+1;k--)
    {
        A*=k;
    for(k=i;k>0;k--)
    {
        c*=i;
    }
    }
B :
    printf("请选择你想要输出的数据类型,输入a输出排列的结果,输入c输出组合的结果\n");
    scanf("%c",&l);
    if(l=='a')
    {
        printf("排列的结果是%d\n",A);
    }
    else if(l=='c')
    {
        printf("组合的结果是A//c\n",A,c);
    }
    else
    {
        printf("您输入的字母与提示字母不符,请核对后重新输入\n");
    goto B;
    }
D :
    printf("若需计算下个排列或组合,请输入r\n");
    scanf("%c",&l);
    if (l=='r')
    {
        goto C;
    }
    else
    {
        printf("您输入的字母不是r,无法进行下个计算,请重新输入\n");
        goto D;
    }
    return 0;
}



计算排列组合.rar (938 Bytes)
搜索更多相关主题的帖子: include 计算 
2012-09-09 20:24
Ziverson
Rank: 2
来 自:湖北十堰
等 级:论坛游民
帖 子:14
专家分:12
注 册:2012-9-9
收藏
得分:0 
人呢?大神,求助啊

新手,基础相当不牢,求指教。
2012-09-09 22:53
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
没仔细看。
不过毕竟程序的逻辑很简单,如果是算的结果不对,也许是数值溢出了。
2012-09-09 23:33
Ziverson
Rank: 2
来 自:湖北十堰
等 级:论坛游民
帖 子:14
专家分:12
注 册:2012-9-9
收藏
得分:0 
大神,麻烦仔细看呀,不仅仅是算的结果不对呀,运行过程都很异常的,帮帮忙呀,谢谢了

新手,基础相当不牢,求指教。
2012-09-10 22:12
Ziverson
Rank: 2
来 自:湖北十堰
等 级:论坛游民
帖 子:14
专家分:12
注 册:2012-9-9
收藏
得分:0 
回复 3楼 pangding
大神,求仔细看呀,帮帮我呀

新手,基础相当不牢,求指教。
2012-09-10 22:12
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:15 
以下是引用Ziverson在2012-9-10 22:12:21的发言:

大神,麻烦仔细看呀,不仅仅是算的结果不对呀,运行过程都很异常的,帮帮忙呀,谢谢了

尽量减少用 goto 吧,不然代码太混乱。就算用 goto 也希望标签能起个好点的名字,多少有点提示作用。
程序代码:
#include <iostream>
using namespace std;

int main()
{
    int m, n;

start:
    do {
        cout << "请输入下标 m 和上标 n(n <= m):";
        cin >> m >> n;
    } while (m < n);

    int a = 1, c = 1, i;
    for (i = 0; i < n; i++) {
        a *= m - i;
        c = c * (m-i) / (i+1);
    }

    cout << "请选择你想要输出的数据类型,输入a输出排列的结果,输入c输出组合的结果" << endl;
    char l;
    while (cin >> l) {
        if (l == 'a') {
            cout << "A(" << n << "," << m <<") = "
                << (int)a << endl;
            break;
        } else if (l == 'c') {
            cout << "C(" << n << "," << m <<") = "
                << (int)c << endl;
            break;
        }

        cout << "您输入的字母与提示字母不符,请核对后重新输入" << endl;
    }

    cout << "若需计算下个排列或组合,请输入r;否则退出。" << endl;
    cin >> l;
    if (l == 'r') goto start;

    return 0;
}



[ 本帖最后由 pangding 于 2012-9-11 09:05 编辑 ]
2012-09-10 22:53
Ziverson
Rank: 2
来 自:湖北十堰
等 级:论坛游民
帖 子:14
专家分:12
注 册:2012-9-9
收藏
得分:0 
回复 6楼 pangding
,跪谢大神,谢谢,谢谢,可是,我是新手,你看,程序能写成这样,还能有多牛逼?大神,能不能用简单的方法实现?比如就用我那个类型的?麻烦大神了,真的十分感谢

新手,基础相当不牢,求指教。
2012-09-11 00:44
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
以下是引用Ziverson在2012-9-11 00:44:48的发言:

,跪谢大神,谢谢,谢谢,可是,我是新手,你看,程序能写成这样,还能有多牛逼?大神,能不能用简单的方法实现?比如就用我那个类型的?麻烦大神了,真的十分感谢
代码几乎是一样的,已经在楼上的源代码里改过了。

没问题了记得结帖。现在的人都是问完问题就跑了,这种风气可不好。
2012-09-11 09:07
快速回复:新手,写了个关于排列组合计算的程序,错了,请指教
数据加载中...
 
   



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

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