Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре - C (СИ)
Формулировка задачи:
Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре.
Как написать эту же программу, но без использования функции?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
const int N = 10;
int randInt(int min, int max) {
return min + rand() % max;
}
void swap (int *a, int *b) {
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
int main() {
int arr[N];
int i, j, k;
srand(time(NULL));
for (i = 0; i < N; i++) {
arr[i] = randInt(1, 100);
}
printf("Исходный массив: [");
for (i = 0; i < N; i++) {
printf(" %d ", arr[i]);
}
printf("]\n");
for(i = 0; i < N - 1; i++) {
for(j = 0; j < N - i - 1; j++) {
if(arr[j]%10 > arr[j+1]%10) {
swap(&arr[j], &arr[j+1]);
}
}
}
printf("Преобразованный массив: [");
for (i = 0; i < N; i++) {
printf(" %d ", arr[i]);
}
printf("]\n");
return 0;
}Решение задачи: «Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main(void)
{
srand(time(NULL));
int arr[N];
int i;
for (i = 0; i < N; ++i) {
printf("%d%c", arr[i] = rand() % 101, i == N - 1 ? '\n' : '\t');
}
for (i = 1; i < N; ) {
if (i == 0 || (arr[i - 1] % 10) <= (arr[i] % 10)) {
++i;
} else {
int z = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = z;
--i;
}
}
for (i = 0; i < N; ++i) {
printf("%d%c", arr[i], i == N - 1 ? '\n' : '\t');
}
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
include
include
include
- Определяем константу N, которая задает размер массива
define N 10
- Инициализируем генератор случайных чисел srand(time(NULL));
- Создаем массив типа int и инициализируем его нулями int arr[N];
- Заполняем массив случайными числами в интервале [0..100]
for (i = 0; i < N; ++i) {
printf(
%d\t, arr[i] = rand() % 101); } - Сортируем массив по последней цифре for (i = 1; i < N; ) { if (i == 0 || (arr[i - 1] % 10) <= (arr[i] % 10)) { ++i; } else { int z = arr[i]; arr[i] = arr[i - 1]; arr[i - 1] = z; --i; } }
- Выводим отсортированный массив на экран
for (i = 0; i < N; ++i) {
printf(
%d\t, arr[i]); }