Ошибка сегментирования в программе - C (СИ)
Формулировка задачи:
Подскажите пожалуйста почему выходит ошибка.(Только начал программировать на Си)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <iso646.h>
int main()
{
int i, j, l, N, M;
int A[M][N];
M = 2;
printf("Введите натуральное число> ");
scanf(" %d", N);
printf("\n");
for (j = 0; j <= N; j++)
A[1][j] = j;
for (j = 0; j < 2; j++)
A[2][j] = 0;
for (j = 2; j <= N; j++) {
if ((j % 2 == 0) || (j % 3 == 0) || (j % 5 == 0) || (j % 7 == 0)) {
A[2][j] = 0;
} else {
A[2][j] = 1;
}
}
A[2][2] = A[2][3] = A[2][5] = A[2][7] = 1;
for (i = 1; i <= M; i++) {
for (j = 0; j <= N; j++) {
printf("%4d\t", A[i][j]);
}
printf("\n");
}
return (0);
}Решение задачи: «Ошибка сегментирования в программе»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <iso646.h>
int main(int argc, char **argv)
{
int i, j, N, M;
M = 2;
printf("Введите натуральное число> ");
scanf(" %d", &N);
int A[M][N];
printf("\n");
for (j = 0; j <= N; j++)
A[1][j] = j;
for (j = 0; j < 2; j++)
A[2][j] = 0;
for (j = 2; j <= N; j++) {
if ((j % 2 == 0) || (j % 3 == 0) || (j % 5 == 0) || (j % 7 == 0)) {
A[2][j] = 0;
} else {
A[2][j] = 1;
}
}
A[2][2] = A[2][3] = A[2][5] = A[2][7] = 1;
for (i = 1; i <= M; i++) {
for (j = 0; j <= N; j++) {
printf("%4d\t", A[i][j]);
}
printf("\n");
}
return (0);
}
Объяснение кода листинга программы
- Объявление переменных i, j, N, M.
- Инициализация переменной M значением 2.
- Вывод сообщения с просьбой ввести натуральное число.
- Считывание введенного числа в переменную N с помощью функции scanf.
- Объявление массива A размером MxN.
- Вывод горизонтальной линии из символов
-. - Заполнение первого столбца массива A значениями от 0 до N-1.
- Заполнение второго столбца массива A значениями 0 и 1 в соответствии с условием (j % 2 == 0) || (j % 3 == 0) || (j % 5 == 0) || (j % 7 == 0).
- Установка определенных значений в массиве A для столбцов 2, 3, 5 и 7.
- Вывод значений массива A в виде таблицы 10 строк по M столбцов.
- Возврат значения 0, что означает успешное завершение программы.