C语言编程 将句子反转但单词拼写顺序正确(不使用库函数)

eg:
有一个字符数组的内容为:"student a am i",
请你将数组的内容改为"i am a student".
要求:
不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。

        student a am i
        i ma a tneduts
        i am a student

        代码具体思想
        1.将句子反转(不管单词拼写顺序)
        2.将各个单词分别反转为正确顺序

源代码:

#include<stdio.h>
#include<stdlib.h>
void Reverse(char *left, char *right)//范围反转
{
    char temp;
    while (left < right)
    {
        temp = *left;
        *left = *right;
        *right = temp;
        left++; right--;
    }
}
int TheStrlen(char *str)。。求字符串长度
{
    int count=0,i=0;

    while (*(str + i)!=‘\0‘)
    {
        count++;
        i++;
    }

    return count;
}
void ReverseEnd(char *str)
{
    char *left = str;
    char *right = str + TheStrlen(str) - 1;
    char *p = str;
    char *sta;
    Reverse(left, right);
    while (*p != ‘\0‘)//将具体单词反转
    {
        sta = p;
        while (*p != ‘ ‘&&*p != ‘\0‘)
        {
            p++;
        }//测单词长度范围
        Reverse(sta, p - 1);//反转单词
        if (*p == ‘ ‘)//跳转至下一个单词
        {
            p++;
        }
    }

}
int main()
{
    char str[] = "i am a student";
    ReverseEnd(str);
    printf("%s\n", str);
    system("pause");
    return 0;
}

原文地址:https://blog.51cto.com/14232799/2382186

时间: 2024-10-03 09:19:52

C语言编程 将句子反转但单词拼写顺序正确(不使用库函数)的相关文章

反转句子中单词的顺序(单词中字符的顺序保持不变,c语言)

1 #include <stdio.h> 2 #include <string.h> 3 4 void exchange(char *string, int c1, int c2); 5 void revertString(char *string, int iStart, int iEnd); 6 void revertWordsInString(char *string); 7 8 int main(int argc, const char * argv[]) 9 { 10 1

翻转句子中单词的顺序 C语言

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. 为简单起见,标点符号和普通字母一样处理. 例如将"I am a student"转化为"student a am I". #include <stdio.h> #include <string.h> //逆转字符串 char* Reverse(char *str, int len) { if(str == NULL || len <= 0) ret

C语言强化(九)翻转句子中单词的顺序

这是到很常见的题目,非常简单,但你用到数据结构了吗,或者说你用对了吗? 通过这道题,你可以掌握: 如何将用户的输入,输出到控制台 如何分割字符串 如何正确使用数据结构 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.标点符号和普通字母一样处理. 例如输入"I am a student.",则输出"student. a am I". 思路 一.获取字符串 首先要能够获取到用户输入的一串字符串,有两点需要注意: 1.如果使

【编程题目】翻转句子中单词的顺序

第 10 题(字符串)翻转句子中单词的顺序.题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理.例如输入“I am a student.”,则输出“student. a am I”. 思路:用栈,把每个单词压入栈,再依次弹出输出. /* 第 10 题(字符串) 翻转句子中单词的顺序. 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处

华为C语言编程规范

DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd.版权所有 侵权必究All rights reserved密级:confidentiality levelDKBA 2826-2011.52011-06-02 华为机密,未经许可不得扩散 Huawei Confidential 第2页,共61页Page 2 , Total61修订声明Revision

程序员面试50题(3)—翻转句子中单词的顺序[算法]

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“I am a student.”,则输出“student. a am I”. 分析:由于编写字符串相关代码能够反映程序员的编程能力和编程习惯,与字符串相关的问题一直是程序员笔试.面试题的热门题目.本题也曾多次受到包括微软在内的大量公司的青睐. 由于本题需要翻转句子,我们先颠倒句子中的所有字符.这时,不但翻转了句子中单词的顺序,而且单词内字符也被翻转了.

剑指Offer41 反转单词顺序,单词字符顺序不变

1 /************************************************************************* 2 > File Name: 41_ReverseWords.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年09月04日 星期日 16时18分34秒 6 **************************************

(新手篇)嵌入式Linux C 语言编程环境

嵌入式Linux C 语言编程环境有四部分 1.编译器vi 1.1 vi的基本模式 1.1.1 命令模式(Command Mode) 在该模式下输入命令来控制屏幕光标的移动,字符.单词或行的删除,移动复制段落. 1.1.2 插入模式(Insert Mode) 按[ESC]键可以回到命令行模式.按字母[i]键进入插入模式,就可以写代码了. 1.1.3 低行模式(Last Line Mode) 命令模式下,按[:]键进入低行模式.如“:q”离开 “:w”保存. 2.编译链接器 GCC 2.1 GCC

Coursera-C程序设计进阶-编程题#1:单词翻转

编程题#1:单词翻转 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个句子(一行),将句子中的每一个单词翻转后输出. 输入 只有一行,为一个字符串,不超过500个字符.单词之间以空格隔开. 输出 翻转每一个单词后的字符串,单词之间的空格需与原文一致 样例输入 hello world 样例输出 olleh dlrow #include<iostream> #incl