|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|