回 帖 发 新 帖 刷新版面

主题:帮忙看一下哪错了

include<iostream>
# include<string.h>
using namespace std;

class Find
{
private:
    char s[1000],a[100],s1[100],s2[100];
    int i,j,k;
public:
    void fw1(char *,char *);
    void show_fw1(void);
    char cz(void);
};

void Find::fw1(char *st1,char *st2)
{
    strcpy(s,st1);
    strcpy(a,st2);
}

void Find::show_fw1(void)
{
    cout<<"范围1为:"<<s<<endl;
    cout<<"范围2为:"<<a<<endl;
}

char Find::cz(void)
{
      for(i=0;s[i]!='\0';i++)
      {
          for(j=0;s[i]!='-'&&s[i]!=','&&s[i]!='\0';i++,j++)
          { 
              s1[j]=s[i];
          }

          s1[j]='\0';

          if(s[i]==','||s[i]=='\0')
          {
              if(strcmp(a,s1)==0)
              {
                  cout<<endl<<"在范围内!"<<endl;
                  return 0;
              }
          }
          if(s[i]=='-')
          {
              k=0;
              i++;
              while(s[i]!=','&&s[i]!='\0')
              {
                  s2[k]=s[i++];
                  k++;
              }
              s2[k]='\0';

              if(strcmp(a,s1)>=0&&j<=strlen(a))
              {
                  if(k>strlen(a))
                  {
                      cout<<endl<<"在范围内!"<<endl;
                      return 0;
                  }
                  if(k==strlen(a)&&strcmp(a,s2)<0)
                  {
                      cout<<endl<<"在范围内!"<<endl;
                      return 0;
                  }
              }
          }
      }

      if(s[i]=='\0')
          cout<<endl<<"不在范围内!"<<endl;

      return 0;
}


main()
{
    Find f1;

    f1.fw1("100-200,300-500","250");
    f1.show_fw1();
    f1.cz();

    return 0;
}

回复列表 (共2个回复)

沙发

对不起,我只是一个初手,还没学到类呢,但我想问一下,第一行头文件为什么不加#啊!

板凳

for(j=0;s[i]!='-'&&s[i]!=','&&s[i]!='\0';i++,j++)
          { 
              s1[j]=s[i];
          }
有没有越界的情况呀?
s1 =100个。s=1000个

我来回复

您尚未登录,请登录后再回复。点此登录或注册