게임프로그래밍 개발 수업/C언어 수업

C언어 1차원 배열, 문자열의 입력과 출력

막뇌 2023. 3. 28. 10:35

3월 28일 수업 내용입니다.

 

 

배열이란 무엇인가?

 

다수의 정보를 저장하기 위해 사용, 변수선언 자체를 다수로 하게 된다.

 

 

단순히 다수의 변수 선언 역할만 하지는 않는다. 배열로 할 수 있는 일이 더욱 많다.

 

1차원 배열에 필요한 구성요소는 3가지, 위와 같다.

 

배열의 이름 자체가 주소다.

 

배열의 구조를 알아보는 예제

#include<stdio.h>

int main()
{
	int arr[5];
	int sum = 0;
	arr[0] = 10, arr[1] = 20, arr[2] = 30, arr[3] = 40, arr[4] = 50;

	for (int i = 0; i < 5; i++)
	{
		sum += arr[i];
	}

	printf("합계 : %d \n", sum);

	return 0;
}

출력 해보면 결과는 150이 나온다.

 

 

for문을 사용하여 배열을 담아보기

 

#include<stdio.h>

int main()
{
	
	int arr[10];



	for (int i = 0; i < 10; i++)
	{
		arr[i] = (i + 1) * 10;

		printf("%d \n", arr[i]);
	}

	

	return 0;


}

결과는

10

20

30

40

...

100

 

으로 출력 된다. 

 

 

#include<stdio.h>

int main()
{
	int arr1[5] = { 1,2,3,4,5, };
	int arr2[] = { 1,2,3,4,5,6,7 };
	int arr3[5] = { 1,2 };
	int ar1Len, ar2Len, ar3Len, i;
	printf("배열 arr1의 크기: %d\n", sizeof(arr1));
	printf("배열 arr2의 크기: %d\n", sizeof(arr2));
	printf("배열 arr3의 크기: %d\n", sizeof(arr3));

	ar1Len = sizeof(arr1) / sizeof(int);	//배열 arr1의 길이 계산
	ar2Len = sizeof(arr2) / sizeof(int);	//배열 arr2의 길이 계산
	ar3Len = sizeof(arr3) / sizeof(int);	//배열 arr3의 길이 계산

	for (i = 0; i < ar1Len; i++)
		printf("%d ", arr1[i]);
	printf("\n");

	for (i = 0; i < ar2Len; i++)
		printf("%d ", arr2[i]);
	printf("\n");

	for (i = 0; i < ar3Len; i++)
		printf("%d ", arr3[i]);
	printf("\n");

	return 0;
}

 

1차원 배열의 초기값 형태

크기는 비트 수로 결정됨

 

배열의 크기를 자료형으로 나누면 배열의 길이가 나온다. 

크기 / 자료형 = 길이

 

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>


int main()
{
	int arr1[100];
	srand((int)time(NULL));
	for (int i = 0; i < 100; i++)
		arr1[i] = rand() % 100 + 1;

	for (int i = 0; i < 100; i++)
		
	{
		if (i % 10 == 0)
			printf("\n");

		printf("%3d ", arr1[i]);
	}
		


	return 0;
}

정수를 랜덤하게 출력하는 기능을 만들어 보았다.

 

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>


int main()
{
	char str[] = "Good morning!";	//변수형태의 문자열
	printf("배열 str의 크기: %d \n", sizeof(str));
	printf("널 문자 문자형 출력: %c \n", str[13]);
	printf("널 문자 정수형 출력: %d \n", str[13]);

	str[12] = '?';

	printf("문자열 출력: %s \n", str);
	return 0;
}

 

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>


int main()
{
	char str[50];
	int idx = 0;

	printf("문자열 입력: ");
	scanf_s("%s", str, sizeof(str));	//scanf_s에서 문자열인 경우는 sizeof를 꼭 넣어준다.
	printf("입력받은 문자열: %s \n", str);

	printf("문자단위 출력: ");
	while (str[idx] != '\0')	//null값의 표현은 1.NULL 2. 0 3. '\0' 으로 표현 가능
	{
		printf("%c", str[idx]);
		idx++;
	}

	printf("\n");
	return 0;
}

 

 

 

 

문제 풀어보기

 

문제의 정답

더보기
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void GUGU(int num1, int num2);

int main() {
    int num1;
    int num2;
    printf("두개의 정수 입력: ");
    scanf_s("%d %d", &num1, &num2);

    GUGU(num1, num2);

    return 0;
}

void GUGU(int num1, int num2) {
    int n1;
    int n2;

    if (num1 > num2) {
        n1 = num1;
        n2 = num2;
    }
    else {
        n1 = num2;
        n2 = num1;
    }

    for (int i = n2; i <= n1; i++) {
        for (int j = 1; j < 10; j++) {
            printf("%d X %d = %d\n", i, j, i * j);
        }
        printf("\n");
    }
}

문제의 정답