求大神相助!用 c++ 写的关于组合排列的程序,编译和运行都没异常,就是运行的时候不出结果。谢大神们!

求大神相助!用 c++ 写的关于组合排列的程序,编译和运行都没错误,就是运行的时候不出结果。谢大神们!!
#include <iostream> 
using namespace std; 

#define MaxN 10 

class ZUHEPAILIE{
public:
    ZUHEPAILIE();
    int choice();
    void putdata();
    void permute(int pos,int n,int r);
    void combine(int pos,int h,int n,int r);
    int n;
    int r;
    char used[MaxN]; 
    int p[MaxN]; 
    char s[MaxN];
    char str[MaxN];
};

ZUHEPAILIE::ZUHEPAILIE()
{
}

int ZUHEPAILIE::choice()
{
    int choose;
    cout<<"******************************************************************************"<<endl;
    cout<<"输入序号1则为输入"<<endl;
    cout<<"输入序号2则为组合"<<endl;
    cout<<"输入序号3则为排列: "<<endl;
    cout<<"输入除数字1、2、3之外的任意键则退出: "<<endl;
    cout<<"******************************************************************************"<<endl;
    cout<<"请输入序号进行操作: "<<endl;
    cin>>choose;
    return choose;
}

void ZUHEPAILIE::putdata()
{
    cout<<"您将输入一个长度为n(用户自定义)的字符串\n"<<"请输入字符串长度n:"<<endl;
    cin>>n;
    cout<<"请输入"<<n<<"个字母(输入时请勿输入相同字母):\n";//最多输入多少个由 MaxN 的值决定
    cin>>str;
    strcpy(s,str); 
    cout<<"请输入需要操作的字母数r:\n"<<endl;
    cin>>r;
}

//从n个元素中选r个进行排列 
void ZUHEPAILIE::permute(int pos,int n,int r) 

    int i; 
    /*如果已是第r个元素了,则可打印r个元素的排列 */ 
    if(pos == r) 
    { 
        for(i=0; i<r; i++) 
            cout<<s[p[i]]; 
        cout<<endl; 
        return; 
    } 
    for (i=0; i<n; i++) 
    { 
        if(!used[i]) 
        { 
            /*如果第i个元素未用过*/ 
            /*使用第i个元素,作上已用标记,目的是使以后该元素不可用*/ 
            used[i]++; 
            /*保存当前搜索到的第i个元素*/ 
            p[pos] = i; 
            /*递归搜索*/ 
            permute(pos+1,n,r); 
            /*恢复递归前的值,目的是使以后改元素可用*/ 
            used[i]--; 
        } 
    } 


//从n个元素中选r个进行组合 
void ZUHEPAILIE::combine(int pos,int h,int n,int r) 

    int i; 
    /*如果已选了r个元素了,则打印它们*/ 
    if (pos == r) 
    { 
        for(i=0; i<r; i++) 
            cout<<s[p[i]]; 
        cout<<endl; 
        return; 
    } 
    for(i=h; i<=n-r+pos; i++) /*对于所有未用的元素*/ 
    { 
        if (!used[i]) 
        { 
            /*把它放置在组合中*/ 
            p[pos] = i; 
            /*使用该元素*/ 
            used[i]++; 
            /*搜索第i+1个元素*/ 
            combine(pos+1,i+1,n,r); 
            /*恢复递归前的值*/ 
            used[i]--; 
        }