关于字符串倒置的问题,大家看下咋不对

[复制链接]
查看11 | 回复1 | 2008-5-23 08:08:02 | 显示全部楼层 |阅读模式
/*作了下修改.VC编译成功.程序中有解释.*/#include #include using namespace std; void inversion(char string[],int x){ char c,temp; int m,n; for(int i=0;i<x;i++) if((c=string)=='\0') {n=i-1;break; }//为免错误,这里要加上跳出循环的语句,break;n=i-1,不能把'\0'调到字符串前面m=n/2; for(i=0;i<=m && i<n;i++,n--) //加多一个条件,去掉int ,重复定义了{temp=string;string=string[n];string[n]=temp;} } int main() { char c,str[81]; gets(str); cout<<str<<endl;inversion(str,81); for(int i=0;(c=str)!='\0';i++) cout<<c; //cout<<(char)str; cout<<endl; system("pause"); return 0;}
回复

使用道具 举报

千问 | 2008-5-23 08:08:02 | 显示全部楼层
首先,你的str[81]并不一定全存上字符,比如我只输hello则前五个是有效字符.所以,你传参的时候,不能传81应该是strlen(str);其次,你在逆置的函数里,只将一半的字符逆置就可以了,想一想,如果将所有的都逆置,前面的和后面逆过一次,后面再逆一次,又会回到原始的字符了.最后把'\0'的位置放好即可!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行