C/배열

배열 기본

june__Park 2021. 3. 29. 16:38
void ex04(){
	/*
		< 배열(Array) >
		- '같은 자료형' 데이터를 '여러 개' 저장할 수 있는 메모리 
		- 변수 1개 : 서랍 1칸 
		  배열 : 서랍장
		- 용도 : 여러 데이터 반복처리 
			ex) 학생 100명의 국어점수 저장 후 출력 
				방법1) 변수 100개 --> 반복문 사용 불가능
				방법2) 100칸짜리 배열 1개 --> 반복문 사용 가능 
	*/

	
	// int형 5개 저장할 배열 1개 선언
	int arr[5]; 
	int i;

	// 각 칸에 값 저장 (칸번호(=인덱스)는 0번부터 시작)
	
	for(i = 0; i < 5; ++i){
		arr[i] = (i+1) * 100;
	}
	printf("%d \n", arr); // 배열명 == 배열의 시작 주소
	printf("%d \n", &arr[0]);
	printf("%d \n", &arr[1]);
	printf("%d \n", &arr[2]);
	printf("%d \n", &arr[3]);
	printf("%d \n", &arr[4]);

	for(i = 0; i < 5; ++i){
		printf("%d \n", arr[i]);
	}

	// 선언 및 초기화를 동시에 할 때는 {}를 사용
	int arr2[5] = {100,200,300,400,500};

	// 이 경우, [] 안의 숫자는 생략 가능
	int arr3[] = {100,200,300,400,500};

	// 배열 선언 : 자료형 배열명[칸 개수]

	// 배열의 현재 원소(=element, 배열에 들어있는 값들) 출력 
	printf("%d \n", arr[0]);
	printf("%d \n", arr[1]);
	printf("%d \n", arr[2]);
	printf("%d \n", arr[3]);
	printf("%d \n", arr[4]);
}
void quiz01(){
	int dates[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	int sum = 0;

	int month, date;
	// 사용자에게 월/일 을 입력 받아
	printf("월, 일:");
	scanf_s("%d%d", &month, &date);

	// 1/1 ~ 월/일 까지 총 며칠 소요되는지 출력
	// 1/2 ==> 1 일 
	// 4/4 ==> 31 + 28 + 31 + (4-1) 일
	// 5/27
	// 1월 전체 + 2월 + 3월 + 4월 + (27-1)일
	for(int i = 0; i < month-1; ++i){
		sum += dates[i];
	}
	sum += date - 1;
	printf("총 %d일 소요! \n", sum);

}
void quiz02(){
	// int형6칸짜리 배열 1개 선언
	// for문으로 사용자에게 정수 6개 입력 받고 배열에 저장
	// 최댓값, 최솟값 출력 
	// (+ 오름차순 정렬)
	// 배열의 현재 모든 원소 출력 (6개)
}
void quiz03(){
	char arr[] = {'H', 'i', '!', 'h', 'e', 'L', 'l', 'O', '\0'};
	// char arr[] = "Hi!heLlO";
	int i;
	printf("%s \n", arr);

	// 위 arr을 사용하여 다음을 출력
	//  hI!HElLo <= 대문자는 소문자로, 소문자는 대문자로
	for(i = 0; i < 9; ++i){  // i : 0 ~ 8
		if(arr[i] >= 'A' && arr[i] <= 'Z'){ // i번째 문자가 대문자니?
			arr[i] += 32; // arr[i]=arr[i] + 32; // 소문자로 바꿔라
		}
		else if(arr[i] >= 'a' && arr[i] <= 'z'){
			arr[i] -= 32;
		}
	}
	printf("%s \n", arr);
	//  HI!HELLO <= 모두 소문자로
	//  hi!hello <= 모두 대문자로
}