输入一段英文,再输入一个单词,查找该单词在该段英文中出现的次数以及位置,位置信息保存在一个数组中。急

急求啊!用串做啊!拜托了!
2024-11-25 21:36:07
推荐回答(2个)
回答1:

看上去有点长,做了一些修饰性的东西。
#include
#include
#include
#define M 100
#define N 10
#define T 10
int main(void)
{
int a[T]={0};
int i,j=0,k=0,num=0,word=0;
char str[M],str1[N],str2[N],*p;
printf("输入一行英文:\n");
gets(str);
printf("输入一个单词:\n");
gets(str1);
p=str;
while(!isalpha(*p)) p++; //去掉句子前的其他字符
for(i=0;*(p+i)!='\0';i++)
if(isalpha(*(p+i)))
{
if(word==0)
{
word=1;
num++;
}
str2[j++]=*(p+i);
}
else
{
word=0;
str2[j]='\0';
if(strcmp(str1,str2)==0) a[k++]=num;
j=0;
}
str2[j]='\0';
if(strcmp(str1,str2)==0) a[k++]=num; //处理句子最后一个单词
printf("结果:\n");
printf("这句共有单词%d个\n",num);
if(k==0)
printf("句子中没有单词%s\n",str1);
else
{
printf("所查单词位置:\n");
for(i=0;i printf("%3d",a[i]);
}
getchar();
}

显示样式:
输入一行英文:
i am a boy.he is a boy.
输入一个单词:
boy
结果:
这句共有单词8个
所查单词位置:
4 8

回答2:

第1次,下标4第1次,下标14第1次,下标28
Press any key to continue

#include
main()
{
int i,add=0,position[20]={0};
char str[]="are you a dog you are a pig you are everything";
for (i=0;str[i]!='0';i++)
{
if (str[i]=='y' && str[i+1]=='o' && str[i+2]=='u' )
{
printf("第%d次,下标%d\n",add+1,i);
}
}
}