当前位置:首页 » 编程语言 » c语言输出字符串所有子集
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言输出字符串所有子集

发布时间: 2022-05-15 13:33:38

㈠ 怎么用c语言实现输出某个字符串的所有子串

三重循环即可

voidprint_all_sub(char*s)
{
inti,j,k;
for(i=0;s[i];i++)//遍历每个元素。
{
for(k=1;s[k+i-1];k++)//计算以s[i]开始长度为k的子串
{
for(j=0;j<k;j++)//输出子串。
{
printf("%c",s[i+j]);
}
printf(" ");
}
}
}

㈡ 用C语言实现输入一字符串后输出该字符串所有子串

#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
int i,j,k,n;
gets(a);
n=strlen(a);
for(i=0;i<=n;i++)
for(j=i;j<n;j++)
{for(k=i;k<=j;k++)
printf("%c",a[k]);
printf("\n");
}
}

㈢ 用C语言编程解决从已知字符串中找出包含k个字符的所有“子串”,并打印。

#include <stdio.h>
#include <string.h>

char str[16];
int strlength;
int sublength;
char substr[8];
int cnt;
void findSubStr(int num,int startno);
int main(int argc, char* argv[])
{
memset(str,0,sizeof(str));
memset(substr,0,sizeof(substr));
strlength = 8;
sublength = 4;
cnt = 0;
int num = 0;
int startno = 0;
memcpy(str,"ABCDEFGH",sizeof("ABCDEFGH"));
findSubStr(num,startno);
printf("\n");
return 0;

}

void findSubStr(int num,int startno)
{
int i;

for(i = startno;i<=(strlength - sublength + num);i++){
substr[num] = str[i];
if (num >= (sublength-1)){
printf("%s\n",substr);
} else {
findSubStr(num+1,i+1);
}
}
}

上面代码是从“ABCDEFGH”中打印出包括4个字符的所有子串。

㈣ c语言 输出字符串中指定长度的全部子串

#include<stdio.h>

#defineMAXLEN1000

charstr[MAXLEN+1];
charsubstr[MAXLEN+1];
intn,m;

voidback_track(intpos,intlen);

intmain(void)
{
inti;

scanf("%d%d",&n,&m);
scanf("%s",str);

back_track(0,0);

return0;
}

voidback_track(intpos,intlen)
{
inti;

if(len==m){
substr[len]='';
printf("%s ",substr);
return;
}

for(i=pos;i<=n-(m-len);++i)
{
substr[len]=str[i];
back_track(i+1,len+1);
}
}

这是用回溯法来做。

back_track()函数中,pos表示从第几个自符开始,len表示已确定的字串的字符数。substr顾名思义,存的是子串。

输入:

屏幕输入

第一行,两个整数按次序n, m

第二行,一个长为n的字符串

输出:

该字符串所有字串

样例输入:

3 2

ab1

样例输出:

ab

a1

b1

㈤ C语言怎么用printf输出字符串。

void main()

{

unsigned char *x = "ab,sdf,sad,23432,cc";

data = x;

printf("data = %c ", *data);

printf("data = %s ", data);

system("pause");

}

(5)c语言输出字符串所有子集扩展阅读:

printf输出字符串的一些格式

1、原样输出字符串:printf("%s", str);

2、输出指定长度的字符串, 超长时不截断, 不足时右对齐:printf("%Ns", str);

注:N 为指定长度的10进制数值

3、输出指定长度的字符串, 超长时不截断, 不足时左对齐:printf("%-Ns", str);

注:N 为指定长度的10进制数值

4、输出指定长度的字符串, 超长时截断, 不足时右对齐:printf("%N.Ms", str);

注:N 为最终的字符串输出长度

M 为从参数字符串中取出的子串长度

5、输出指定长度的字符串, 超长时截断, 不足时左对齐是:printf("%-N.Ms", str);

注:N 为最终的字符串输出长度

M 为从参数字符串中取出的子串长度

参考资料来源:printf-网络

㈥ C语言:实现输出任意一个字符数组的除空集之外的所有子集。

递归当然也可以,但for循环就足够了
求出所有的组合
n个里找1,n个里找2个,。。。n个里找n个。。。
核心问题就是n个里找m个
可以用二维数组的方式模拟求组合
m行n列,每行就是该字符串
选择时从第一行选择,每行只能选择前一行所选元素之后的元素

㈦ 大一c语言求子集题目,求教

按照题目要求编写的打印字符的所有组合子集的C语言程序如下

#include<stdio.h>

#include<math.h>

void printall(char data[],int num)

{

int real_size=(int)pow(2,num);

int i,j,k=0,total=0;

printf("%d ",real_size);

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

{

printf("{");

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

{

if(i & (1 << j)){

if(j==k){

printf("%c",data[j]);

}else{

printf("%c,",data[j]);

}

}

}

printf("} ");

total++;

if(total==(int)pow(2,k+1)){

k++;

}

}

}

int main()

{

int t,n,i,j;

char a[30];

scanf("%d",&t);

for(i=0;i<t;i++){

scanf("%d",&n);

for(j=0;j<n;j++){

scanf(" %c",&a[j]);

}

printall(a,n);

}

return 0;

}

㈧ C语言问题 读入若干字符串,将包含指定字符的字符串输出。

#include <stdio.h> #include <string.h> #define M 4 #define N 20 void Sort(char (*a)[N],int n) { int i,j; char ct[N]; for(i = 0;i < n - 1;i++) { for(j = 0;j < n - i - 1;j++) if(strcmp(a[j],a[j+1]) > 0) { strcpy(ct,a[j]); strcpy(a[j],a[j+1]); strcpy(a[j+1],ct); } } } int main() { int i; char str[M][N]; //输入 for(i = 0;i < M;i++) scanf("%s",str[i]); //排序 Sort(str,M); //输出 for(i = 0;i < M;i++) printf("%s\n",str[i]); return 0; }

㈨ C语言怎么实现从控制台输入一个字符串,向控制台输出其所有子字符串

#include<stdio.h>
#include<stdlib.h>

voidsubstring(char*s){
inti,j,k;
for(i=0;s[i];i++)//遍历每个元素。
{
for(k=1;s[k+i-1];k++)//计算以s[i]开始长度为k的子串
{
for(j=0;j<k;j++)//输出子串。
{
printf("%c",s[i+j]);
}
printf(" ");
}
}
}

intmain(){
char*p;
p=(char*)malloc(sizeof(char));
scanf("%s",p);
substring(p);
free(p);
return0;
}