You are on page 1of 5

프로그래밍기초와실습

11 주차 실습 과제

제출일 2023.05.18 학과 전자전기공학부

과목 프로그래밍 기초와 실습 학번 2023111750

담당교수 이호정 교수님 이름 권성민


 

문제 : 11 주차 실습과제 1
소스코드 및 주석
//입력받은 두 값의 순서를 바꾸기_포인터

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

void swap(int *x, int *y); //swap 함수는 두 개의 포인터 변수를 인자로 받아서 그 포인터가 가리키는
변수의 값을 서로 바꾸는 역할

int main(void)
{
int a, b;

scanf("%d %d", &a, &b);

printf("스왑하기 전 : %d %d\n", a, b);

swap(&a, &b); //swap(&a, &b)라고 호출하면 a 와 b 의 값이 서로 바뀌게 됨

printf("스왑한 후 : %d %d\n", a, b);

return 0;
}

void swap(int *x, int *y)


{
int tmp; // int 형 변수 tmp 를 선언하는 코드, 이 변수는 두 개의 변수를 서로 바꿀 때 사용됨

tmp = *x; //포인터 x 가 가리키는 변수의 값을 tmp 에 저장하는 코드


*x = *y; //포인터 y 가 가리키는 변수의 값을 포인터 x 가 가리키는 변수에 저장하는 코드
*y = tmp; //tmp 에 저장된 값을 포인터 y 가 가리키는 변수에 저장하는 코드

}
코드 해석
이 코드는 두 개의 정수를 입력받아서 그 두 수를 서로 바꾸는 swap 함수를 구현하고
있습니다. swap 함수는 두 개의 포인터 변수를 인자로 받아서 그 포인터가 가리키는
변수의 값을 서로 바꾸는 역할을 합니다. 예를 들어, swap(&a, &b)라고 호출하면 a 와 b
의 값이 서로 바뀌게 됩니다. 이 코드에서는 swap 함수가 main 함수 밖에 정의되어
있습니다. 이렇게 함수를 따로 정의해놓으면 같은 기능을 하는 코드를 여러 번 작성할
필요 없이 함수를 호출해서 사용할 수 있습니다.
결과화면

소감
이 코드를 작성하면서 C 언어의 포인터와 함수에 대해 더욱 깊게 이해할 수 있었습니다.
또한, 이 코드를 작성하면서 프로그래밍에 대한 흥미와 자신감이 생겼습니다.

문제 : 11 주차 실습과제 2
소스코드 및 주석
//n*n 배열_2 차원 배열

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
int n;
scanf("%d", &n);
int arr[50][50] = { 0, }; //이 코드는 50 x 50 크기의 2 차원 배열 arr 을 생성하고, 배열의 모든
원소를 0 으로 초기화하는 코드

for (int i = 0; i < n; i++) //이 코드는 0 부터 n-1 까지의 값을 가지는 변수 i 를 선언하고, i 가 n
보다 작은 동안 반복하는 코드
{
for (int j = 0; j < n; j++) //이 코드는 0 부터 n-1 까지의 값을 가지는 변수 j 를 선언하고, j 가
n 보다 작은 동안 반복하는 코드
{
arr[i][j] = i * n + j + 1; //이 코드는 2 차원 배열 arr 의 i 행 j 열에 i * n + j + 1 값을
대입하는 코드
printf("%2d ", arr[i][j]); //이 코드는 2 차원 배열 arr 의 i 행 j 열에 저장된 값을 출력하는
코드, "%2d "는 정수를 2 자리로 출력하고, 공백을 한 칸 띄우는 형식
}
printf("\n");
}

return 0;
}
코드 해석
이 코드는 n 을 입력받아서 n x n 크기의 2 차원 배열을 생성하고, 배열의 각 원소에 1
부터 n^2 까지의 숫자를 대입하는 코드입니다. 이 코드에서는 int 형 변수 n 과 2 차원
배열 arr 이 선언되어 있습니다. 이 변수들은 main 함수 내에서 사용됩니다. scanf(“%d”,
&n);은 사용자로부터 정수를 입력받아서 변수 n 에 저장하는 코드입니다.
arr[i][j] = i * n + j + 1;은 i 와 j 를 이용해서 2 차원 배열 arr 의 각 원소에 값을 대입하는
코드입니다. 이 코드에서는 i * n + j + 1 을 이용해서 1 부터 n^2 까지의 숫자를
생성합니다. printf("%2d ", arr[i][j]);는 arr[i][j]에 저장된 값을 출력하는 코드입니다. %2d
는 출력할 값이 두 자리 수일 경우 왼쪽에 공백을 추가해서 출력하라는 의미입니다.
결과화면

소감
이 코드를 작성하면서 C 언어의 2 차원 배열을 이해하는 데 도움이 되었습니다. 또한 이
코드를 작성하면서 반복문을 사용하는 방법과 배열을 초기화하는 방법 등 C 언어의
기본적인 개념을 익혔습니다. 이러한 경험이 프로그래밍 실력 향상에 도움이 되었습니다.

You might also like