CodeUp C언어 기초 100제_1021번

2023. 12. 2. 16:46C언어 기초 100제

728x90
반응형

https://codeup.kr/problem.php?id=1021

 

[기초-입출력] 단어 1개 입력받아 그대로 출력하기(설명)

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr

 

문제 : 배열을 이용해 한 개의 단어를 입력받아 그대로 출력하시오. (단, 단어의 길이는 50자 이하다.)

 

참고 : https://tcpschool.com/c/c_array_oneDimensional

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

배열(array) :

 

같은 타입의 변수들로 이루어진 유한 집합이다.

배열을 구성하는 각각의 값을 배열 요소라고 한다.

배열에서 위치를 가리키는 숫자를 인덱스(index)라고 한다.

C언어에서 인덱스는 언제나 0부터 시작하며, 0을 포함한 양의 정수만을 가질 수 있다.

 

배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조이다,

 

배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있다.

현실적으로는 이해하기 쉬운 2차원 배열까지가 많이 사용된다.

 

1차원 배열 :

 

가장 기본적인 배열로 다음과 같은 문접에 따라 선언된다.

 

'타입 배열이름[배열길이];'

 

타입은 배열 요소로 들어가는 변수의 타입을 명시한다.

배열 이름은 배열이 선언된 후에 배열로 접근하기 위해 사용된다.

배열의 길이는 해당 배열이 몇 개의 배열 요소를 가지게 되는지 명시한다.

 

*C언어에서 배열을 선언만 하고 초기화하지 않으면, 각 배열 요소에 아무런 의미를 가지지 않는 쓰레기값(가비지값)이 저장되어 있게 된다.

따라서 초기화하지 않은 배열은 사용하지 않도록 주의해야 한다.

 

배열 선언과 동시에 초기화 하는 방법 :

 

다음과 같이 중괄호를 사용하여 초깃값을 나열한 것을 초기화 리스트라고 한다.

 

타입 배열이름[배열길이] = {배열요소1, 배열요소2, ... };

 

단, 초기화 리스트의 타입과 배열의 타입은 반드시 일치해야 한다.

만약에 초기화 리스트의 개수가 배열의 총 길이보다 적으면, 배열의 앞에서부터 차례대로 초기화 된다.

이때 초기화하지 못한 나머지 배열 요소는 모두 0으로 자동 초기화된다.

 

배열의 길이 자동 설정 :

 

C언어에서는 초기화 리스트에 맞춰 자동으로 배열의 길이를 설정할 수 있다.

 

다음처럼 배열의 길이를 따로 입력하지 않은 배열은 초기화 리스트의 배열 요소의 개수에 맞춰 자동으로 배열의 길이가 설정된다.

 

타입 배열이름[] = {배열요소1, 배열요소2, ..};

 

배열의 특징 :

 

1. 배열의 길이를 선어할 때에는 반드시 상수를 사용해야 한다.

2. 배열 요소의 인덱스는 언제나 0부터 시작한다.

3. C 컴파일러는 배열의 길이를 전혀 신경쓰지 않는다.

 

배열이 차지하는 메모리 크기 :

 

C언어에서 배열을 복사하거나 배열 요소에 특정 작업을 하고 싶을 때는 해당 배열이 차지하는 메모리의 크기를 정확히 알고있어야만 한다.

 

배열이 차지하는 총 메모리의 크기는 다음 수식을 사용하여 구할 수 있다.

 

배열이 차지하는 메모리의 크기 = 배열의 길이*sizeof(타입)

 

배열의 길이를 알고 싶을 때에는 다음 수식을 사용하여 구할 수 있다.

 

배열의 길이 = sizeof(배열이름) / sizeof(배열이름[0])

 

*위 수식에서 배열 이름[0]은 해당 배열의 타입을 표현하기 위해 사용되었다.

 

 

널(NULL) 문자 :

 

문자형 배열로 선언된 문자열 변수는 문자열의 끝을 프로그램에 따로 알려야 한다.

그래야 프로그램이 실제 문자열에 속한 값과 그 외의 가비지값을 구분할 수 있다.

이 문자를 널 문자라 하고, \0으로 표시하며, 아스키코드값은 0이다.

 

 

data라는 배열의 길이를 51로 선언한다.

51은 널 문자와 최대 50자를 감안해 나온 값이다.

배열의 각 항목은 scanf() 함수를 통해 입력받는다.

printf() 함수를 통해 data 배열에 입력된 문자열을 출력한다.

728x90
반응형