Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число x, не превосходящее 1000, и выводится количество значащих цифр в двоичной записи этого числа. Программист торопился и написал программу неправильно.
1 2 3 4 5 6 7 8 9 10 |
var x,cnt: integer; begin readln(x); cnt := 0; while x > 0 do begin cnt:=cnt + x mod 2; x := x div 10 end; writeln(cnt) end. |
1 2 3 4 5 6 7 8 9 10 11 |
#include <stdio.h> int main(void) { int x, cnt; scanf(″%d″, &x); cnt = 0; while (x > 0) { cnt=cnt + x % 2; x = x / 10; } printf(″%d\n″, cnt); } |
Последовательно выполните следующее:
- Напишите, что выведет эта программа при вводе числа 15.
- Приведите пример такого числа x, что, несмотря на ошибки, программа печатает правильный ответ.
- Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.