我的代码
using namespace std;
int main()
{
char a[100];
char b[100];
cin>>a;
cin>>b;
char s[200];
int i=0,m=0,n=0;//输入数组
while(a[m]!='\0')
{
s[i]=a[m];
i++;
m++;
}
while(b[n]!='\0')
{
s[i]=b[n];
i++;
n++;
}//合并数组
int num=1;
while(s[num]!='\0')
{
char temp;
int c=num;
while(c>0)
{
if(s[c]<s[c-1])
{
temp=s[c-1];
s[c-1]=s[c];
s[c]=temp;
c--;
}
else break;
}
num++;
} //插入排序
int j=0;
while(s[j]!='\0')
{
if(s[j]==s[j+1])
{
int w=j;
while(s[w]!='\0')
{
s[w]=s[w+1];
w++;
}
j++;
}
j++;
} //去除重复元素
cout<<s;//输出
}
这是问题
这是输出结果
合并结束后加一句
s[i] = '\0';
说句实话没问题呀
这样把排序写成sort把,优化一下不会的话看看这个https://ac-fun.blog.csdn.net/article/details/105936466
#include<iostream>
#include <cstdio>
using namespace std;
int main()
{
char a[100],b[100];
cin>>a>>b;
char s[200];
int i=0,m=0,n=0;//输入数组
while(a[m]!='\0'){
s[i]=a[m];
i++;
m++;
}
while(b[n]!='\0'){
s[i]=b[n];
i++;
n++;
}//合并数组
int num=1;
while(s[num]!='\0'){
char temp;
int c=num;
while(c>0){
if(s[c]<s[c-1]){
temp=s[c-1];
s[c-1]=s[c];
s[c]=temp;
c--;
}else{
break;
}//////////用sort解决
}
num++;
} //插入排序
int j=0;
while(s[j]!='\0'){
if(s[j]==s[j+1]){
int w=j;
while(s[w]!='\0'){
s[w]=s[w+1];
w++;
}
j++;
}
j++;
} //去除重复元素
cout<<s;//输出
}
字符串末尾还有一个结束符"\0",结束符也要占一位,所以你要把长度加大一位
或者用string代替char类型。