360的笔试题

当时做的时候没有考虑全面导致,没有ac成功,写代码之间思路一定要清晰,把所有可能的情况都考虑清楚

#include <stdio.h>
#include <string.h>

int main(void)
{
  char qizhi[100];
  char first[100];
  char second[100];
  char *ptr;
  while(scanf("%s",qizhi)&&scanf("%s",first)&&scanf("%s",second)){
      int forward=0,backward=0;
      if(strstr(qizhi,first)){
        ptr=strstr(qizhi,first);
        char *p;
        if(strstr(ptr,second))
        {
          p=strstr(ptr,second);
          forward=1;
        }
      }
        strrev(qizhi); 
        if(strstr(qizhi,first)){
         ptr=strstr(qizhi,first);
         char *p;
        if(strstr(ptr,second))
        {
          p=strstr(ptr,second);
          backward=1;
        } 
      }
   if(forward==1&&backward!=1)
    printf("forward\n");
   else if(backward==1&&forward!=1)
    printf("backward\n");
   else if(backward==1&&forward==1)
   printf("both\n");
   else
   printf("invalid\n");
  }
   return 0;
}

下面是不调用库函数写的:

#include<stdio.h>
#include<string.h>
int exist(char a[],char b[],char c[]){
  int i,j=0,k=0,x1=0,x2=0;
  for(i=0;a[i]!='\0';i++){
     if(a[i]!=b[0])
        continue;
     else{
     while(a[i]==b[j]&&b[j]!='\0')
     {
       i++;
       j++;
     }
     if(b[j]=='\0')
     {
       x1=1;
       break;
     }else{
       j=0;
       i=i-1;
     }
    }
  }
    j=0;
    for(k=i;a[k]!='\0';k++)
    {
      if(a[k]!=c[0])
        continue;
     else{
     while(a[k]==c[j]&&c[j]!='\0')
     {
       k++;
       j++;
     }
     if(c[j]=='\0')
     {
       x2=1;
       break;
     }else{
       j=0;
       k=k-1;
     }
    }
}
     return x1&&x2;

}

int main(){
  char qizhi[100];
  char first[100];
  char second[100];
  while(scanf("%s",qizhi)&&scanf("%s",first)&&scanf("%s",second)){

  int x1,x2;
   x1=exist(qizhi,first,second);
   char *ret1 = strrev(qizhi);//字符串逆序
   x2=exist(ret1,first,second);
   if(x1==1&&x2!=1)
    printf("forward\n");
  else if(x2==1&&x1!=1)
   printf("backward\n");
  else if(x1==1&&x2==1)
   printf("both\n");
  else
   printf("invalid\n");
  }
  return 0;
}

不使用库函数的时候,中间的变量移动一定要搞清楚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值