C语言 ——— 将一句英语短句中的单词进行倒置

目录

题目要求

代码实现


题目要求

将一句英语短句中的单词进行倒置,标点符号不倒置

如:

输入:"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指针 重复找空格,最后完成所有单词的逆置

代码验证:

相关推荐
12.=0.24 分钟前
【stm32_7】定时器的原理与应用、基本定时器、通用定时器、PWM、模拟脉冲信号的宽度、利用PWM控制外设、逻辑分析仪的使用
c语言·stm32·单片机·嵌入式硬件
jimy141 分钟前
C语言历史版本和gnu扩展版本
c语言·算法·gnu
70asunflower1 小时前
堆与栈:C 语言内存管理的核心概念
c语言·开发语言
我不是懒洋洋1 小时前
【数据结构】二叉树OJ(单值二叉树、检查两棵树是否相同、对称二叉树、二叉树的前序遍历、另一颗树的子树)
c语言·数据结构·c++·经验分享·算法·leetcode·visual studio
爱编码的小八嘎1 小时前
C语言完美演绎9-8
c语言
wljy11 小时前
每日一题(2026.4.29) 猫猫与数学
c语言·c++·算法·蓝桥杯·stl·牛客
Rabitebla2 小时前
【C++】string 类:原理、踩坑与对象语义
linux·c语言·数据结构·c++·算法·github·学习方法
宣宣猪的小花园.5 小时前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
三品吉他手会点灯10 小时前
C语言学习笔记 - 20.C编程预备计算机专业知识 - 变量为什么必须的初始化【重点】
c语言·笔记·学习
JasmineX-113 小时前
数据结构(笔记)——双向链表
c语言·数据结构·笔记·链表