C언어 2차원배열
적송
질문 제목 : 2차원배열 4x3을2개만들고 스위치문으로 합/차 구분하고 각 공간에 숫자 저장한다음 결과를 출력시키는거 오류
한마디로 응답없음이라 떠요질문 내용 :
#include stdio.h
void main()
{
int array1[4][3]={0};
int array2[4][3]={0};
int result[4][3]={0};
int i,j,choice=0;
printf(합과 차중 어떤것을 선택하시겠습니까? (1.합, 2. 차)\n);
scanf(%d,&choice);
switch(choice)
{
case 1:
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
printf(%d행 %d렬에 들어갈 숫자를 입력해주십시오.,i+1,j+1);
scanf(%d,&array1[i][j]);
}
}
printf(\n);
printf(2번째 행렬입니다.\n);
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
printf(%d행 %d렬에 들어갈 숫자를 입력해주십시오.,i+1,j+1);
scanf(%d,&array2[i][j]);
}
}
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
result[i][j]=array1[i][j]+array2[i][j];
}
}
printf(결과입니다. \n);
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
printf(%3d,result[i][j]);
}
printf(\n);
}
break;
case 2:
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
printf(%d행 %d렬에 들어갈 숫자를 입력해주십시오.,i+1,j+1);
scanf(%d,&array1[i][j]);
}
}
printf(\n);
printf(2번째 행렬입니다.\n);
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
printf(%d행 %d렬에 들어갈 숫자를 입력해주십시오.,i+1,j+1);
scanf(%d,&array2[i][j]);
}
}
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
result[i][j]=array1[i][j]-array2[i][j];
}
}
printf(결과입니다. \n);
for(i=0; i4; i++)
{
for(j=0; j3; j++)
{
printf(%5d,result[i][j]);
}
printf(\n);
}
break;
default:
printf(잘못 입력하셨습니다.\n);
break;
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이것을
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
#include stdio.h
void it1(void);
void it2(void);
void it3(void);
static int arr1[4][3] = {0};
static int arr2[4][3 ]= {0};
static int total[4][3] = {0};
static int a, b, c;
int main(void)
{
printf(합 : 1 / 차 : 2\n);
scanf(%d, &c);
switch (c)
{
case 1:
it1();
printf(\n 2번째 \n);
it2();
for (a=0; a4; a++)
{
for (b=0; b3; b++)
{
total[a][b]=arr1[a][b]+arr2[a][b];
}
}
it3();
break;
case 2:
it1();
printf(\n 2번째 \n);
it2();
for (a=0; a4; a++)
{
for (b=0; b3; b++)
{
total[a][b]=arr1[a][b]-arr2[a][b];
}
}
it3();
break;
default:
printf(잘못입력함\n);
break;
}
}
void it1 (void)
{
for (a=0; a4; a++)
{
for (b=0; b3; b++)
{
printf(%d행 %d열 : , a, b);
scanf(%d, arr1[a][b]);
}
}
}
void it2 (void)
{
for (a=0; a4; a++)
{
for (b=0; b3; b++)
{
printf(%d행 %d열 : , a, b);
scanf(%d, arr2[a] arr2[a][b]);
}
}
}
void it3 (void)
{
printf(\n 결과 \n);
for (a=0; a4; a++)
{
for (b=0; b3; b++)
{
printf(%d행 %d열 : %d \n, a, b, total[a][b]);
}
}
}ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이렇게 제맘대로 바꿔봤습니다. (그냥 책에있는 문제? 거든요 한번 제맘대로 답을 바꿔봄)
일단 오류는 안납니다. 그리고 디버깅으로 합/차 구분까지는 되는데
0x624f6af2에 처리되지 않은 예외가 있습니다. 0xc0000005: 0x00000000 위치를 기록하는 동안 액세스 위반이 발생했습니다.
이런 오류가 뜨는군요; 대체 문제가 뭘까요?
-
초엘
아 맞다; 감사합니다.
-
두바다찬솔
정답입니다.
-
렁찬
scanf() 하실때 &arr[][]로 쓰셔야 할 것 같은데요.