我有道C++题目知道结果了,但不知道怎么写过程,问了好多同学他们都不知道,求救啊

我有道题目知道结果了,但不知道怎么写过程,问了好多同学他们都不知道,求救啊,这可是我们的期末考试题目啊,老师给我们每个人一个不一样题目,明天就要交啊,就这一道题,100分... 我有道题目知道结果了,但不知道怎么写过程,问了好多同学他们都不知道,求救啊,这可是我们的期末考试题目啊,老师给我们每个人一个不一样题目,明天就要交啊,就这一道题,100分啊,望大侠帮我解决下解题过程,谢了!
原题目:
下列给定程序中函数fun的功能是:将字符串中的内容按逆序输出,但不改变字符串中的内容。例如,若字符串为abcd,则应输出dcba。
请填写完成函数定义,并完成对应功能。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
void fun(char *a)
{
/*******在此处填写完成函数定义缺少的部分*********/
}
main()
{ char s[10]="abcd";
printf("处理前字符串=%s\n处理后字符串=",s);
fun(s);
printf("\n");
}

这是我做出来答案:
{if(*a)
{fun(a+1);
printf("%c",*a);
}
}

运行结果:

望大侠给我说一下解题思路,谢了!
展开
 我来答
水晶扇
推荐于2016-08-06 · TA获得超过1536个赞
知道大有可为答主
回答量:837
采纳率:100%
帮助的人:1090万
展开全部

从字符串末尾一个一个输出。

只有#include<stdio.h>,那么不让用string.h里面的函数,所以要自己算出字符串的长度。

void fun(char *a)

 int len = 0;

 int i;

 while(a[len]!='\0') len++; // 计算字符串长度

 for(i=len-1; i>=0; i--) //逆序输出字符串

  printf("%c", a[i]); 

}

 

 

你的答案是对的啊,递归算法:

void fun(char *a)

 if(*a)

 {

  fun(a+1);

  printf("%c",*a);

 }

}

追问
我看了下非常赞同,你可以把你的这种方法详细叙述一下么?
追答
我的方法,给了注释了啊。前面是计算传入的字符串的长度(字符串默认以‘\0’结尾)。后面是一个循环,下标从len-1到0,一个一个输出字符串中的字符。这样就实现了逆序输出。
wudong901203
2012-12-21 · TA获得超过228个赞
知道答主
回答量:128
采纳率:0%
帮助的人:50.5万
展开全部
要反序打印字符串,可以用递归,就是楼上那个代码,先打印后面一个字符,再打印前面的字符,每步都遵守这个规则,递归终止条件是已经遍历到字符串结束符
追问
{ 
if(*a)
{
fun(a+1);
printf("%c",*a);
}
}答案中的fun(a+1);是什么意思,这个地方不太理解?
追答
{
if(*a) //假如没到字符串结尾

{
fun(a+1); // 先处理后面一个字符

printf("%c",*a); //打印此字符

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2012-12-21 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6357万
展开全部
你把"abcd"最后的'\0'也输出了,只是'0'不显示而已。最好把printf("%c",*a);改为if(*a)
printf("%c",*a);。余正确……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式