1) На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на трех языках программирования.
N = int(input()) minDigit = N % 10 while N > 0: digit = N % 10 if digit % 2 == 0: if digit < minDigit: minDigit = digit N = N // 10 if minDigit == 0: print("NO") else: print(minDigit)
var N: longint; digit, minDigit:integer; begin readln(N); minDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 2 = 0 then if digit < minDigit then minDigit := digit; N := N div 10; end; if minDigit = 0 then writeln('NO') else writeln(minDigit) end.
#include <iostream> using namespace std; int main() { long N; int digit, minDigit; cin >> N; minDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 2 == 0) if (digit < minDigit) minDigit = digit; N = N / 10; } if (minDigit == 0) cout << "NO" << endl; else cout << minDigit << endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 231. 2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ. 3. Найдите допущенные программистом ошибки и исправьте их.
2) На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество делящихся нацело на 4 чисел в исходной последовательности и максимальное делящееся нацело на 4 число. Если делящихся нацело на 4 чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно.
n = 4 count = 0 maximum = 1000 for i in range (1, n+1): x = int(input()) if x % 4 == 0: count += 1 if x < maximum: maximum = x if count > 0: print (count) print (maximum) else: print ("NO")
const n = 4; var i, x: integer; maximum, count: integer; begin count := 0; maximum := 1000; for i := 1 to n do begin read(x); if x mod 4 = 0 then begin count := count + 1; if x < maximum then maximum := x; end; end; if count > 0 then begin writeln(count); writeln(maximum); end else writeln('NO'); end.
#include <iostream> using namespace std; int main() { const int n = 4; int x, maximum, count; count = 0; maximum = 1000; for (int i = 1; i <= n; i++) { cin >> x; if (x % 4 == 0) { count++; if (x < maximum) maximum = x; } } if (count > 0) { cout << count << endl; cout << maximum << endl; } else cout << "NO" << endl; return 0; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе последовательности: 2 8 4 3. 2. Приведите пример такой последовательности, содержащей хотя бы одно делящееся нацело на 4 число, что при её вводе приведённая программа, несмотря на ошибки, выведет правильный ответ. 3. Найдите допущенные программистом ошибки и исправьте их.
3) На вход программы поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, меньшую 5. Если в числе нет цифр, меньших 5, требуется на экран вывести «NO». В приведённой программе есть ошибки.
N = int(input()) m = N % 10 while N > 0: d = N % 10 if d < 5: if d > m: m = d N = N // 10 if m == 0: print('NO') else: print(m)
var N: longint; d, m:integer; begin readln(N); m := N mod 10; while N > 0 do begin d := N mod 10; if d < 5 then if d > m then m := d; N := N div 10; end; if m = 0 then writeln('NO') else writeln( m ) end.
#include <iostream> using namespace std; int main() { long N; int d, m; cin >> N; m = N % 10; while (N > 0) { d = N % 10; if (d<5) { if (d>m) m=d; } N = N / 10; } if (m==0) cout << "NO" << endl; else cout << m << endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 157. 2. Укажите наибольшее трёхзначное значение входной переменной n, при вводе которого программа выведет правильный ответ. 3. Найдите в программе все ошибки
4) На вход программы поступает натуральное число. Требуется определить сумму цифр в десятичной записи этого числа, которые кратны 3 (считается, что 0 кратно любому числу). Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
N = int(input()) sum = N % 10 while N > 0: digit = N % 10 if digit % 3 == 0: sum = digit N = N // 10 if sum > 0: print(sum) else: print('NO')
var N: longint; digit, sum:integer; begin readln(N); sum := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 3 = 0 then sum := digit; N := N div 10; end; if sum > 0 then writeln(sum) else writeln('NO') end.
#include <iostream> using namespace std; int main() { long N; int digit, sum; cin >> N; sum = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 == 0){ sum = digit; } N = N / 10; } if (sum > 0) cout << sum << endl; else cout << "NO" << endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 653. 2. Укажите одно трёхзначное число, при вводе которого программа выведет правильный ответ. 3. Найдите в программе все ошибки
5) На вход программы поступает натуральное число. Требуется определить сумму цифр в десятичной записи этого числа, которые не кратны 3 (считается, что 0 кратно любому числу). Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
N = int(input()) sum = N % 10 while N > 0: digit = N % 10 if digit % 3 > 0: sum = digit N = N // 10 if sum > 0: print(sum) else: print('NO')
var N: longint; digit, sum:integer; begin readln(N); sum := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 3 > 0 then sum := digit; N := N div 10; end; if sum > 0 then writeln(sum) else writeln('NO') end.
#include <iostream> using namespace std; int main() { long N; int digit, sum; cin >> N; sum = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 > 0){ sum = digit; } N = N / 10; } if (sum > 0) cout << sum << endl; else cout << "NO" << endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 654. 2. Укажите одно трёхзначное число, при вводе которого программа выведет правильный ответ. 3. Найдите в программе все ошибки
6) На обработку поступает положительное целое число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно.
N = int(input()) sum = 0 while N > 0: digit = N % 10 if digit < 7: sum = sum + 1 N = N // 10 print(digit)
var N: longint; digit, sum:integer; begin readln(N); sum := 0; while N > 0 do begin digit := N mod 10; if digit < 7 then sum := sum + 1; N := N div 10; end; writeln(digit) end.
#include <iostream> using namespace std; int main() { long N; int digit, sum; cin >> N; sum = 0; while (N > 0) { digit = N % 10; if (digit < 7) { sum = sum + 1; } N = N / 10; } cout << digit << endl; }
Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 456. 2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ. 3. Найдите все ошибки в этой программе
7) На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран максимальную цифру числа, кратную 3. Если в числе нет цифр, кратных 3, требуется на экран вывести «NO». Программист написал программу неправильно. Напоминание: 0 делится на любое натуральное число.
N = int(input()) maxDigit = N % 10 while N > 0: digit = N % 10 if digit % 3 == 0: if digit > maxDigit: maxDigit = digit N = N // 10 if maxDigit == 0: print('NO') else: print(maxDigit)
var N:longint; digit, maxDigit: integer; begin readln(N); maxDigit := N mod 10; while N > 0 do begin digit := N mod 10; if digit mod 3 = 0 then if digit > maxDigit then maxDigit := digit; N := N div 10; end; if maxDigit = 0 then writeln('NO') else writeln(maxDigit) end.
#include <iostream> using namespace std; int main() { long N; int digit, maxDigit; cin >> N; maxDigit = N % 10; while (N > 0) { digit = N % 10; if (digit % 3 == 0){ if (digit > maxDigit) { maxDigit = digit; } } N = N / 10; } if ( maxDigit == 0) cout << "NO" << endl; else cout << maxDigit << endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 134. 2. Приведите пример такого трёхзначного числа, что, несмотря на ошибки, программа печатает правильный ответ. 3. Найдите в программе все ошибки
8) На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран сумму всех отрицательных чисел последовательности и максимальное число в последовательности. Известно, что вводимые числа по абсолютной величине не превышают 1000. Программист написал программу неправильно.
mx = 0 s = 0 for i in range(1,5): x = int(input()) if x < 0: s = x if x > mx: mx = x print(s) print(mx)
var s, i, x, mx: integer; begin mx := 0; s := 0; for i := 1 to 4 do begin read (x); if x < 0 then s := x; if x > mx then mx := x; end; writeln(s); writeln(mx) end.
#include <iostream> using namespace std; int main() { int s, i, x, mx; mx = 0; s = 0; for (int i = 1; i <= 4; i++) { cin >> x; if (x < 0) s = x; if (x > mx) mx= x; } cout << s<< endl; cout << mx<< endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе чисел -5 2 -4 3. 2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ. 3. Найдите в программе все ошибки
9) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество единиц в двоичной записи этого числа. Программист торопился и написал программу неправильно.
x = int(input()) count = 0 while x > 0: count = count + 1 x = x % 2 print(count)
var x, count: integer; begin readln(x); count := 0; while x > 0 do begin count:=count + 1; x := x mod 2 end; writeln(count) end.
#include <iostream> using namespace std; int main() { int x, count; cin >> x; count = 0; while (x > 0) { count = count + 1; x = x % 2; } cout << count << endl; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 6. 2. Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ. 3. Найдите все ошибки в этой программе
10) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа. Программист торопился и написал программу неправильно:
N = int(input()) sum = 1 while N > 0: d = N % 10 N = N // 10 sum = sum + 1 print(sum)
var N: longint; sum, d: integer; begin readln(N); sum := 1; while N > 0 do begin d := N mod 10; N := N div 10; sum := sum + 1; end; writeln(sum); end.
#include <iostream> using namespace std; int main() { long N; int sum, d; cin >> N; sum = 1; while (N > 0) { d = N % 10; N = N / 10; sum = sum + 1; } cout << sum << endl; }
Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 256. 2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт правильный результат. 3. Найдите все ошибки в этой программе
11) Требовалось написать программу, которая получает на вход натуральное число N, не превосходящее 109, и выводит число, которое получается из N после удаления всех единиц, порядок остальных цифр при этом не меняется. Например, число 19520125 должно быть преобразовано в число 952025. Число, в котором все цифры – единицы и нули, должно быть преобразовано в 0. Незначащие нули в старших разрядах полученного числа печатать не нужно. Программист торопился и написал программу неправильно.
N = int(input()) R = 0 T = 1 while N > 0: d = N % 10 if d != 1: R = R + d*T T = T + 1 N = N // 10 print(T)
var N, R, T: longint; d: integer; begin readln(N); R:=0; T:=1; while N>0 do begin d := N mod 10; if d<>1 then begin R := R + d*T; T := T+1 end; N := N div 10; end; writeln(T); end.
#include <iostream> using namespace std; int main() { long N, R, T; int d; cin >> N; R=0; T=1; while (N>0) { d = N % 10; if (d != 1) { R = R + d*T; T = T+1; } N = N / 10; } cout << T; }
Последовательно выполните следующее: 1. Напишите, что выведет эта программа при вводе числа 314. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки выпишите номер строки и укажите, как надо исправить ошибку - приведите правильный вариант строки.
12) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно:
N = int(input()) count = 1 while N > 1: count = count + 1 N = N // 10 print(count)
var N: longint; count: integer; begin readln(N); count := 1; while N > 1 do begin count := count + 1; N := N div 10; end; writeln(count); end.
#include <iostream> using namespace std; int main() { long N; int count; cin >> N; count = 1; while (N > 1) { count = count + 1; N = N / 10; } cout << count << endl; }
Последовательно выполните следующее: 1. Определите, что выведет программа при вводе числа 123. 2. Укажите одно число, для которого программа выводит неверный результат. 3. Найдите все ошибки в этой программе (их может быть одна или несколько).
13) Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится минимальную цифру этого числа. Программист торопился и написал программу неправильно:
N = int(input()) min_digit = 0 while N > 0: digit = N % 10 if digit > min_digit: min_digit = digit N = N // 10 print(min_digit)
var N: longint; digit, min_digit: integer; begin readln(N); min_digit := 0; while N > 0 do begin digit := N mod 10; if digit > min_digit then min_digit := digit; N := N div 10; end; writeln(min_digit); end.
#include <iostream> using namespace std; int main() { long N; int digit, min_digit; cin >> N; min_digit = 0; while (N > 0) { digit = N % 10; if (digit > min_digit) { min_digit = digit; } N = N / 10; } cout << min_digit << endl; }
Последовательно выполните следующее: 1. Определите, что выведет программа при вводе числа 532. 2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки выпишите номер строки и укажите, как надо исправить ошибку - приведите правильный вариант строки.
14) На вход программы поступает натуральное число N, не превышающее 109. Требуется найти и вывести наибольшую чётную цифру в десятичной записи этого числа или вывести «NO», если таких цифр нет. К сожалению, приведённая ниже программа неправильная.
N = int(input()) t = 0 m = t while N > 1: d = N % 10 if d % 2 == 0 or d > m: m = m + d N = N // 10 if m == t: print("NO") else: print(m)
var N, d, m, t: longint; begin read(N); t := 0; m := t; while N > 1 do begin d := N mod 10; if (d mod 2=0) or (d>m) then m := m + d; N := N div 10; end; if m = t then writeln('NO') else writeln(m) end.
#include <iostream> using namespace std; int main() { int N, d, m, t; cin >> N; t = 0; m = t; while (N > 1) { d = N % 10; if (d % 2 == 0 || d > m) m := m + d; N := N / 10; } if (m == t) cout << "NO"; else cout << m; }
Последовательно выполните следующее. 1. Напишите, что выведет эта программа при вводе числа 132. 2. Какое наибольшее число может быть выведено при вводе трёхзначного числа? Сколько существует таких чисел N, при вводе которого программа выведет такой ответ? 3. Найдите допущенные программистом ошибки и исправьте их.
Задания взяты из базы данных ФИПИ, сайта К.Полякова или придуманы мною