是要判断两个字符串是否由相同字母组成,大小写不论,字符串中的—也不考虑,例如garden ranged
earth heart
veil evil
Roll_in_the_hay Thrill_a_honey都是正确的
代码如下
#include
#include
char* var(char a[])
{
int i, j = 0;
char b = new char[100];
for(i = 0; i < 100; i++)
{
if(a[i] != '_')
{
b[j] = a[i];
j++;
}
else if(a[i] == '\0')
break;
}
b[j] = '\0';
return b;
}
int judge1(char var1[], char var2[]) //判断是否完全相同
{
unsigned int j;
for(j = 0; j < 26; j++)
{
if(var1[j] != var2[j]) break;
}
if(j == 25) return 0;
else return 1;
}
char judge2(char var[]) //计算词频
{
char *b = new char[26];
unsigned int i, j, l, k = 65;
for(i = 0; i < 26; i++)
{
l = 0;
for(j = 0; j < strlen(var); i++)
{
if((unsigned int)var[j] == k || (unsigned int)var[j] == k + 32) l++;
}
b[i] = l;
k++;
}
return b;
}
int main()
{
char p1[100];
char p2[100];
scanf("%s%s", p1, p2);
while(getchar() != '\n');
if(judge1(judge2(var(p1)), judge2(var(p2))) == 1) printf("Yes\n");
else printf("No\n");
return 0;
}
现在运行时输入后就卡住不动了,求教大神就是输入比如DOCTOR_WHO TORCHWOOD然后,就没有然后了
小白,没有金币,555555
var函数里for循环会进行100次,此时i已经是100了
再执行b[j] = '\0';已经造成越界了
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
有这么麻烦么?写一个toupper或者tolower函数然后直接==看是否相等
写的麻烦了. 你可以全部转化为小写的.之后再把ASC数值加在一起 ,