我工作的一個C程序與套交易,我遇到麻煩值在我的C程序中的數組的數組。我在考慮下面的函數中有一個邏輯錯誤。麻煩的程序集(C)
SIZEA是26,和組A是一個布爾值集合大小的26
下面是函數應該如何變成如果SIZEA爲5:
Enter the first element in Set A: //user enters h
Enter the next element of Set A: //user enters i
Enter the next element of Set A: //user enters j
Enter the next element of Set A: //user enters k
Enter the next element of Set A: //user enters l
fffffftttttffffffffffffff
然而事實證明像這一點,如果SIZEA是5:
Enter the first element in Set A: //user enters h
Enter the next element of Set A: //user enters i
Enter the next element of Set A: //user enters j
Enter the next element of Set A: //user enters k
Enter the next element of Set A: //user enters l
ffffff
我想知道H.解決這個問題。
下面是代碼:
void getSetA(bool setA[], int sizeA)
{
letters element, letter;
int position = 0, num, i;
for(i = 0; i < sizeA; i++) //sizeA is inputted before
{
setA[i] = FALSE;
}
printf("\nEnter the first element in Set A: ");
element = getcharNoBreaks();
if (element >= 'a' && element <= 'z')
{
setA[element-'a'] = TRUE;
}
for(num = 1; num < sizeA; num++)
{
printf("\nEnter next element of Set A: ");
element = getcharNoBreaks();
if(element >= 'a' && element <= 'z')
{
setA[element - 'a'] = TRUE;
}
else printf("Element out of range");
}
printf("\n");
for(i = 0; i < sizeA; i++)
{
if(setA[i] == TRUE) printf("t");
else printf("f");
}
}
注意letters
,是我定義的類型(如字母表中的所有字母),並且getcharNoBreaks()
是一個函數,它等效於的getchar() 。
謝謝:)
那麼現在**函數應該做些什麼? 「這應該打印ffffffftttttfffffff但它打印FFFFFF」是不是對我們非常有幫助... – 2013-08-05 13:24:44
'看跌期權(「fffffftttttffffffffffffff」)' –
但是,從我所知道的,這段代碼實際上將導致不確定的行爲,如'setA'(我認爲)是一個只有5個元素的數組,但是用'''' - 'a''索引是索引11,它顯然是*超出範圍。 –