Вычислить сумму элементов массива, содержащих хотя бы одну нечётную цифру - C (СИ)
Формулировка задачи:
Вычислить сумму элементов массива, содержащих хотя бы одну нечётную цифру.
Что нужно исправить/добавить?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
#define A -50
#define B 50
void Init (int *a, int n)
{
int i;
for (i=0;i<n;i++)
a[i]=A+rand()%(B-A+1);
}
void Print(int *a, int n)
{
int i;
for(i=0;i<n;i++)
printf("%d\n",a[i]);
putchar('\n');
}
int Check(int a)
{
int buf, sum;
buf=a;
while (buf)
{
if((buf%2)!=0)
sum+=a;
else
buf/=10;
}
return sum;
}
int main()
{
int a[N],i,count;
srand(time(NULL));
Init (a,N);
Print(a,N);
// Тут определённо должно что-то быть
return 0;
}Решение задачи: «Вычислить сумму элементов массива, содержащих хотя бы одну нечётную цифру»
textual
Листинг программы
int Check(int a)
{
int buf, sum;
buf=a;
while (buf)
{
if((buf%2)!=0)
return a;
else
buf/=10;
}
return 0;
}
Объяснение кода листинга программы
В данном коде представлена функция с именем Check, которая принимает целочисленный аргумент типа int по имени a. Функция выполняет следующие действия:
- Инициализирует две переменные типа int: buf и sum. Переменная buf инициализируется значением аргумента a, а переменная sum инициализируется нулевым значением.
- Переменная buf сохраняет нечётные цифры аргумента a в то время как переменная sum суммирует все чётные цифры аргумента a.
- В цикле while происходит проверка каждой цифры числа buf. Если цифра нечётная, то функция возвращает значение переменной a. Если цифра чётная, то она удаляется из числа buf путём деления на 10.
- Если после цикла while значение переменной buf равно нулю, то все цифры аргумента a были чётными, и функция возвращает 0.
- Если в процессе выполнения функции было найдено нечётное число, то функция возвращает значение переменной a. Таким образом, функция Check вычисляет сумму всех чётных цифр аргумента a и возвращает её. Если среди цифр аргумента есть хотя бы одна нечётная цифра, функция вернёт значение этой цифры.