您的位置:首页 > 其它

腾讯在线笔试题-把字符串“I am from china.”反转成为“I am from china.”,以及把整个字符串逆序。

2016-04-05 19:17 323 查看
注:首先得说一下腾讯2016年在线笔试题的最后一个大题出题的人大意出错了,他举的例子是:字符串“I am from china.”反转成为“I am from china.” 但是他说的是表达符号又不反转,如果表达符号不转换的话,那么他举的例子就是错的,所以当时做这题的时候就真是一万个草泥马(不好意思说脏话)没忍住,下面就是给出字符串也转换的例子

1#include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #define SIZE 1024
5
6 void swap(char *first,char *last)
7 {
8     char tmp=*first;
9     *first=*last;
10     *last=tmp;
11 }
12 void change(char *first,char *last)
13 {
14     char *p_first=first;
15     char *p_last=last;
16     while(p_first < p_last)
17     {
18         swap(p_first,p_last);
19         p_first++;
20         p_last--;
21     }
22 }
23 void rever(char *str)
24 {
25     if(NULL==str)
26         return;
27     int len=strlen(str);
28     char *last=str+len-1;
29     char *first=str;
30     change(first,last);
31 //  while(first < last)
32 //  {
33 //      swap(first,last);
34 //      first++;
35 //      last--;
36 //  }
37     char *cur=str;
38     char *tmp=str;
39     while(*cur !='\0')
40     {
41         if(*cur==' ' || *(cur+1)=='\0')
42         {
43             change(tmp,cur-1);
44             cur++;
45             tmp=cur;
46             continue;
47         }
48         cur++;
49     }
50 }
51 void print_log(char *str)
52 {
53     if(NULL==str)
54         return;
55     printf("%s\n",str);
56 }
57 int main()
58 {
59 //  char arr[]="i am child.";
60 //  char *str=(char*)malloc(sizeof(str)*SIZE);
61 //  memset(str,'\0',SIZE*sizeof(str));
62 //
63 //  char *log="please enter char:";
64 //  print_log(log);
65 //  fgets(str,SIZE,stdin);
66     char ptr[]="I am from china.";
67     print_log(ptr);
68     rever(ptr);
69     print_log(ptr);
70     return 0;
71 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: