关于字符串的逆序题目

来源:互联网 发布:问答系统源码 编辑:程序博客网 时间:2024/05/16 15:18

  今天做了一道关于字符串逆序的题目,题目为输入I am a student,而输出为student a am I。这道题的思路很清楚,就是先把整个句子逆序,然后将一个一个单词逆序,这样便得到了最终结果。而在将单词逆序的时候,可以设置两个指针,一个指针依次遍历,当遍历到空格的时候,将此时的指针代表的值赋\0,然后将另一个指针传到逆序函数中,函数结束后,再赋空格。

/**********************************************************File Name:         Author:                 xxx     Date:2016-12-11Description:   输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。(笔试题)句子中单词以空格符隔开。为简单起见,没有标点符号。例如输入“I am a student”,则输出“student a am I”Fuction List:************************************************************/#include <stdio.h>#define N 50void overturn1(char *p){char *h = p;while (*(++p) != '\0'){;}p = p - 1;char temp;while(h <= p){temp = *(p);*p = *h;*(h) = temp;p--;h++;}}void overturn2(char* p){char *pre = p;char *cur = p;while (*(cur) != '\0'){if (*(cur) == ' '){*cur = '\0';overturn1(pre);*cur = ' ';cur++;pre = cur;}else{cur++;}}overturn1(pre);}int main(){char phrase[N] = {0};printf("please input:\n");gets(phrase);overturn1(phrase);overturn2(phrase);puts(phrase);return 0;}


0 0
原创粉丝点击