一 逆序字符串
输入格式
i like beijing
输出格式
gnijieb ekil i
#include<stdio.h> //逆序整个字符串
#include<string.h>
int main(){
char arr[100];
gets(arr);//读取字符串
int sz=strlen(arr); //逆序整个字符串
int left=0;
int right=sz-1;
char tem;
while(left<=right){
tem=arr[left];
arr[left]=arr[right];
arr[right]=tem;
left++;
right--;
}
printf("%s",arr);
}
在该代码中读取字符串用的gets而非 scanf和%s的组合,是因为当用scanf读取字符串,当遇到空格的时候则默认读取结束,比如当你输入i like beijing时实际上只读入了i,使用gets则可以避免这种情况的发生。
二 字符串逆序的基础上保证每一个单词的顺序不变
输入格式
i like beijing
输出格式
beijing like i
此时参考上一个代码可以先逆序整个字符串,然后再对每个单词再次逆序。
#include<stdio.h>
#include<string.h>
void reverse(char*left,char*right){
char tem;
while(left<=right){
tem=*left;
*left=*right;
*right=tem;
left++;
right--;
}
}
int main(){
char arr[100];
gets(arr);//读取字符串
int sz=strlen(arr);
reverse(arr,arr+sz-1);
char*start=arr;
char*end=start;
while(*end!='\0'){
while((*end!=' ')&&(*end!='\0')){
end++;
}
reverse(start,end-1);
start=end+1;
if(*end==' '){
end++;
}
}
printf("%s",arr);
}