为什么输出z字符有问题
#include<iostream>
#include<string>
using namespace std;
int L[100][100];
int s[100][100];
int commomOrder(int m,int n,string x,string y,string *z)
{
for(int j=0;j<=n;j++)
{
L[0][j]=0;
}
for(int i=0;i<=m;i++)
{
L[i][0]=0;
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(x[i]=y[j])
{
L[i][j]=L[i-1][j-1]+1;
s[i][j]=1;
}
else if(L[i][j-1]>L[i-1][j])
{
L[i][j]=L[i][j-1];
s[i][j]=2;
}
else
{
L[i][j]=L[i-1][j];
s[i][j]=3;
}
i=m;
j=n;
int k=L[m][n];
while(i>0&&j>0)
{
if(s[i][j]==1)
{
z[k]=x[i];
k--;
i--;
j--;
}
else if(s[i][j]==2)
j--;
else
i--;
}
return L[m][n];
}
void main()
{
string x;
string y;
string *z=new string[40];
cout<<"输入字符串想x"<<endl;
cin>>x;
cout<<"输入字符串y"<<endl;
cin>>y;
int k=commomOrder(x.size()-1,y.size()-1,x,y,z);
cout<<k<<endl;
for(int i=0;i<k;i++)
{
cout<<z[i];
}
}
为什么我用c字符串时输出Z是结果是乱码 烫烫烫,我该怎么改啊
#include<iostream>
#include<string>
using namespace std;
int L[100][100];
int s[100][100];
int commomOrder(int m,int n,char x[],char y[],char z[])
{
for(int j=0;j<=n;j++)
{
L[0][j]=0;
}
for(int i=0;i<=m;i++)
{
L[i][0]=0;
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(x[i]=y[j])
{
L[i][j]=L[i-1][j-1]+1;
s[i][j]=1;
}
else if(L[i][j-1]>L[i-1][j])
{
L[i][j]=L[i][j-1];
s[i][j]=2;
}
else
{
L[i][j]=L[i-1][j];
s[i][j]=3;
}
i=m;
j=n;
int k=L[m][n];
while(i>0&&j>0)
{
if(s[i][j]==1)
{
z[k]=x[i];
k--;
i--;
j--;
}
else if(s[i][j]==2)
j--;
else
i--;
}
return L[m][n];
}
void main(){
char x[100];
char y[100];
char z[100];
cout<<"输入字符串想x"<<endl;
for(int i=0;i<10;i++)
{
cin>>x;
}
cout<<"输入字符串y"<<endl;
for(i=0;i<10;i++)
{
cin>>y;
}
int k=commomOrder(10,10,x,y,z);
cout<<k<<endl;
for(i=0;i<k;i++)
{
cout<<z[i];
}
}