字符串拼接
题目描述
要求完成cat_fun函数,将两个字符串拼接为一个,并将结果以指针的形式返回。使用动态内存分配实现
#include <iostream>
using namespace std;
char* cat_fun(const char* stra, const char* strb){
}
int main(){
char stra[20], strb[20];
cin >> stra >> strb;
cout << cat_fun(stra, strb) << endl;
}
输入
两个不包含空格的字符串
输出
字符串的拼接结果
样例输入 复制
hello
tju!
样例输出 复制
hellotju!
翻转:
题目描述
完善函数str_reverse,实现字符串的翻转,并将结果以char*的形式返回
#include <iostream>
using namespace std;
char* str_reverse(const char* str){
}
int main()
{
char str[100];
cin >> str;
cout << str_reverse(str) << endl;
return 0;
}
输入
不包含空格的字符串。
输出
字符串的翻转结果。
样例输入 复制
helloworld
样例输出 复制
dlrowolleh
(两道放一起了)
我的答案
(笔记还是放在注释里)
//拼接
char* cat_fun(const char* stra, const char* strb) {
int p = 0;//作为起始
int length = strlen(stra)+strlen(strb)+1;//“+!”为结束符预留位置
char* newStr = new char[length];
for (int i = 0; i < strlen(stra); i++) {
newStr[p] = stra[i];
p++;
}
for (int j = 0; j < strlen(strb); j++) {
newStr[p] = strb[j];
p++;
}
newStr[p] = 0;//newStr='\0';//都可以
return newStr;//直接写返回newStr
}
//翻转
//类比拼接
char* str_reverse(const char* str) {
int p = 0;
int length = strlen(str) + 1;
char* newStr = new char[length];
for (int i = strlen(str)-1; i >=0; i--) {
newStr[p] = str[i];
p++;
}
newStr[p] = 0;
return newStr;
}
int main() {
char stra[20], strb[20];
cin >> stra >> strb;
cout<< cat_fun(stra, strb)<<endl;
char str[100];
cin >> str;
cout << str_reverse(str) << endl;
return 0;
}