當前位置:首頁 » 編程語言 » 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;
}