#include
#include
#include
using namespace std;
int main(){
char str[20],substr[5];
while(cin >> str,cin >> substr){
char max=str[0];
int x;
for(int i=0,len=strlen(str);iif(str[i]-max>0){
x=i;
max=str[i];
}
}
for(int i=strlen(str);i>x;i--){
str[i+2]=str[i-1];
}
for(int i=0;i<3;i++,x++){
str[x+1]=substr[i];
}
for(int i=0,len=strlen(str);i



插入后没有进行'\0'赋值,导致字符串输出长度不明确。
因为你声明数组的时候没有初始化,导致拼接完字符串后的字符串没有正常结束,cout也就不能正常输出。
代码修改如下
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main() {
char str[20] = { 0 }, substr[5] = { 0 }; //修改1
while (cin >> str, cin >> substr) {
char max = str[0];
int x=0;//修改2
for (int i = 0, len = strlen(str); i < len; i++) {
if (str[i] - max > 0) {
x = i;
max = str[i];
}
}
for (int i = strlen(str); i > x; i--) {
str[i + 2] = str[i - 1];
}
for (int i = 0; i < 3; i++, x++) {
str[x + 1] = substr[i];
}
for (int i = 0, len = strlen(str); i < len; i++) {
cout << str[i];
}
cout << endl;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!