360的笔试题

来源:互联网 发布:淘宝客api教程 编辑:程序博客网 时间:2024/05/21 19:49

当时做的时候没有考虑全面导致,没有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
原创粉丝点击