C单词翻转

发布时间:2024年01月05日

突然想起来,来记录一下自己做的C语言练习题。

题目:

从键盘输入一个字符串,包含很多个单词。每个单词之间以1个或多个空格隔开。要求翻转每个单词,但是单词在句子中的顺序不变。注意行前和行后可能有多个空格。

输入格式:

一个字符串,包含很多个单词。每个单词之间以1个或多个空格隔开。要求翻转每个单词,但是单词在句子中的顺序不变。注意行前和行后可能有多个空格。字符串总长度不超过1000,单词数不超过50,每个单词不超过20个字母。测试数据保证输入的字符只含英文字母和空格。

输出格式:

输出翻转后的字符串。每个单词之后输出一个空格。注意行前不能有多余的空格。行末只能有1个空格。

输入样例1:

olleH   dlroW

输出样例1:

Hello World 

#include<stdio.h>
int main(){
? ? char a[1000];
? ? char b[1000];
? ? gets(a);
? ? char *p;
? ? char *q;
? ? p=a;
? ? q=b;
? ? while(*p==' ')p++;
? ? while(*p){
? ? ? ? if(*p!=' '){
? ? ? ? ? ? *q=*p;
? ? ? ? ? ? q++,p++;
? ? ? ? }
? ? ? ? else if(*p==' '&&*(p+1)!=' '){
? ? ? ? ? ? ?*q=*p;
? ? ? ? ? ? q++,p++;
? ? ? ? }
? ? ? ? else if(*p==' '&&*(p+1)==' '){
? ? ? ? ? ? p++;
? ? ? ? }
? ? }
? ? *q='\0';
? ? char *w;
? ? char e;
? ? w=b;
? ? while(*w){
? ? ? ? q=w,p=w;
? ? ? ? while(*q!=' '&&*q!='\0'){
? ? ? ? ? ? q++;
? ? ? ? }
? ? ? ? w=q;
? ? ? ? w++;
? ? ? ? q--;
? ? ? ? while(q>p){
? ? ? ? ? ? e=*q;
? ? ? ? ? ? *q=*p;
? ? ? ? ? ? *p=e;
? ? ? ? ? ? p++,q--;
? ? ? ? }
? ? }
? ?w--;
printf("%s",b);
? ? if(*w!=' ')printf(" ");
}?

文章来源:https://blog.csdn.net/2301_79986573/article/details/135306320
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。