看看我的代码是有哪些不足?谢谢各位了
6-1 统计字符串出现次数题目描述
从键盘输入两个字符串,输出第二个串在第一个串中出现的次数。如果没有,输出“No”。
输入描述
输入两个字符串
输出描述
输出第二个串在第一个串中出现的次数。
如果没有,输出 No
#include <stdio.h>
int main()
{
char S,T,*p1,*p2;
int i=0,j=0,num=0;
char ch1,ch2;
ch1=getchar();
while(ch1!='\n')
{
S=ch1;
i++;
ch1=getchar();
}
ch2=getchar();
while(ch2!='\n')
{
T=ch2;
j++;
ch2=getchar();
}
p1=&S;p2=&T;
while(p1<=&S+i&&p2<=&T+j)
{
if(*p1==*p2)
{
p1++;
p2++;
}
else
{
p1=p1+1;
p2=&T;
}
if(p2==&T+j)
{
num++;
}
}
if(p1==&S+i+1&&num!=0)
{
printf("%d\n",num);
}
else printf("No");
return 0;
}
第一,取字符不用这么麻烦,gets即可。
第二 比效太啰嗦。
如果是我,我会这么写,直接用数组就完成了:
#include <stdio.h>
int main()
{
char S,T;
int i, j, count;
printf("请输入字符串1:");
gets(S);
printf("请输入字符串2:");
gets(T);
count = 0;
for(i=0; S!='\0'; i++)
{
for(j=0; T!='\0'; j++)
{
if (S != T) // i+j 表示每次从数组S的下1个元素比
{
break;
}
}
if(T == '\0') // 说明有相等的字符串
{
count++;
}
}
printf("%d\n", count);
return 0;
}
页:
[1]