您的位置:首页 > 其它

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。

2018-01-28 21:53 986 查看
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,没有标点符号。

例如:输入“I am a student”,则输出“student a am I”

以下是我设计的程序的源代码,自认为不是最优算法,日后还会加以研究,补上更好的算法。

#include <stdio.h>

#include <string.h>

#define MAX 20

int main()

{

    int i, count=0;

    char str[MAX],tmp;

    char *p,*q;

    //先将字符串的字符顺序颠倒

    printf("please input a English sentence:\n");

    fgets(str, MAX, stdin);

    int len = strlen(str);

    for(i=0; i<len/2; i++)

    {

        tmp = str[i];

        str[i] = str[len-i-1];

        str[len-i-1] = tmp;

    }

    printf("\n");

    //将每一个单词换回正常顺序

    for(i=0; i<len+1; i++)

    {

        count++;

        if(str[i] == ' ' || str[i] == '\n')

        {

            p = &str[i-count+1];        //取单词的首地址

            q = &str[i-1];              //取单词的尾地址

            count = 0;

           while(p < q)             //调换每个单词字母的顺序

            {

                tmp = *p;

                *p = *q;

                *q = tmp;

                p++;

                q--;

            }

        }

    }

    fputs(str,stdout);

    printf("\n");

4000

    ret
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐