目录
题目要求
代码实现
题目要求
将一句英语短句中的单词进行倒置,标点符号不倒置
如:
输入:"I like chongqing very much,"
输出:"much, very chongqing like I"
代码实现
#include<stdio.h>
#include<string.h>
//逆置函数
void reverse(char* left, char* right)
{while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{//输入char arr[100];gets(arr);//逆置字符串int len = strlen(arr);reverse(arr, arr + len - 1);//逆置各个单词char* start = arr;char* cur = arr;while (*cur != '\0'){//找到每个单词的尾地址while (*cur != ' ' && *cur != '\0')cur++;//逆置每个单词reverse(start, cur - 1);start = cur + 1;if (*cur == ' ')cur++;}//输出printf("%s\n", arr);return 0;
}
代码解析:
先逆置整个字符串,再逆置各个单词
举例说明:
"I like chongqing very much,"
逆置整个字符串
",hcum yrev gniqgnohc ekil I"
逆置各个单词
"much, very chongqing like I"
解析:void reverse(char* left, char* right)
封装一个逆置函数,用来逆置 整个字符串 和 各个单词
解析:int len = strlen(arr);
字符串的长度
解析:reverse(arr, arr + len - 1);
逆置整个字符串,传递字符串的 起始地址arr,和字符串的 结束地址arr + len(字符串长度) - 1
解析:while (*cur != '\0') 及内部循环
start指针 指向单词首地址,cur指针 找空格,找到空格后利用 reverse函数 逆置
逆置完一个单词后,start指针 指向下一个单词的首地址,利用外部 while循环,cur指针 重复找空格,最后完成所有单词的逆置
代码验证: