编一个程序,输入3个字符串(长度均不超过30)存入一个二维的字符型数组中,将第3个字符串连接到第2个字符串之后,然后再连接到第1个字符串之后,组成新的字符串存入一维的字符型数组中,然后输出该新的字符串(说明:本题不允许使用字符串连接函数)。
时间: 2023-06-12 12:03:03 浏览: 78
以下是实现该程序的 C++ 代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[3][31];
char newStr[91]; // 3 * 30 + 1
// 输入3个字符串
for (int i = 0; i < 3; i++) {
cin >> str[i];
}
// 将第3个字符串连接到第2个字符串之后
int len1 = strlen(str[0]);
int len2 = strlen(str[1]);
int len3 = strlen(str[2]);
for (int i = 0; i < len2 + len3; i++) {
if (i < len3) {
newStr[i] = str[2][i];
} else {
newStr[i] = str[1][i - len3];
}
}
// 将新字符串连接到第1个字符串之后
int lenNew = strlen(newStr);
for (int i = 0; i < len1 + lenNew; i++) {
if (i < lenNew) {
newStr[i + len1] = newStr[i];
} else {
newStr[i + len1] = str[0][i - lenNew];
}
}
// 输出新字符串
cout << newStr << endl;
return 0;
}
```
首先定义一个二维字符型数组 `str`,用于存储输入的3个字符串。然后定义一个一维字符型数组 `newStr`,用于存储连接后的新字符串。
接着使用 `cin` 输入3个字符串,然后计算出每个字符串的长度,用于后续的数组访问。
将第3个字符串连接到第2个字符串之后的过程,可以使用一个循环来实现。循环变量 `i` 从0到`len2+len3-1`,当 `i` 小于 `len3` 时,将第3个字符串的第 `i` 个字符赋值给新字符串 `newStr` 的第 `i` 个位置,否则将第2个字符串的第 `i-len3` 个字符赋值给 `newStr` 的第 `i` 个位置。
将新字符串连接到第1个字符串之后的过程,同样可以使用一个循环来实现。循环变量 `i` 从0到`len1+lenNew-1`,当 `i` 小于 `lenNew` 时,将 `newStr` 的第 `i` 个字符赋值给新字符串 `newStr` 的第 `i+len1` 个位置,否则将第1个字符串的第 `i-lenNew` 个字符赋值给 `newStr` 的第 `i+len1` 个位置。
最后输出新字符串即可。注意,字符型数组在输出时不需要使用循环,可以直接使用 `cout` 输出。
阅读全文