是要判斷兩個字符串是否由相同字母組成,大小寫不論,字符串中的—也不考慮,例如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執行停在該斷點處。)是程序員必須掌握的技能之一。