C 语言反转字符串中的单词顺序程序

如何编写一个C 语言程序来反转字符串中的单词顺序,并附带示例。例如,“tutorial gateway”将变成“gateway tutorial”。

C 语言反转字符串中的单词顺序示例 1

这个C语言反转字符串中单词的程序允许用户输入一个字符串(或字符数组)和一个字符值。接下来,它将反转字符串中单词的顺序。

#include <stdio.h>
#include <string.h>

int main()
{
char str[100];
int i, j, len, startIndex, endIndex;

printf("\n Please Enter any String : ");
gets(str);

len = strlen(str);
endIndex = len - 1;

printf("\n ***** Given String in Reverse Order ***** \n");
for(i = len - 1; i >= 0; i--)
{
if(str[i] == ' ' || i == 0)
{
if(i == 0)
{
startIndex = 0;
}
else
{
startIndex = i + 1;
}
for(j = startIndex; j <= endIndex; j++)
{
printf("%c", str[j]);
}
endIndex = i - 1;
printf(" ");
}
}

return 0;
}
C Program to Reverse Order of Words in a String 1

在此C语言反转字符串中单词的程序中,我们使用了 For 循环 来迭代字符串中的每个字符,并删除其中的所有重复字符。

for(i = len - 1; i >= 0; i--)
{
	if(str[i] == ' ' || i == 0)
	{
		if(i == 0)
		{
			startIndex = 0;
		}
		else
		{
			startIndex = i + 1;
		}
		for(j = startIndex; j <= endIndex; j++)
		{
			printf("%c", str[j]);
		}
		endIndex = i - 1;
		printf(" ");				
	} 
}

用户在此C语言反转字符串中单词的程序中输入的数值

str[] = Hello World
len = 11
endIndex = len – 1 = 10

For 循环 – 第一次迭代:for(i = len – 1; i >= 0; i–)
for(i = 10; 10 >= 0; 10–)
接下来,它将进入 If 语句 来检查 str[i] 是否等于空格或 i = 0
当它到达单词后面的空格时,此条件将为真。
for(i = 5; 5 >= 0; 5–)
if(str[5] == ‘  ‘ || 5 == 0) – 条件为真,因此它将进入下一个 If 语句。
if(i == 0) => if(5 == 0) – 条件为假,因此将执行 else 块中的语句。
startIndex = i + 1
startIndex = 6

第二次 For 循环 – 第一次迭代:for(j = startIndex; j <= endIndex; j++)
=> for(j = 6; 6 <= 10; 6++)
在 For 循环中,我们使用了 C 编程 printf 语句来打印单个字符。
printf(“%c”, str[j]) => W

对 j = 7, j = 8, j= 9, 和 j = 10 重复此操作。接下来,它将开始第一次 For 循环迭代,其中 i = 4。

在C语言反转给定字符串中单词的程序中,对 i = 4, i = 3, i = 2, i = 1 和 i = 0 重复此操作。

C 语言反转字符串中的单词顺序示例 2

这个反转字符串中单词的 程序 将从末尾位置遍历到起始位置。一旦找到空格,它将用 NULL 值替换空格,然后在此 NULL 值之后打印字符串。

#include <stdio.h>
#include <string.h>

int main()
{
char str[100];
int i, len;

printf("\n Please Enter any String : ");
gets(str);

len = strlen(str);
printf("\n ***** Given String in Reverse Order ***** \n");
for(i = len - 1; i >= 0; i--)
{
if(str[i] == ' ')
{
str[i] = '\0';
printf("%s ", &(str[i]) + 1);
}
}
printf("%s", str);

return 0;
}
Please Enter any String : Welcome To Tutorial Gateway

 *****  Given String in Reverse Order  ***** 
Gateway Tutorial To Welcome

C 语言反转字符串中的单词顺序示例 3

这个 程序 与第一个示例相同,但这次我们将反转顺序的单词保存在一个单独的字符串中。

#include <stdio.h>
#include <string.h>

int main()
{
char str[100], revstr[100];
int i, j, index, len, startIndex, endIndex;

printf("\n Please Enter any String : ");
gets(str);

len = strlen(str);
index = 0;
endIndex = len - 1;

printf("\n ***** Given String in Reverse Order ***** \n");
for(i = len - 1; i > 0; i--)
{
if(str[i] == ' ')
{
startIndex = i + 1;

for(j = startIndex; j <= endIndex; j++)
{
revstr[index] = str[j];
index++;
}
revstr[index++] = ' ';
endIndex = i - 1;
}
}
for(i = 0; i <= endIndex; i++)
{
revstr[index] = str[i];
index++;
}
revstr[index] = '\0';
printf("\n Given String in Reverse Order = %s", revstr);
return 0;
}
Please Enter any String :  learn c programming with examples at tutorial gateway

 *****  Given String in Reverse Order  ***** 

 Given String in Reverse Order = gateway tutorial at examples with programming c learn