| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1370 人关注过本帖
标题:请教一个简单问题
取消只看楼主 加入收藏
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
 问题点数:0 回复次数:3 
请教一个简单问题

书上有这么一题:

编写一个程序采用递归方法逆序放置a数组中的元素,假定a有5个元素

#include "stdafx.h" #include "iostream.h" char a[5]; int i,n; void input(); int xf(int n,char a[]); void output(); void main(int argc, char* argv[]) { input(); xf(5,a); output(); }

void input() { cout<<"请为数组a输入5个元素:"<<endl; for(i=0;i<=4;i++) cin>>a[i]; }

int xf(int n,char a[]) { char t=a[n-1]; a[n-1]=a[5-(n-1)-1]; a[5-(n-1)-1]=t; if(n=0) return 0; else return (n-1); }

void output() { for(i=0;i<=4;i++) {cout<<a[i];} cout<<endl; }

我试过了,编译没有问题,但只能交换a[0]和a[4]

比如说,输入asdfg,应该输出gfdsa,而输出的是gsdfa,请问这怎么回事???

搜索更多相关主题的帖子: 简单问题 
2004-08-23 18:26
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
得分:0 

先谢谢上面两位,仔细检查int xf(int n,char a[])后,修正两个低级错误:

if(n=0)改为if(n<=0), return (n-1)改为 return xf(n-1) 但编译出现错误:error C2660: 'xf' : function does not take 1 parameters

若改为return xf(n-1,a) 编译没有出现错误,但不能实现交换,真是难搞,请版主再帮我看看。

2004-08-23 23:23
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
得分:0 
请问live41 应该怎么改,我已弄了很久.
2004-08-24 00:08
garyxuan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2004-8-23
收藏
得分:0 

多谢live兄,我现算是弄懂了,错就错在多交换了一遍,递归到n=3时交换已完成,我当时没有想清楚,n个元素其实只要n/2+1或n/2个进行就行,我的递归条件是每个数组元素都进行一次交换,其结果又回到原来的情况。总算弄懂了,再次多谢live兄。

至于knocker的,用了地址传递,我会好好看一下,同时也谢谢这位仁兄。

呵呵,大家有问题一起来讨论吧!

2004-08-24 15:22
快速回复:请教一个简单问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012021 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved