简单的C语言问题 Description 输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的C语言问题 Description 输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。相关的知识,希望对你有一定的参考价值。
Description
输入一串小些字母(无重复字母),从中取出k个字母,输出组合情况。
Input
abcd
3
Output
abc
abd
acd
bcd
再追问一下,如果有重复该怎么办?
#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语言简单问题,输入一行英文,提取其中的单词。总是有个错误找不到,麻烦高手