例:输入:i like beijing. 输出: beijing. i like
介绍一个三步反转法: 1. 先将整个字符串倒置 : .gnijieb ekil i
2. 再把每个单词倒置: beijing. like i
void reverse(char* left, char* right) // 定义函数 两个指针类型的形参分别接收左右下标
{
while (left < right) // 左下标小于右下标时,才有需要交换的字符
{
char mid = *left; // 利用一个中间变量交换
*left = *right;
*right = mid;
left++;
right--;
}
}
int main()
{
char arr[100] = { 0 }; // 不超过100
gets(arr); // 读取一行
reverse(arr,arr+strlen(arr)-1); //调用函数
printf("%s\n", arr); // 打印结果,检查函数是否正确再继续往下,最后删掉
char* start = arr; // 定义一个左下标
while (*start != ' ' && *start != '\0')
{
char* end = start; // 定义一个下标,从左下标开始,让这个end往后走,去找每个单词的结尾
for(end=start;;end++)
{
if (*end == ' '|| *end

本文介绍了如何使用C语言实现一个功能,即保持标点符号不变,将句子中的单词顺序倒置。通过三步反转法,首先整体翻转字符串,然后逐个翻转单词,最后交换单词。讲解了交换字符串元素的方法,以及在处理带有空格的字符串时避免使用scanf而使用gets。文章详细解释了如何确定单词边界并进行交换,确保在处理最后一个单词时不会出现越界问题。
最低0.47元/天 解锁文章
2198

被折叠的 条评论
为什么被折叠?



