При запуске экзешника ошибка "Прекращена работа программы 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;
}

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

  1. Включаются заголовочные файлы stdio.h и malloc.h
  2. Объявляются переменные: N (количество чисел), min (номер минимального числа), max (номер максимального числа), T (количество тестовых случаев), temp (для временного хранения значения), i (для перебора чисел), a (массив чисел).
  3. В функции main() происходит получение количества тестовых случаев и числа для сортировки.
  4. Выделяется память под массив чисел с помощью malloc().
  5. Считываются числа для сортировки в цикле.
  6. Инициализируются переменные min и max как 0.
  7. В цикле находятся минимальное и максимальное число в массиве.
  8. Значение min заменяется на значение max, а значение max заменяется на значение min.
  9. Во временную переменную temp сохраняется значение a[min].
  10. Значение a[min] заменяется на значение a[max].
  11. Значение a[max] заменяется на значение temp.
  12. В цикле выводятся на экран числа отсортированного массива с помощью printf().
  13. Выводится последнее число массива.
  14. Выделяется память под массив чисел освобождается с помощью free().
  15. Функция main() возвращает 0.
  16. Ошибка Прекращена работа программы xxx.exe возникает при завершении работы программы и указывает на проблему в коде, которая может быть связана с неправильным выделением или использованием памяти.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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