При запуске экзешника ошибка "Прекращена работа программы xxx.exe" - C (СИ)
Формулировка задачи:
Должен менять максимальный и минимальный элементы массива местами и выводить новый массив. Может, я где-то ошибку допустила?
#include <stdio.h> #include <malloc.h> #include <conio.h> int N, min, max, T, temp, i, *a; main () { scanf ("%d", &T); while (T--) { scanf ("%d", &N); a=(int*) malloc (sizeof(int) * N); for (i=0; i<N; i++) scanf ("%d ", a[i]); min=0; max=0; for (i=1; i<N; i++) { if (a[i]>a[max]) max=i; if (a[i]<a[min]) min=i; } temp=a[min]; a[min]=a[max]; a[max]=temp; for (i=0; i<N; i++) printf(" %d", a[i]); } free (a); getch (); return 0; }
Решение задачи: «При запуске экзешника ошибка "Прекращена работа программы xxx.exe"»
textual
Листинг программы
#include <stdio.h> #include <malloc.h> int N, min, max, T, temp, i, *a; main () { scanf ("%d", &T); while (T--) { scanf ("%d", &N); a=(int*)malloc(sizeof(int)*N); for (i=0; i<N; i++) scanf ("%d", &a[i]); min=0; max=0; for (i=0; i<N; i++) { if (a[i]>a[max]) max=i; if (a[i]<a[min]) min=i; } temp=a[min]; a[min]=a[max]; a[max]=temp; for (i=0; i<N-1; i++) printf("%d ", a[i]); printf("%d", a[N-1]); } free (a); return 0; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и malloc.h
- Объявляются переменные: N (количество чисел), min (номер минимального числа), max (номер максимального числа), T (количество тестовых случаев), temp (для временного хранения значения), i (для перебора чисел), a (массив чисел).
- В функции main() происходит получение количества тестовых случаев и числа для сортировки.
- Выделяется память под массив чисел с помощью malloc().
- Считываются числа для сортировки в цикле.
- Инициализируются переменные min и max как 0.
- В цикле находятся минимальное и максимальное число в массиве.
- Значение min заменяется на значение max, а значение max заменяется на значение min.
- Во временную переменную temp сохраняется значение a[min].
- Значение a[min] заменяется на значение a[max].
- Значение a[max] заменяется на значение temp.
- В цикле выводятся на экран числа отсортированного массива с помощью printf().
- Выводится последнее число массива.
- Выделяется память под массив чисел освобождается с помощью free().
- Функция main() возвращает 0.
- Ошибка
Прекращена работа программы xxx.exe
возникает при завершении работы программы и указывает на проблему в коде, которая может быть связана с неправильным выделением или использованием памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д