c语言编程题,求解

将字符串中的单词逆序例如输入olleh!dlrow输出helloworld!求大神啊!... 将字符串中的单词逆序
例如
输入 olleh !dlrow
输出 hello world!

求大神啊!
展开
 我来答
三天打鱼N
2019-01-21 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:579万
展开全部

#include <stdio.h> 
void f(char *cs,int len) {
for (int i = 0; i < len / 2; i++) {
char c = cs[i];
cs[i] = cs[len - i - 1];
cs[len - i - 1] = c;
}
}
void main() {
char cs[200]="olleh!dlrow";

int i = 0;

int start = 0;
while (1)
{
if (cs[i] == 0) {
if (start != i) {
f(cs + start, i - start);
}
break;
}
if (cs[i] == '!') {
if (start != i) {
f(cs + start, i - start);
}
start = i;
}
i++;
}
printf("%s", cs);
getchar();


}
更多追问追答
追问
的确逆序过来了,但如果中间有空格怎么办呢
追答
加一个条件 条件是 前一个字符是空格 而当前字符不是空格 就调用f函数
if (cs[i] == '!'||(i>0&&cs[i]!=' '&&cs[i-1]==' ') {
if (start != i) {
f(cs + start, i - start);
}
start = i;
}

应该空格不被反转吧 明天用电脑刚刚吧
Annie说情感

2019-01-21 · TA获得超过6558个赞
知道大有可为答主
回答量:2174
采纳率:76%
帮助的人:176万
展开全部
方法程序如下:
#include<stdio.h>
#include<string.h>
main()
{char a[10];int i,j;
scanf("%s",a);
j=strlen(a);
for(i=j-1;i>=0;i--)
printf("%c",a[i]);
printf("\n");}
我试过了,运行成功实现逆序没问题。
希望能够帮到你,望采纳!
追问
不是整个句子逆序
是单词逆序,整体顺序不变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-01-21
知道答主
回答量:14
采纳率:0%
帮助的人:1万
展开全部
这个不难,我现在没电脑,不方便测试要不我给你思路。1.算出字符串的长度,2.用for循环,从那个长度减1到0逐个输出,就可以实现逆序输出了。
追问
可是这个是原句顺序不变,只是单词逆序
怎么用for循环实现啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式