急求。。。C语言实现,计算字符串中子串出现的次数,比如输入GACTC,要求输出GA,AC,CT,TC出现的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急求。。。C语言实现,计算字符串中子串出现的次数,比如输入GACTC,要求输出GA,AC,CT,TC出现的次数相关的知识,希望对你有一定的参考价值。
后面的子字符串是不用输入的
参考技术A #include <stdio.h>#include <string.h>
int main(int argc, const char * argv[])
char str[10]="ABCABCABD";
char str1[5]="ABCA";
for (int i=0; i<strlen(str1)-1; i++)
char str2[3];
str2[0]=str1[i];
str2[1]=str1[i+1];
int strCount=0;
for (int j=0; j<strlen(str)-1; j++)
char str3[3];
str3[0]=str[j];
str3[1]=str[j+1];
if (strcmp(str2, str3)==0)
strCount++;
printf("子字符串:%s在字符串中含有%d个\n",str2,strCount);
return 0;
子字符串:AB在字符串中含有3个
子字符串:BC在字符串中含有2个
子字符串:CA在字符串中含有2个追问
哥们,程序报错了
追答什么错误?我这可以正确运行。。
只输入一个字符串,假如输入字符串GBAGGABGAB
输出结果为:GB为1个
BA为1个
AG为1个
GG为1个
GA为2个
AB为2个
BG为1个
您把您说的出现问题的两个字符串贴一下吧 。
本回答被提问者采纳 参考技术B 子串就是根据你输入的字符串自动计算获得的吧,然后统计出现次数、打印输出。可以帮你做。追问
嗯,是的,但要是相邻的两个字符
追答那如果你输入的字符串不是偶数的话,这种情况如何处理?
追问假如输入GATCG五个字符,输出的结果就是GA一个,AT一个,TC一个,CG一个
参考技术C 是计算字符串所有子串的次数,还是指定子串的次数,说明一下追问不是指定的,但是是相邻的
追答今天有点忙
#include<stdio.h>#include <string.h>
int main(void)
char buf[100]=;
char sub_buf[100][3];
char numb_buf[100]=;
char* first_p=NULL;
char* next_p=NULL;
int exit_flag=0,i=0;
memset(sub_buf,0,sizeof(sub_buf));
printf("input:");
scanf("%s",buf);
first_p=buf;
while(*(first_p+1)!='\\0')
exit_flag=0;
i=0;
char temp_buf[3]=;
temp_buf[0]=*first_p;
temp_buf[1]=*(++first_p);
while(strlen(sub_buf[i]))
if(!strcmp(sub_buf[i],temp_buf))
numb_buf[i]++;
exit_flag=1;
i++;
if(exit_flag==0)
strcpy(sub_buf[i],temp_buf);
for(i=0;strlen(sub_buf[i]);i++)
printf("%s: %d\\n",sub_buf[i],numb_buf[i]+1);
运行结果
input:asdfghjkasfgjk
as: 2
sd: 1
df: 1
fg: 2
gh: 1
hj: 1
jk: 2
ka: 1
sf: 1
gj: 1
-------------------------------
input:qwertyuiwetyty
qw: 1
we: 2
er: 1
rt: 1
ty: 3
yu: 1
ui: 1
iw: 1
et: 1
yt: 1
有问题请追问
以上是关于急求。。。C语言实现,计算字符串中子串出现的次数,比如输入GACTC,要求输出GA,AC,CT,TC出现的次数的主要内容,如果未能解决你的问题,请参考以下文章