#include <sstream>
#include<string>
#include<stdlib.h>
using namespace std;
int main()
{
int i;
string str, str1;
str1 = str;
stringstream ss;
cin >> i;
if (i < 0)
return 0;
ss << i;
ss >> str;
//cout << str;
char t;
//方法1
for (int i = 0; i < str.length()/2; i++)
{ //str1[str.length()-i] = str[i];
t = str[str.length() - 1 - i];
str[str.length() - 1 - i] = str[i];
str[i] = t;
}
//str1[str.length()] = '\0';
/*for (int j = 0; j<str1.length(); j++)*/
cout << str;
方法2
//for (int j = str.length() - 1; j >= 0; j--)//逆序输出
//{
// //str1[j] = str[i];
// cout << str[j];
//}
return 0;
}
#include<iostream> //不可以 string倒转
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
//char str1[100], str2[100];
string str1, str2;
int i, t, j;
//scanf("%s", str1);//输入字符串str1 不行
cin >> str1;//不行
t = str1.length();
cout << str1.length() << endl;
for (i = t - 1, j = 0; i >= 0; i--, j++)//逆序存放
{
str2[j] = str1[i];
}
str2[t] = '\0';//给字符串str2结束标志符
//printf("%s\n", str2);
cout << str2;
}
//int 数组倒转
#include<iostream> //可以
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
//char str1[100], str2[100];
//string str1, str2;
int str1[50], str2[50];
int i, t, j;
//scanf("%d", str1);//输入字符串str1
//cin >> str1;
for (i = 0; i < 5; i++)
cin >>str1[i];
for (i = 4, j = 0; i >= 0; i--, j++)//逆序存放
{
str2[j] = str1[i];
}
//str2[t] = '\0';//给字符串str2结束标志符
//printf("%s\n", str2);
for (i = 0; i < 5; i++)
cout << str2[i];
}
#include <stdio.h>
#include <string.h>
int main()
{
char str1[100], str2[100];
int i, t, j;
scanf("%s", str1);//输入字符串str1
t = strlen(str1);
for (i = t - 1, j = 0; i >= 0; i--, j++)//逆序存放
{
str2[j] = str1[i];
}
str2[t] = '\0';//给字符串str2结束标志符
printf("%s\n", str2);
}
//字符串倒转 对于字符串到转最简单的方法
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
cin >> str;
for(int i = str.size()-1; i >=0;i--)
cout << str[i];
}
对于用两个数组来倒转数组或字符串,一个数组反向存储与另一个数组正向数组。但string字符串不可以用这种方法,可以用旧地倒转,
但 int和char数组可以用该方法。
对于字符串到转最简单的方法,for(int i = str.size()-1; i >=0;i--) 直接倒转下标遍历输出法,不要存储在其他变量中了。
题目描述
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。
输入参数:
inputString:输入的字符串
返回值:
输出转换好的逆序字符串
输入描述:
输入一个字符串,可以有空格
输出描述:
输出逆序的字符串
输入例子:
I am a student
输出例子:
tneduts a ma I
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
getline(cin,str);
for(int i = str.size()-1;i>=0;i--)
cout << str[i];
}
#include <iostream>//string 也有reverse
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str;
while (getline(cin,str)) //while可以去掉
{
reverse(str.begin(), str.end());
cout << str << endl;
}
return 0;
}
字符串反转: 递归和非递归版本
#include<stdio.h>
#include<string.h>
char* reverse(char* str) //就地倒转
{
if(str)
{ int n=strlen(str);
for(int i=0;i<n/2;i++)
{
int t=str[i];
str[i]=str[n-1-i];
str[n-1-i]=t;
}
}
return str;
}
void Funcdg(char* str,int n) //递归版 没返回参数版
{
// static int n=strlen(str);
// static char* q=str;
//static char* p=str;
if (n<2)
{
return ;
}
else
{
char t = str[0];
str[0] = str[n-1];
str[n - 1] = t;
Funcdg(str+1,n-2);
// printf("%s\n",p);
}
// return str;
// return str;
}
char* Funcdg1(char* str,int n) //递归版 有返回参数版
{
// static int n=strlen(str);
// static char* q=str;
static char* p=str;
if (n<2)
{
return p;
}
else
{
char t = str[0];
str[0] = str[n-1];
str[n - 1] = t;
Funcdg1(str+1,n-2); //n-2是字符串的长度 因为首尾都去掉一个字符所以每交换一次长度减去2
// printf("%s\n",p);
}
// return str;
// return str;
}
int main()
{
char str[12]="weepf";
printf("%s\n",reverse(str));
Funcdg(str,strlen(str));
printf("%s\n", str);
printf("%s\n", Funcdg1(str,strlen(str)));
}
//结果
fpeew
weepf
fpeew
Press any key to continue
参考:http://blog.csdn.net/woyaowenzi/article/details/5606072
#include <stdio.h>
#include <string.h>
void reverse_string(char * string)
{ int len = strlen(string);
if (len <= 1) { return; }
else { char tmp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';
reverse_string(string+1);
string[len - 1] = tmp;
}
}
char* reverse_string1(char * string)
{
static char* p=string;
int len = strlen(string);
if (len <= 1) { return p; }
else { char tmp = string[0];
string[0] = string[len - 1];
string[len - 1] = '\0';
reverse_string1(string+1);
string[len - 1] = tmp;
}
} //错误
int main()
{ char p[] = "ABCDEFGH";
reverse_string(p);
printf("%s\n", p);
// printf("%s\n", reverse_string1(p));
}
//开辟另一空间来倒转
#include <stdio.h>
#include <string.h>
#include<malloc.h>
char* reverse(char* str1)
{
//#define t strlen(str1) //1
int i,j;
const int t = strlen(str1);
//const int t = 123; //2
//char str3[t];//不可以 t的大小未知
char* str2=(char*)malloc(sizeof(char)*t);
for (i = t - 1, j = 0; i >= 0; i--, j++)//逆序存放
{
str2[j] = str1[i];
}
str2[t] = '\0';//给字符串str2结束标志符
return str2;
}
int main()
{
char str1[100];
scanf("%s", str1);//输入字符串str1
char* p=reverse(str1);
printf("%s\n", p);
}
http://www.07net01.com/2015/05/839118.html