어떤 강의를듣는 학생의 점수 평균을 내는 프로그램을 작성하려고 한다.
변수 = 학생의 수.
int stu_01, int stu_02, int stu_03, int stu_04 …
하나로 뭉쳐버릴 순 없을까?!
stu_01 stu_02 stu_03 stu_04 stu_05 stu_06 stu_07 …
5.
둘 이상의변수를 동시에 선언하는 효과
여러 개의 동일한 타입의 데이터가 저장될 수 있는 데이터 저장 공간
각 공간은 각 공간에 대한 번호(인덱스)로 접근이 가능하다.
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4] Stu[5] Stu[6] …
‘Stu’ 배열!
문법 :(자료형) (배열 이름)[(배열 크기)];
단, 배열에 들어가게 될 데이터는 오직 배열 선언 시 정의된 자료형만이 가능하
다.
Ex) int stu[10];
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4] Stu[5] Stu[6] Stu[7] Stu[8] Stu[9]
10개의 int 형 데이터가 들어갈 수 있는 공간이 생성!
각각은 int 형!
8.
배열의 원소에대한 접근
(배열 이름)[(인덱스)]
단! 인덱스 번호는 0부터 시작한다. 이는 가장 마지막 인덱스가 (배열 크기 - 1)
란 것이다.
Stu[7] = 80;
‘stu’배열의 인덱스7번(8번째 칸)에 80이 대입!
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4] Stu[5] Stu[6] Stu[7] Stu[8] Stu[9]
80
9.
배열을 생성하면서동시에 데이터를 저장하거나, 혹은 저장할 데이터 크기에 맞
게 배열을 생성 할 수도 있다.
int stu[5] = {80, 70, 70, 80, 90};
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4]
배열이 생성됨과 동시에 데이터들이 대입!
10.
그렇다면 만약초기 값의 개수가 배열 크기보다 작으면??
int stu[5] = {80, 70, 70};
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4]
0 0
나머지 배열들은 0으로 초기화되게 된다.
11.
저장될 초기값의개수에 따라 배열 크기를 잡을 수도 있다.
int stu[ ] = { 80, 70, 80, 90, 100, 70, 60 };
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4] Stu[5] Stu[6]
7
sizeof 함수를이용하여 배열의 크기(배열의 원소 개수)를 알 수 있다.
문법 : (배열의 크기) = sizeof(배열) / sizeof(배열크기)
=> 전체 배열 크기를 구해 각 원소 크기로 나누는 것!
Ex) size = sizeof(stu) / sizeof(stu[0]);
Stu[0] Stu[1] Stu[2] Stu[3] Stu[4]
sizeof(stu)
sizeof(stu[0])
14.
이번 강의에서계속 다뤄왔던 stu 배열을 생각해 보자.
stu 배열은 강좌 학생들을 나타낸다. 그런데 이 강좌가 여러 개 개설 되어서
여러 강좌의 성적을 다뤄야 한다. 이 경우에 배열의 구조는??
Stu[2][0] Stu[2][1] Stu[2][2] Stu[2][3] Stu[2][4] Stu[2][5] Stu[2][6]
Stu[1][0] Stu[1][1] Stu[1][2] Stu[1][3] Stu[1][4] Stu[1][5] Stu[1][6]
Stu[0][0] Stu[0][1] Stu[0][2] Stu[0][3] Stu[0][4] Stu[0][5] Stu[0][6]
15.
위에서 말한stu 배열은 2차원 배열이다.
위의 그림은 얼핏 보기에는 복잡해 보이지만 다음의 구조와 같은 것이다.
Stu[2][0] Stu[2] [1] Stu[2][2] Stu[2][3] Stu[2][4] Stu[2][5] Stu[2][6]
Stu[1][0] Stu[1][1] Stu[1][2] Stu[1][3] Stu[1][4] Stu[1][5] Stu[1][6]
Stu[0][0] Stu[0][1] Stu[0][2] Stu[0][3] Stu[0][4] Stu[0][5] Stu[0][6]stu[0]
stu[1]
stu[2]
각 배열이 내부에서 다시 나눠진다.
16.
다차원 배열의초기화는 기본적으로 1차원 배열의 초기화와 같다.
다만, 초기화 값 내부에 다시 배열 초기화 값을 서술하는 점이 다르다.
Ex) int stu[3][7] = {
{ 70, 80, 90, 80, 60, 50, 90 }
{ 60, 50, 70, 40, 90, 70, 80 }
{ 70, 80, 70, 80, 70, 90, 60 }
};
배열 초기화 값 내부에
다시 내부 배열의 초기화 값을 넣는다!
다음 조건을충족하는 프로그램을 제작합니다.
◦ 단어 혹은 문장을 암호로 변환하는 프로그램을 제작합니다.
◦ 먼저 암호화 될 문자(혹은 문장)를 입력 받습니다.
◦ 암호화 키(비밀번호)가 될 글자를 입력 받습니다.
◦ 단어(혹은 문장)가 변환되는 과정을 표시합니다.
◦ 마지막에는 완성된 암호문을 표시해줍니다.
단, 입력되는 평문과 암호화 키는 50자 이내로 받도록 합니다.
19.
평문을 ‘비밀번호의글자 수’ 만큼 뒤로 밀어줍니다.
각 글자들을 아스키 값에 맞는 ‘10진수 숫자’로 저장합니다.
위의 과정을 통해 나온 각각의 숫자에 비밀번호 각 글자에 맞는 아스키
값을 번갈아 가며 더해줍니다.
최종적으로 나온 숫자 집합으로 암호 변환이 완료되었습니다!
글자 수를 세는 함수는 다음과 같습니다.
#include <string.h> // 헤더파일을 불러온 후
Length = strlen(text) // 이와 같은 방법으로 사용하면 됩니다.