c语言编程题,求解
3个回答
展开全部
#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;
}
应该空格不被反转吧 明天用电脑刚刚吧
展开全部
方法程序如下:
#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");}
我试过了,运行成功实现逆序没问题。
希望能够帮到你,望采纳!
#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");}
我试过了,运行成功实现逆序没问题。
希望能够帮到你,望采纳!
追问
不是整个句子逆序
是单词逆序,整体顺序不变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不难,我现在没电脑,不方便测试要不我给你思路。1.算出字符串的长度,2.用for循环,从那个长度减1到0逐个输出,就可以实现逆序输出了。
追问
可是这个是原句顺序不变,只是单词逆序
怎么用for循环实现啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询