哪位牛人帮忙解决一下一个C++问题?

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:31:49
要求找出ch1和ch2字符数组中相同字符的个数,并且求出其所占所有输入字符的百分比。但是运行后sum1的值一直是1。结果不正确,不知道是怎么回事。
以下是问题代码:
char ch1[50],ch2[50];
char* p1=ch1;
char* p2=ch2;
int sum1=0;
int sum2=0;
int same=0; //相同字符的个数
int result=0; //相关性百分比

SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,50,(LPARAM)ch1);//提取用户输入内容
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,50,(LPARAM)ch2);

while(*p1!='\0') //计算输入内容长度
{
p1++;
sum1++;
}
while(*p2!='\0')
{
p2++;
sum2++;
}
if ((sum1==sum2)&&(sum1<=50)&&(sum2<=50)) //计算二者相同的字符数目
{
p1--;
p2--;
while(sum1>0,sum1--)
{
if (*p1==*p2){same++;}
p1--;
p2--;
}
result=same*100/sum2; //求相同百分比
SetDlgItemInt(IDC_EDIT3,result); //输出

}

//要用float啊,不然肯定是0或者100
char ch1[50],ch2[50];
char* p1=ch1;
char* p2=ch2;
float sum1=0.0;
float sum2=0.0;
float same=0.0; //相同字符的个数
float result=0.0; //相关性百分比

SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,50,(LPARAM)ch1);//提取用户输入内容
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,50,(LPARAM)ch2);

while(*p1!='\0') //计算输入内容长度
{
p1++;
sum1++;
}
while(*p2!='\0')
{
p2++;
sum2++;
}
p1=ch1;
p2=ch2;
for(int i=0;i<sum1;i++)
for(int j=0;j<sum2;j++)
{
if (*(p1+i)==*(p2+j)){same++;}
}

result=same*100/sum2; //求相同百分比
SetDlgItemInt(IDC_EDIT3,result); //输出