[배열]
같은 자료형을 가진 여러개의 변수들의 나열된 묶음
특징
- 같은 자료형이다
- 크기가 고정이다
- 순서가 있다.
사용목적
공통된 특징을 갖고 있는 변수를 변수명으로 따로 관리하는 것이 아니라 묶음(배열)으로 묶어서 편하게 번호로 관리 할 수 있다.
[ ]:첨자
배열 생성방법
자료형 배열명[크기];
ex)정수형의 변수 3개를 ar이라는 이름의 배열로 묶어서 관리한다.
int ar[3];
<실습> 배열.c
//step1
3명의 학생의 점수를 저장하는
정수형 변수 3개를 만들기
#include <stdio.h>
int main() {
/*int student1_score = 100;
int student2_score = 20;
int student3_score = 60*/;
//int student_score[3] = { 100,20,60 };
int student_score[3];
student_score[0] = 100;
student_score[1] = 20;
student_score[2] = 60;
printf("학생 1번의 점수:%d점\n", student_score[0]);
printf("학생 2번의 점수:%d점\n", student_score[1]);
printf("학생 3번의 점수:%d점\n", student_score[2]);
return 0;
}
—————————————————————
배열을 구성하는 변수들을 앞으로 요소라고 하자
1) 배열을 생성하자마자 값을 저장하는 방법
자료형 배열명[크기] = 값; -> 초기화
2) 배열을 생성한 이후에 요소에 값을 저장하는 방법
배열명[위치] = 값;
*배열 안에 있는 요소에 저장된 값들은 어떻게 출력, 연산을 할 수 있을까?
배열명[번호]
*시작위치는 0번으로 시작한다 -> 포인터
*배열의 마지막 번호는 크기 -1번이다
*배열은 생성한 이후에는 묶음으로 값을 넣을 수 없다.
*배열의 모든 값 0으로 초기화
int 배열[5] = {0};
—————————————————————————————————
<실습> 학생점수.c
5명의 학생 점수를 입력받아, scores라는 배열에 저장하고
배열에 저장된 모든 값을 다음과 같은 형식으로 출력하시오
#include <stdio.h>
int main() {
int scores[5];
for (int i = 0; i < 5; i++) {
printf("%d번 학생 점수:", i + 1);
scanf("%d", &scores[i]);
}
for (int i = 0; i < 5; i++) {
printf("%d번 학생 점수:%d점\n",i+1,scores[i]);
}
return 0;
}
<출력결과>
1번 학생 점수: 50 점
2번 학생 점수: 60 점
3번 학생 점수: 80 점
4번 학생 점수: 100 점
5번 학생 점수: 40 점
*배열은 반복문과 함께 자주 사용한다.
------------------------------------------------
*학생점수의 평균 구하기
평균을 구하는 방법
1) 전체 점수의 합계 구해라
2) 합계/전체 개수
#include <stdio.h>
int main() {
int scores[5];
int sum = 0;
double avg;
for (int i = 0; i < 5; i++) {
printf("%d번 학생 점수:", i + 1);
scanf("%d", &scores[i]);
}
for (int i = 0; i < 5; i++) {
sum += scores[i];
}
avg = sum / (double)5;
printf("학생의 평균 점수는:%.1f", avg);
return 0;
}
<출력결과>
1번 학생 점수: 50 점
2번 학생 점수: 60 점
3번 학생 점수: 80 점
4번 학생 점수: 100 점
5번 학생 점수: 40 점
학생의 평균 점수는:66.0 점
——————————————————————————————————-
<실습> 짝수배열.c
사용자에게 10개의 숫자를 입력받아
num 배열에 저장하고
입력받은 숫자가 짝수 일때만 출력하는 프로그램
#include <stdio.h>
int main() {
int num[5];
for (int i = 0; i < 5; i++) {
printf("숫자를 입력하세요:");
scanf("%d", &num[i]);
}
for (int i = 0; i < 5; i++) {
if (num[i] % 2 == 0) {
printf("짝수인 수:%d\n", num[i]);
}
}
return 0;
}
---------------------------------------------------------------------
[문자열]
생성방법
1)char 배열명[] = {문자값1, 문자값2..}
2)char 배열명[] = “문자열값”;
sizeof(자료형 혹은 값)
printf(“%s”,문자열)
‘\0’:NULL문자
문자열에서 ‘\0’을 만날때까지 문자들을 출력
<실습> 문자열.c
#include <stdio.h>
int main() {
char name1[] = “Mike”;
char name2[] = {‘M’,’i’,’k’,’e’,’\0’};
int num[] = {1,2,3,4};
//1)전체 byte크기 출력
printf(“name1:%d\n”,sizeof(name1));
printf(“name2:%d\n”,sizeof(name2));
//2) printf(%s”,문자열)
printf(“name1:%s\n”, name1);
printf(“name2:%s\n”,name2);
return0;
}
————————————————————
<실습>최댓값.c
#include <stdio.h>
int main() {
int num[5] = {0};
int max;
for (int i = 0; i < 5; i++) {
printf("숫자입력: ");
scanf("%d", &num[i]);
}
max = num[0];
for (int i = 1; i < 5; i++) {
if (max < num[i]) {
max = num[i];
}
}
printf("최댓값:%d\n", max);
return 0;
}
사용자에게 5개의 숫자를 입력받아 배열에 저장하고, 최댓값을 출력하는 코드 구현
----------------------------------------------------------