马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
6-1 统计字符串出现次数
题目描述
从键盘输入两个字符串,输出第二个串在第一个串中出现的次数。如果没有,输出“No”。
输入描述
输入两个字符串
输出描述
输出第二个串在第一个串中出现的次数。
如果没有,输出 No#include <stdio.h>
int main()
{
char S[100],T[20],*p1,*p2;
int i=0,j=0,num=0;
char ch1,ch2;
ch1=getchar();
while(ch1!='\n')
{
S[i]=ch1;
i++;
ch1=getchar();
}
ch2=getchar();
while(ch2!='\n')
{
T[j]=ch2;
j++;
ch2=getchar();
}
p1=&S[0];p2=&T[0];
while(p1<=&S[0]+i&&p2<=&T[0]+j)
{
if(*p1==*p2)
{
p1++;
p2++;
}
else
{
p1=p1+1;
p2=&T[0];
}
if(p2==&T[0]+j)
{
num++;
}
}
if(p1==&S[0]+i+1&&num!=0)
{
printf("%d\n",num);
}
else printf("No");
return 0;
}
第一,取字符不用这么麻烦,gets即可。
第二 比效太啰嗦。
如果是我,我会这么写,直接用数组就完成了: #include <stdio.h>
int main()
{
char S[100],T[20];
int i, j, count;
printf("请输入字符串1:");
gets(S);
printf("请输入字符串2:");
gets(T);
count = 0;
for(i=0; S[i]!='\0'; i++)
{
for(j=0; T[j]!='\0'; j++)
{
if (S[i+j] != T[j]) // i+j 表示每次从数组S的下1个元素比
{
break;
}
}
if(T[j] == '\0') // 说明有相等的字符串
{
count++;
}
}
printf("%d\n", count);
return 0;
}
|