Ошибка сегментирования в программе - C (СИ)

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

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

Подскажите пожалуйста почему выходит ошибка.(Только начал программировать на Си)
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <iso646.h>
  5. int main()
  6. {
  7. int i, j, l, N, M;
  8. int A[M][N];
  9. M = 2;
  10. printf("Введите натуральное число> ");
  11. scanf(" %d", N);
  12. printf("\n");
  13. for (j = 0; j <= N; j++)
  14. A[1][j] = j;
  15. for (j = 0; j < 2; j++)
  16. A[2][j] = 0;
  17. for (j = 2; j <= N; j++) {
  18. if ((j % 2 == 0) || (j % 3 == 0) || (j % 5 == 0) || (j % 7 == 0)) {
  19. A[2][j] = 0;
  20. } else {
  21. A[2][j] = 1;
  22. }
  23. }
  24. A[2][2] = A[2][3] = A[2][5] = A[2][7] = 1;
  25. for (i = 1; i <= M; i++) {
  26. for (j = 0; j <= N; j++) {
  27. printf("%4d\t", A[i][j]);
  28. }
  29. printf("\n");
  30. }
  31. return (0);
  32. }

Решение задачи: «Ошибка сегментирования в программе»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <iso646.h>
  5.  
  6. int main(int argc, char **argv)
  7. {
  8.   int i, j, N, M;
  9.   M = 2;
  10.  
  11.   printf("Введите натуральное число> ");
  12.   scanf(" %d", &N);
  13.   int A[M][N];
  14.   printf("\n");
  15.   for (j = 0; j <= N; j++)
  16.     A[1][j] = j;
  17.   for (j = 0; j < 2; j++)
  18.     A[2][j] = 0;
  19.   for (j = 2; j <= N; j++) {
  20.     if ((j % 2 == 0) || (j % 3 == 0) || (j % 5 == 0) || (j % 7 == 0)) {
  21.       A[2][j] = 0;
  22.     } else {
  23.       A[2][j] = 1;
  24.       }
  25.     }
  26.   A[2][2] = A[2][3] = A[2][5] = A[2][7] = 1;
  27.   for (i = 1; i <= M; i++) {
  28.     for (j = 0; j <= N; j++) {
  29.       printf("%4d\t", A[i][j]);
  30.     }
  31.     printf("\n");
  32.   }
  33.   return (0);
  34. }

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

  1. Объявление переменных i, j, N, M.
  2. Инициализация переменной M значением 2.
  3. Вывод сообщения с просьбой ввести натуральное число.
  4. Считывание введенного числа в переменную N с помощью функции scanf.
  5. Объявление массива A размером MxN.
  6. Вывод горизонтальной линии из символов -.
  7. Заполнение первого столбца массива A значениями от 0 до N-1.
  8. Заполнение второго столбца массива A значениями 0 и 1 в соответствии с условием (j % 2 == 0) || (j % 3 == 0) || (j % 5 == 0) || (j % 7 == 0).
  9. Установка определенных значений в массиве A для столбцов 2, 3, 5 и 7.
  10. Вывод значений массива A в виде таблицы 10 строк по M столбцов.
  11. Возврат значения 0, что означает успешное завершение программы.

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


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

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

8   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут