C语言实现句子中的单词颠倒排序

一、运行结果

C语言实现句子中的单词颠倒排序_第1张图片

二、源代码

# define _CRT_SECURE_NO_WARNINGS
# include 
# include 

//实现逆转函数;
void reverse(char* left, char* right)
{
	//断言left和right都不能为空;
	assert(left);
	assert(right);

	//循环逆转字母;
	while (left < right)
	{
		//置换;
		char tmp = *left;
		*left = *right;
		*right = tmp;

		//变换置换位置;
		left++;
		right--;
	}
}

int main()
{
	//初始化变量值;
	char arr[101] = { 0 };

	//获取变量值;
	gets(arr);

	//调用逆转函数;
	int len = strlen(arr);

	//逆序整个字符串;
	reverse(arr, arr + len - 1);

	//逆序每个单词;
	char* start = arr;

	//循环调用函数;
	while (*start)
	{
		//初始化变量值;
		char* end = start;

		//循环判断是否++;
		while (*end != ' ' && *end != '\0')
		{
			end++;
		}

		//调用逆转函数;
		reverse(start, end - 1);

		//判断end是否为空;
		if (*end != '\0')
		{
			end++;
		}

		//跳转初始位置到下一个单词;
		start = end;
	}

	//打印结果;
	printf("%s\n", arr);

	return 0;
}

你可能感兴趣的:(c语言,算法,开发语言)