C++编程 编写字符串反转函数mystrrev

编写字符串反转函数mystrrev,该函数的功能为将指定字符串中的字符顺序颠倒排列。然后再编写主函数验证之。
函数原型为 void mystrrev(char string[])
输入格式:
一个字符串,不会超过100个字符长,中间可能包含空格
输出格式:
输入字符串的反转

应用C++的string类对象实现。为体现一般性,对象中就允许空格出现;自定义逆序函数形参应使用引用类型,以便永久性改变对实参对象的操作。举例代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include <string>
#include <iostream>
using namespace std;
void mystrrev(string &str){//引用形参,以改变实参
for(int j=str.length()-1,i=0;i<j;i++,j--){
char t=str[i];
str[i]=str[j],str[j]=t;
}
}
int main(int argc,char *argv[]){
string s;
char ch;
cout << "Input a string...\ns=";
while((ch=cin.get())!='\n')//输入可有空格
s+=ch;
cout << "The original string: " << s << endl;//逆序前
mystrrev(s);//调用自定义逆序函数
cout << "After reverse order: " << s << endl;//逆序后
return 0;
}

运行结果举例:

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-11
/*
    Author:QCQ
    Date:2015-4-11
    e-mail:qinchuanqing918@163.com
 */
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<string.h>
using namespace std;
void mystrrev(char str[]);
int main()
{
    char temp[30];
    while(gets(temp)){
        cout<<temp<<endl;
        mystrrev(temp);
        cout<<temp<<endl;
    }
    return 0;
}

void mystrrev(char str[]){
    char *pbegin = str;
    char *pend = str + strlen(str) - 1;
    while(pbegin < pend)
    {
        char tmp;
        tmp=*pbegin;
        *pbegin=*pend;
        *pend=tmp;
        ++pbegin;
        --pend;
    }
}

本回答被网友采纳
第2个回答  2021-03-28

字符顺序颠倒重排
void mystrrev(char *string){ int i;char *s[100]; \/\/定义指针数组 s=string; \/\/将字符串首地址赋给指针 i=strlen(*string) \/\/字符串的长度 for(i=i-1;i>=0;i--){ printf("%c",*s[i]);} printf("\\n\\n")}

相似回答