Рубрики

Алгоритмы | Разное | Вопрос 10

Приведенная ниже процедура необходима для поиска и замены определенных символов во входной символьной строке, представленной в массиве A. Символы, подлежащие замене, предоставляются в массиве oldc, в то время как их соответствующие символы замены предоставляются в массиве newc. Массив A имеет фиксированную длину в пять символов, а массивы oldc и newc содержат по три символа каждый. Тем не менее, процедура имеет недостатки

void find_and_replace(char *A, char *oldc, char *newc) {
    for (int i = 0; i < 5; i++)
       for (int j = 0; j < 3; j++)
           if (A[i] == oldc[j]) A[i] = newc[j];
}

Процедура тестируется с помощью следующих четырех тестовых случаев
(1) oldc = «abc», newc = «dab»
(2) oldc = «cde», newc = «bcd»
(3) oldc = «bca», newc = «cda»
(4) oldc = «abc», newc = «bac»
Теперь тестер проверяет программу на всех входных строках длины пять, состоящих из символов «a», «b», «c», «d» и «e», с разрешенными дубликатами. Если тестер выполняет это тестирование с четырьмя тестовыми примерами, приведенными выше, сколько тестовых примеров сможет выявить недостаток?

(А) только один
(Б) только два
(С) только три
(D) все четыре

Ответ: (Б)
Пояснение: тестовые случаи 3 и 4 являются единственными случаями, которые фиксируют недостаток. Код не работает должным образом, когда старый символ заменяется новым, а новый символ снова заменяется другим новым символом. Это не происходит в тестовых случаях (1) и (2), это происходит только в случаях (3) и (4).
Тест на этот вопрос

Рекомендуемые посты:

Алгоритмы | Разное | Вопрос 10

0.00 (0%) 0 votes