728x90
728x170
1번
#include <stdio.h>
int main () {
int arr1[2][4] = {1,2,3,4,5,6,7,8};
int arr2[4][2];
int i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 4; j++)
arr2[j][1-i] = arr1[i][j];
for (i = 0; i < 4; i++) {
for (j = 0; j < 2; j++) {
printf("%d ", arr2[i][j]);
}
printf("\n");
}
return 0;
}
2번
#include <stdio.h>
void main() {
int i,j;
int apart[3][3]={0};
int tot=0;
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%d층 %d호의 가족은 몇 명입니까? : ",i+1,j+1);
scanf("%d",&apart[i][j]);
}
}
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
tot += apart[i][j];
}
}
printf("열혈아파트 총 주민수는 %d명입니다.\n",tot);
}
/*
다차원 배열의 이해를 묻는 문제입니다.
각 층마다 3호씩 있는 있는 3층 아파트에 사는 사람들을 다차원 배열 apart로 만들고
이중 for문을 이용하여 각 층, 각 호의 가족이 몇명인지 물어 배열에 저장해둡니다.
그리고 다시 한 번 이중 for문을 이용하여 계산을 한 뒤 출력하는 것이 정답입니다.
사실 tot을 scanf로 입력받자마자 계산하여 저장해두어도 되지만,
여기서는 다차원 배열에 값을 저장하고 그것을 이용하는 것이 목적이므로
위와 같은 정답이 여러분의 이해를 도울 수 있을 것입니다.
*/
3번
#include <stdio.h>
void main()
{
int array1[9][9]={0};
int i,j;
for(i=0; i<8; i++)
{
for(j=0; j<9; j++)
{
array1[i][j] = (i+2)*(j+1);
}
}
for(i=0; i<8; i++)
{
for(j=0; j<9; j++)
{
printf("%3d",array1[i][j]);
}
printf("\n");
}
}
/*
다차원 배열을 이해하는 지 묻는 문제입니다.
문제에서는 9행 9열로 다차원 배열을 선언하라고 하였지만
사실 구구단은 2단부터 시작하므로 8행 9열로 선언하는 것이 맞습니다.
어쨌든 이중 for문을 이용하여 결과값을 계산하여 저장하고
이를 다시 한번 이중 for문으로 출력하는 문제입니다.
*/
4번
#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; i<4; i++)
{
for(j=0; j<3; j++)
{
printf("%d행 %d렬에 들어갈 숫자를 입력해주십시오.",i+1,j+1);
scanf("%d",&array1[i][j]);
}
}
printf("\n");
printf("2번째 행렬입니다.\n");
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
printf("%d행 %d렬에 들어갈 숫자를 입력해주십시오.",i+1,j+1);
scanf("%d",&array2[i][j]);
}
}
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
result[i][j]=array1[i][j]+array2[i][j];
}
}
printf("결과입니다. \n");
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
printf("%3d",result[i][j]);
}
printf("\n");
}
break;
case 2:
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
printf("%d행 %d렬에 들어갈 숫자를 입력해주십시오.",i+1,j+1);
scanf("%d",&array1[i][j]);
}
}
printf("\n");
printf("2번째 행렬입니다.\n");
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
printf("%d행 %d렬에 들어갈 숫자를 입력해주십시오.",i+1,j+1);
scanf("%d",&array2[i][j]);
}
}
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
result[i][j]=array1[i][j]-array2[i][j];
}
}
printf("결과입니다. \n");
for(i=0; i<4; i++)
{
for(j=0; j<3; j++)
{
printf("%5d",result[i][j]);
}
printf("\n");
}
break;
default:
printf("잘못 입력하셨습니다.\n");
break;
}
}
/*
이번 문제는 다양한 방법으로 풀 수 있겠지만,
위의 해답에서는 배열 값들을 미리 정의받지 않고
사용자에게 입력을 받는 방식으로 구현하였습니다.
이전 문제와 같이 배열에 데이터를 기록해두었다가
합인지 차인지에 따라 값을 계산하여
결과로 출력하도록 되어있습니다.
*/
5번
#include <stdio.h>
int main () {
int array[2][3] = {1, 2, 3, 4, 5, 6};
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("배열 array의 %d행%d열의 주소는 %x, 값은 %d입니다. \n", i, j, *(array+i)+j, *(*(array+i)+j) );
}
}
return 0;
}
728x90
그리드형
'IT > 프로그래밍' 카테고리의 다른 글
C언어 본색 파트2 Chapter 4 연습문제 솔루션 (0) | 2021.05.31 |
---|---|
C언어 본색 파트2 Chapter 3 연습문제 솔루션 (0) | 2021.05.31 |
C언어 본색 파트2 Chapter 1 연습문제 솔루션 (0) | 2021.05.31 |
C언어 본색 파트1 Chapter 9 연습문제 솔루션 (0) | 2021.05.31 |
C언어 본색 파트1 Chapter 8 연습문제 솔루션 (0) | 2021.05.31 |
댓글