当前位置: 代码迷 >> C语言 >> [求助]拜托高手帮我看下我的程序哪里出问题了
  详细解决方案

[求助]拜托高手帮我看下我的程序哪里出问题了

热度:292   发布时间:2008-06-24 23:16:44.0
[求助]拜托高手帮我看下我的程序哪里出问题了
题目是:、计算字符串中子串出现的次数
程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。
程序:
#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);
}

试试这样!!
----------------解决方案--------------------------------------------------------
呃...这个还是不对...谢谢了哈~
----------------解决方案--------------------------------------------------------
  相关解决方案