C语言实现可选择设置位数26个字母和10个数字混合全排列

26个字母和10个数字为m=26+10=36为变值可选择(m介于10至36之间),全排列A(m,n),n为变值可选择位数(n介于2至8之间),用归纳算法实现m

选n全排列输出.

从命令提示符下给出提示语"请输入m和n"可选择全排列.例如输入(m=10,可以直接选择输入10个元素),n=6(代表输出6位).然后全排列

输出结果以number36.txt保存到C盘

#include<stdio.h>
#include<stdlib.h>
int i,m,n,count=0;
char a[37],b[37];
bool tag[37];
void arrange(char *a,int n,FILE *fp)
{
    for(int i=1;i<=m;i++)
    {
        if(tag[i])
        {
            tag[i]=false;
            count++;
            b[count]=a[i];
    if(count==n)
            {
                for(int j=1;j<=n;j++) fprintf(fp,"%c ",b[j]);
                fprintf(fp,"\n");
            }
            arrange(a,n,fp);
            tag[i]=true;
            count--;
        }
    }
}
            
int main()
{
    FILE *fp;
    fp=fopen("C:\\nubmer36.txt","w");
    if(fp==NULL)
    {
        printf("无法打开指定文件!");
        exit(1);
    }
    printf("请输入m和n:");
    scanf("%d%d",&m,&n);
    printf("请输入连续%d个元素(不要用空格分开):",m);
fflush(stdin);
    for(i=1;i<=m;i++) scanf("%c",&a[i]);
    for(i=1;i<=m;i++) tag[i]=true;
    arrange(a,n,fp);
    fclose(fp);
    return 0;
}

追问

1,如何将""请输入连续%d个元素"改写成用空格分开
2,如何统计number36一共有多少条
C语言高手请再指导,先采纳加50分

追答

    把输入语句改成scanf("%s",&a[i]);

    直接用排列公式计算

温馨提示:答案为网友推荐,仅供参考