본문 바로가기

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

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

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");
    }
}

문제의 정답