简单的C语言问题 Description 输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的C语言问题 Description 输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。相关的知识,希望对你有一定的参考价值。

Description

输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。

Input

abcd
3

Output

abc
abd
acd
bcd
再追问一下,如果有重复该怎么办?

//输入字符串,然后输入n即取几个! 如果串中有重复的需要改,用的是递归的算法!
#include <iostream>
using namespace std;
#define maxn 110
int n,m; //n,中选m个的组合数
char rcd[maxn];
char num[maxn];
void perm(int l,int p)

int i;
if(l==m)

for(i=0;i<l;i++) //当取到m个数时输出

printf("%c",rcd[i]);

printf("\n");

for(i=p;i<n;i++)

rcd[l]=num[i]; //在l的位置放上该数
perm(l+1,i+1);


//perm

int main()

// freopen("out.txt","w",stdout);
scanf("%s",&num);
n=strlen(num);
scanf("%d",&m);
perm(0,0);


下面的可以处理有重复的情况!
#include <iostream>
using namespace std;
#define maxn 110
int n,m,k;
char rcd[maxn];
int used[maxn];
char num[maxn];
void init1()

int i,j;
m=0;
scanf("%s",&num);//字符串
scanf("%d",&k);//取k个
n=strlen(num);
for (i=0;i<n;i++)

for(j=0;j<m;j++)

if(num[j]==num[i])

used[j]++; //储存同一个出现的次数,也就是他能用几次
break;


if(j==m) //没出现过记录下来

num[m]=num[i];
used[m++]=1;



void perm(int l,int p)

int i;
if(l==k)

for(i=0;i<l;i++)

printf("%c",rcd[i]);

printf("\n");

for(i=p;i<m;i++) //m为不重复的值的个数

if(used[i]>0) //如果i没有被使用过

used[i]--;
rcd[l]=num[i]; //在l的位置放上该数
perm(l+1,i);
used[i]++; //还原标记



//perm

int main()

init1();
perm(0,0);
参考技术A 有重复的在 组合阶段就可以予以剔除

我写了个三个的 Mark 等高人

#include "stdio.h"

int main()

int i,j,l,k=0;
char a[100],C1[100],D[100][k];
gets(a);
printf("提取前几个字母\n");
scanf("%d",&k);

for (i=0;i<k;i++)

C1[i] =a[i];


for (i=0;i<k;i++)

for (j=0;j<k;j++)

for (l=0;l<k;l++)

if (C1[i]!=C1[j] && C1[j]!=C1[l] && C1[i]!=C1[l])

printf("%c %c %c\n",C1[i],C1[j],C1[l]);





return 0;

请问c语言中用字符数组怎么判断输入的一串数字是大于等于或者小于0呢

请问c语言中用字符数组怎么判断输入的一串数字是大于等于或者小于0呢只能用字符数组

既然是“字符数组”,那么它的元素就都是“字符”,即char类型。“字符”只用了char类型数域的一半即0~127,所以它们都是大于等于0的,不可能有小于0的数。 参考技术A 将字符串转为数字再比较追问

能不能麻烦一下。发一下代码给我看看😃

追答

# include
# include
void main (void) ;
void main (void)

int num;
char * str = "100";
num = atoi(str);
printf("The string 'str' is %s and the number 'num' is %d. \n",str, num);

atoi这个函数很方便!

本回答被提问者采纳

以上是关于简单的C语言问题 Description 输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。的主要内容,如果未能解决你的问题,请参考以下文章

c语言简单问题,输入一行英文,提取其中的单词。总是有个错误找不到,麻烦高手

c语言 如何判断输入的是数字还是字母

C语言编程输入一串数字输出英语表达

C语言,目的:输入一串数字,用空格隔开,然后赋值给数组

C语言,如何将一个个输入的数字变成一串数字一起输出来,求解~

请问c语言中用字符数组怎么判断输入的一串数字是大于等于或者小于0呢