您的位置:首页 > 编程语言 > C语言/C++

C++ 二维字符串数组 实现多组字符串逆序输出

2018-01-25 15:47 441 查看
  题源:
https://www.nowcoder.com/practice/171278d170c64d998ab342b3b40171bb?tpId=40&tqId=21336&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking

  题目内容:

输入任意4个字符(如:abcd), 并按反序输出(如:dcba)

  代码:

#include <iostream>
#include <vector>
#include <cstring>
#include <string>

using namespace std;

void reverse_one()
{
cout<<"input the number of strings to be reversed"<<endl;
int num = 0;
cin>>num;

vector<string> str_vec;
string tmp;
for(int i=1; i<=num; i++){
cout<<"input str"<<i<<":"<<endl;
cin>>tmp;
char * ctmp = (char *)tmp.c_str();// const char * string.c_str()
str_vec.push_back(strrev(ctmp));
}
cout<<"reversed outcome:"<<endl;
for(int i=0; i<=num-1; i++){
cout<<str_vec[i]<<endl;
}
}

void my_reverse(char * my_string)
{
int unsigned my_strlen = strlen(my_string);
for(int i = 0; i <= my_strlen/2-1; i++){
char tmp = my_string[i];
my_string[i] = my_string[my_strlen-1-i];
my_string[my_strlen-1-i] = tmp;
}
}

void fun_two()
{
cout<<"input the number of strings to be reversed"<<endl;
int num = 0;
cin>>num;

char string_arr[num][5];//是string_arr[num][5]不是string_arr[num][4]:'\0'是字符串的结束标志
for(int i=0;i<num;i++){
cout<<"input str"<<i<<" with 4 characters:"<<endl;
cin>>string_arr[i];
cout<<"* "<<string_arr[i]<<" *"<<endl;
my_reverse(string_arr[i]);
cout<<"* "<<string_arr[i]<<" *"<<endl;
}

cout<<"reversed outcome"<<endl;
for(int i=0;i<num;i++){
cout<<"# "<<string_arr[i]<<" #"<<endl;
}
}

void test()
{
char st[ ][6]={"china","japan","korea"};//'\0'的问题需要注意
cout<<st[0]<<endl;
cout<<st[1]<<endl;
cout<<st[2]<<endl;
}

int main(){
fun_two();
//    test();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息