Не работает определитель четности числа - C (СИ)
Формулировка задачи:
Не судите строго, новичок
Вообщем нужно решить задачу:
Даны натуральные числа n, а1,...аn. Определить количество членов ak последовательности а1,...аn, являющихся квадратами четных чисел.
Всё бы ничего, но я не могу даже определить четность числа.
Вот написал Код (простенький проверочный - это к задаче особо не относится), но он тоже не работает:
Что делаю не так?
#include<stdio.h> #include<math.h> int main() { int i, k, n,; printf("n="); scanf("%f",&n); k=0; for(i=0; i<=n; i++) {if((i%2)==0) k++; } printf("k=%f",k); return 0; }
Решение задачи: «Не работает определитель четности числа»
textual
Листинг программы
int main() { int n, p, k, i; printf("n="); scanf("%d",&n); i=0; for(p=1; p<=n; p++) { if((p%2)==0) for(k=p*p; k<=n;) { i++; break; } } printf("i=%d\n",i); return 0; }
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Объявляются переменные
n
,p
,k
,i
типаint
. - С помощью функции
printf
выводится сообщениеn=
, а затем с помощью функцииscanf
в переменнуюn
считывается целое число, которое вводится с клавиатуры. - Инициализируется переменная
i
со значением 0. - Запускается цикл
for
, который выполняется от 1 доn
. - Внутри цикла проверяется, является ли текущее значение
p
четным числом с помощью оператора%
(остаток от деления на 2). - Если число четное, то выполняется вложенный цикл
for
, который начинается сk=p*p
и продолжается до тех пор, пока значениеk
не превыситn
. - Внутри вложенного цикла увеличивается значение переменной
i
на 1, а затем цикл прерывается с помощью оператораbreak
. - После завершения внешнего цикла выводится значение переменной
i
с помощью функцииprintf
. - Код завершается и возвращает 0. В результате выполнения данного кода будет выведено на экран число 1, так как цикл прерывается после первой итерации. Если ввести нечетное число, то на экран будет выведено число 0, так как цикл не будет выполнен ни разу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д