Работа с одномерными массивами при адресации элементов обычным способом - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести в память машины одномерный целочисленный массив, размером не менее 30 элементов. Ввод осуществить с клавиатуры. Посчитать количество всех чисел, сумма цифр которых меньше 10.

Решение задачи: «Работа с одномерными массивами при адресации элементов обычным способом»

textual
Листинг программы
int sum(int n)
{
    int s=0;
    for(; n; n/=10) s+=n%10;
    return s;
}
void main(int argc,char* argv[])
{   
    int i,n,*a,less10;
    
    do
    {
        printf("n>=30:");
        scanf("%d",&n);
    }while(n<30);
    a=(int*)malloc(n*sizeof(int));
    //в ручную
    //for(i=0; i<n; i++)
    //{
    //  printf("a[%d]=",i);
    //  scanf("%d",a+i);
    //}
 
    //автоматом
    srand((unsigned)time(0));
    for(i=0; i<n; i++)
    {
        a[i]=rand()%100;
        printf("%d ",a[i]);
    }
    //
 
    less10=0;
    for(i=0; i<n; i++)
        if(sum(a[i])<10) less10++;
    printf("\n\nless than 10=%d\n",less10);
    free(a);
    system("pause");
}

Объяснение кода листинга программы

  1. Функция sum принимает целое число n и возвращает сумму его цифр.
  2. В функции main объявлены переменные i, n, a и less10.
  3. В цикле do-while пользователю предлагается ввести число n не меньше 30.
  4. После выхода из цикла do-while выделяется память под массив a размером n с помощью функции malloc.
  5. В комментариях представлен ручной способ заполнения массива a значениями, который был заменен на автоматический генератор случайных чисел с помощью функции rand().
  6. С помощью функции srand инициируется генератор случайных чисел.
  7. В цикле for заполняется массив a случайными числами от 0 до 99.
  8. Каждое сгенерированное число выводится на экран с помощью функции printf.
  9. Переменная less10 инициализируется нулем и используется для подсчета количества чисел в массиве a, сумма цифр которых меньше 10.
  10. В цикле for происходит проверка каждого элемента массива a и увеличение переменной less10, если сумма цифр числа меньше 10.
  11. Выводится количество чисел в массиве a, сумма цифр которых меньше 10, с помощью функции printf.
  12. Выделяемая память освобождается с помощью функции free.
  13. Запускается программа pause, которая приостанавливает выполнение программы до нажатия клавиши.

Оцени полезность:

15   голосов , оценка 4.333 из 5
Похожие ответы