[求助]拜托高手帮我看下我的程序哪里出问题了
题目是:、计算字符串中子串出现的次数程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。
程序:
#include "stdio.h"
#include "string.h"
void main()
{char str1[3];
char str2[10];
char str3[3];
char *p,*q;
int sum;
int i,j,m,n;
sum=0;
p=str1;
q=str2;
for(i=0;i<3;i++)
scanf("%1c",p++);
for(j=0;j<10;j++)
scanf("%1c",q++);
p=str1;
q=str2;
for(n=0;n<7;n++)
{if(*p==*q)
{for(m=0;m<3;m++)
str3[m]=*(q+m);
if(strcmp(str1,str3)==0)
{sum=sum+1;
q=q+3;
}
else ++q;
}
else ++q;
}
printf("sum=%d",sum);
}谢谢啦~
我用环境运行检查都没有错误,但是运行结果就是不对...sum值总是0
[[it] 本帖最后由 蓝樱happy 于 2008-6-24 23:27 编辑 [/it]]
[[it] 本帖最后由 蓝樱happy 于 2008-6-25 00:32 编辑 [/it]]
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <string.h>
void main()
{
char str1[3];
char str2[10];
char str3[3];
char *p,*q;
int sum=0,i,j,m,n;
p=str1;
q=str2;
for(i=0;i<3;i++)
scanf("%1c",p++);
for(j=0;j<10;j++)
scanf("%1c",q++);
p=str1;
q=str2;
for(n=0;n<7;n++)
{
if(*p==*q)
{
for(m=0;m<3;m++)
str3[m]=*(q+m);
if(strcmp(str1,str3)==0)
{
sum=sum+1;
q=q+3;
}
else ++q;
}
else ++q;
}
printf("sum=%d",sum);
}
试试这样!!
----------------解决方案--------------------------------------------------------
呃...这个还是不对...谢谢了哈~
----------------解决方案--------------------------------------------------------