c++ 帮忙找个错

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:48:20
#include<iostream>
using namespace std;

void reverse(char *s)
{
char c;
static char *t;
t=s+strlen(s)-1;
if(s<t)
{
c = *s;
*s = *t;
*t=c;
t--;
}
reverse(char *(s+1) );
}

int main()
{
char strl[20];
cout << "请输入一个字符串:" ;
cin >> strl;
cout << "愿字符串为:" << strl << endl;
reverse( strl );
cout << "倒序反转后为:" << strl << endl;
}

**************************************
Compiling...
main.cpp
C:\Documents and Settings\Administrator\桌面\6_23\main.cpp(16) : error C2144: syntax error : missing ')' before type 'char'
C:\Documents and Settings\Administrator\桌面\6_23\main.cpp(16) : error C2660: 'reverse' : function does not take 0 parameters
C:\Documents and Sett

reverse(s+1)也没用,比如原字符串是abc,前面的代码把a,c互换了,变成cba,然后reverse(s+1)又把ba互换了,变成cab.而且这个递归函数没有结束条件,会一直执行下去.

void reverse(char *s)
{
char c;
char *t;
t=s+strlen(s)-1;
while(s<t)
{
c = *s;
*s = *t;
*t=c;
s++;t--;
}
}
就行了

函数的最后应该这样写:
void reverse(char *s)
{
............
reverse(s+1);//不是原来的reverse(char *(s+1) );
}
这里是函数调用,不是函数定义,所以参数不能出现char*。

main函数最后一行应加个 return 1;应为你的main函数的返回值是int型