将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。
方法一、采用递归调用的方式实现
#include<iostream>
#include<string.h>
using namespace std;
void print_Inverse_Using_Recusive(char *s, int i)
{
if(i == strlen(s))
return;
i++;
print_Inverse_Using_Recusive(s, i);
cout<<s[--i];
}
int main()
{
//对于char* / char[]
char s[1001];
cout<<"Please input char[]:"<<endl;
cin.getline(s, 1000); //iostream下的函数, 第二个参数表示允许的最大输入长度
print_Inverse_Using_Recusive(s,0);
cout<<endl;
return 0;
}
评述:采用递归调用的方式最后逆序输出时即:“cout << s[--i]时,不太理解是怎么全部输出的。
方法二、直接采用字符串的(最简单)
#include <iostream>
using namespace std;
int main()
{
string str;
getline(cin,str);
for(int i=str.length()-1;i>=0;i--)
{
cout << str[i];
}
cout << endl;
return 0;
}
需要整理
1. C++中string的用法:
2. getline的用法:
方法三、利用栈的方式实现
#include <iostream>
#include <stack>
#include <string.h>
using namespace std;
void print_Inverse_Using_Stack(char *s)
{
stack<char> ss;
for(int i = 0; i < strlen(s); i++)
{
ss.push(s[i]);
}
while(!ss.empty())
{
cout<<ss.top();
ss.pop(); //注意top不会进行出栈操作,所以需手动pop
}
}
int main()
{
//对于char* / char[]
char s[1001];
cout<<"Please input char[]:"<<endl;
cin.getline(s, 1000); //iostream下的函数, 第二个参数表示允许的最大输入长度
print_Inverse_Using_Stack(s);
cout<<endl;
return 0;
}
评述:栈的用法,待研究。