Разобрать код программы - C (СИ)
Формулировка задачи:
#include <stdio.h>
int main()
{
int i=1, sum=0, s=1, N, n;
printf("Enter N\n");
scanf("%d",&N);
n = N;
while(n /= 10)
s++;
if(s % 2 == 0)
i = 0;
while(N)
{
if(i%2 != 0)
sum += N % 10;
N /= 10;
i++;
}
printf("%d\n", sum);
}Решение задачи: «Разобрать код программы»
textual
Листинг программы
#include <stdio.h>//подключаем модуль stdio.h для работы функций printf и scanf
int main()//главная функция, точка входа в программу
{
int i=1, sum=0, s=1, N, n;//объявление целочисленных переменных, их инициализация
printf("Enter N\n");//вывод на экран запроса на ввод числа N
scanf("%d",&N);//чтение введенного значения в переменную N
n = N;//присваивание введенного значения в промежуточную переменную
while(n /= 10)//подсчет количества цифр в числе. Цикл выполняется, пока выражение в скобках больше нуля,
//выражение в скобках равносильно n=n/10, / - операция целочисленного деления
s++;//здесь будет количество цифр
if(s % 2 == 0)//проверка на четность количества цифр, % - операция взятия остатка от деления,
//если число четное, то остаток от деления на два равен нулю.
i = 0;//так называемый "флаг" четности количества цифр, равен 0 в этом случае, иначе равен 1
while(N)//пока N больше нуля
{
if(i%2 != 0)//если количество цифр нечетное
sum += N % 10;//то к сумме добавляется младший разряд текущего числа
N /= 10;//"сдвиг" числа на один разряд вправо - отбрасываем младший разряд
i++;//после сдвига количество цифр меняется на противоположное (четное на нечетное и наоборот)
}
printf("%d\n", sum);//в результате выводится сумма цифр числа, стоящих на нечетных местах,
//например, для 12345 выведется 9, для 1234 выведется 4
}
Объяснение кода листинга программы
- Подключение модуля stdio.h для работы функций printf и scanf
- Объявление целочисленных переменных: i=1, sum=0, s=1, N, n (их инициализация)
- Вывод на экран запроса на ввод числа N
- Чтение введенного значения в переменную N с помощью функции scanf
- Присваивание введенного значения в промежуточную переменную n
- Подсчет количества цифр в числе N с помощью цикла while и оператора /= (делить на 10)
- Проверка на четность количества цифр с помощью оператора % (остаток от деления)
- Установка
флагачетности количества цифр в переменной i - Пока N больше нуля, выполнение цикла while
- Если количество цифр нечетное, добавление младшего разряда N к сумме sum
- Деление N на 10 для
сдвигачисла на один разряд вправо - Увеличение количества цифр на единицу (для смены четности на противоположную)
- По завершении цикла, выводится значение переменной sum, которая содержит сумму цифр числа, стоящих на нечетных местах.
- Например, для 12345 выведется 9, для 1234 выведется 4.