我對C很新,所以我想要一些建議。有沒有更簡單的方法來編寫這個C代碼?
此代碼正在查看單詞是anagrams還是no。代碼威脅大寫輸入與小寫輸入相同,並且忽略輸入字符不是字母。最後它應該和它顯示的是單詞anagrams或no。
我想知道有沒有一種更簡單的方法來編寫這段代碼,或者這是非常多的嗎?
int alphabet[26] = {0}, sum = 0;
char first[20], second[20];
int i = 0;
printf("Enter the first word: ");
do
{
first[i] = getchar();
if(isalpha(first[i]))
alphabet[toupper(first[i]) - 'A'] += 1 ;
i++;
}while(first[i - 1] != '\n');
printf("Enter the second word: ");
i = 0;
do
{
second[i] = getchar();
if(isalpha(second[i]) && alphabet[toupper(second[i]) - 'A'] > 0)
{
alphabet[toupper(second[i]) - 'A'] -= 1;
}
i++;
}while(second[i - 1] != '\n');
for(i = 0; i <= 26 - 1; i++)
{
sum += alphabet[i];
}
if (sum == 0)
printf("Anagrams\n");
if (sum != 0)
printf("Not anagrams\n");
我沒有一個編輯,在第二輸入我拿出的,如果條件之一,現在它看起來像這樣
do
{
second[i] = getchar();
if(isalpha(second[i]))
{
alphabet[toupper(second[i]) - 'A'] -= 1;
}
i++;
你應該張貼到[codereview.se。但是,這絕對可以簡化。 – Quentin
第一個單詞'abc',第二個單詞'abcabc',會導致不正確的字謎匹配。在處理第二個單詞時,如果任何字母的字母數爲0,那麼這些單詞不是字謎。 – JS1
挑剔:C程序通常不是[* scripts *](http://en.wikipedia.org/wiki/Scripting_language)。 –