물론 단번에 코드를 본다면 좋기야 하겠지만 장기적으로 봤을때
혼자풀어보기 -> 힌트 -> 코드보기 순으로 공부하시는게 실력 향상에 큰 도움이 됩니다!
힌트를 보고 천천히 생각을 거쳐서 문제를 풀어보시고
답안을 확인해보세요
코드힌트
더보기
void array_copy(int src[][WIDTH], int dst[][WIDTH])
포인터를 이용하여 array를 복사하는 array_copy 함수를 작성
void array_print(int a[][WIDTH])
array를 모두 출력하는 print함수를 작성
프로그램의 기본 틀입니다.
#include <stdio.h>
#define HEIGHT 10
#define WIDTH 10
void array_copy(int src[][WIDTH], int dst[][WIDTH]);
void array_print(int a[][WIDTH]);
int score[HEIGHT][WIDTH]= { {
100, 30, 67
}
, {
89, 50, 12
}
, {
19, 60, 90
}
}
;
int tmp[HEIGHT][WIDTH];
int main(void) {
array_copy(score, tmp); //score를 tmp에 복사해서
array_print(tmp); //tmp를 프린트하라
return 0;
}
void array_print(int a[][WIDTH]) { //프린트하는 함수
}
void array_copy(int src[][WIDTH], int dst[][WIDTH]) { // 복사하는 함수
}
}
답안코드
더보기
#include <stdio.h>
#define HEIGHT 10
#define WIDTH 10
void array_copy(int src[][WIDTH], int dst[][WIDTH]);
void array_print(int a[][WIDTH]);
int score[HEIGHT][WIDTH]= { {
100, 30, 67
}
, {
89, 50, 12
}
, {
19, 60, 90
}
}
;
int tmp[HEIGHT][WIDTH];
int main(void) {
array_copy(score, tmp); //score를 tmp에 복사해서
array_print(tmp); //tmp를 프린트하라
return 0;
}
void array_print(int a[][WIDTH]) { //프린트하는 함수
int r,c;
for (r=0;r<HEIGHT;r++) {
for (c=0;c<WIDTH;c++)
printf("%d ", a[r][c]);
printf("\n");
}
}
void array_copy(int src[][WIDTH], int dst[][WIDTH]) { // 복사하는 함수
int *p=&src[0][0];
int *end=&src[HEIGHT-1][WIDTH-1];
int *q=&dst[0][0];
while(p <= end) {
*q++ = *p++;
}
}
더 많은 C언어 글이 궁금하다면?
https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4
댓글