Подготовка к ЕГЭ и олимпиадам по информатике 2020 / Тренировочные варианты ЕГЭ

Профильная информатика:
подготовка к ЕГЭ и олимпиадам

Вариант № EGE_INF_1702

Добавлен 25 мая 2017 г. в 0:12. Изменён 9 июня 2018 г. в 20:09.Скачать PDF
1 2 3 4 5 6 7 8 9 10Р 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Задание

Требовалось написать программу, которая по входному натуральному числу \(n\), не превосходящему \(10^{4}\), определяла и печатала количество различных делителей этого числа (включая единицу и само число \(n\)). Приведённая ниже программа содержит ошибки.

  • Копировать
    var
      n, j, k : integer;
    begin
      read(n);
      j := 2;
      k := 0;
      while j * j > n do begin
        if n mod j = 0 then
          k := k + 2;
        j := j + 1
      end;
      if j * j = n then
        k := k + 3;
      write(k)
    end.
    
  • Копировать
    #include <stdio.h>
    
    void main() {
      int n, j, k;
      scanf("%d", &n);
      j = 2;
      k = 0;
      while (j * j > n) {
        if (n % j == 0)
          k += 2;
        j++;
      }
      if (j * j == n)
        k += 3;
      printf("%d", k);
    }
    
  • Копировать
    DIM N, J, K AS INTEGER
    INPUT N
    J = 2
    K = 0
    WHILE J * J > N
      IF N MOD J = 0 THEN
        K = K + 2
      END IF
      J = J + 1
    WEND
    IF J * J = N THEN
      K = K + 3
    END IF
    PRINT K
    
  • Копировать
    n = int(input())
    j = 2
    k = 0
    while j * j > n :
      if n % j == 0 :
        k += 2
      j += 1
    if j * j == n :
      k += 3
    print(k)
    

Последовательно выполните следующее.

1) Напишите, что выведет эта программа при вводе числа 10.

2) Укажите два наименьших значения входной переменной \(n\), при которых программа выведет верный ответ.

3) Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание: необходимо исправить приведённую программу, а не написать свою. Требуется заменить только ошибочные строки, но нельзя удалять строки или добавлять новые. За исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

Решение

Подробнее...

Ответ

1) При входном значении \(n=10\) программа выведет число 2.

2) Программа выведет правильный ответ, равный 3, при входных значениях \(n=4\) и \(n=9\).

3) Программа содержит две ошибки: неверную инициализацию переменной \(j\) и неверное увеличение счётчика \(k\).

Пример исправления на языке Паскаль

Первая ошибка
Строка, содержащая ошибкуИсправленная строка
j := 2;
j := 1;
Вторая ошибка
Строка, содержащая ошибкуИсправленная строка
k:= k + 3;
k:= k + 1;

В программах на других языках ошибочные строки и их исправления аналогичны.

Подробнее...