例:要求输入:“I like beijing.”

             输入:“beijing. like I”

输出的结果用空格隔开;标点不用倒置

逆序打印字符串_逐字母逆序打印字符串

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <string.h>
void reverse(char* left,char* right)
{
assert(left && right);
while(left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char ch[100]={ 0 };
gets(ch);
int len = strlen(ch);
char* start = ch;
char* end = ch;
while(*end != '\0')
{
while(*end != ' ' && *end != '\0')
//打印单个单词时,遇到空格时表明一个单词的结束
// 而打印最后一个字母时,遇到\0才结束
{
end++;
}
reverse(start,end-1);
if(*end == '\0')
start = end;
//当打印最后一个字母时,遇到\0就结束,不用写成end-1;
else
//这里打印的不是最后一个字母,end+1跳到下一个字母
start = end + 1;
end = start;
}
reverse(ch,ch+len-1);
printf("%s",ch);
return 0;
}

定义reverse函数来逆序句子中的每个单词;

代码运行结果如下:

逆序打印字符串_C语言_02