웹_프론트_백엔드/단과

[단과_C] 2020.02.24

shine94 2020. 2. 25. 12:53

1. 인덱스 번호가 0부터 시작하는 이유
 : 배열명은 시작주소를 가지고 있다. 따라서 다음 칸에 접근하기 위해
   포인터 연산을 한다. 배열명 + 칸수는 주소값이므로 그 안에 있는
   값에 접근할 때 참조 연산자로 접근한다(*).
   *(배열명 + 칸수)는 그 칸에 들어있는 값이다.
   첫번째 칸에 접근하고자 할 때 배열명 + 0으로 접근하기 때문에
   대괄호로 치환하면 0이 시작 인덱스이다.

 


2. 배열의 사용
    int arData[] = {3, 5, 4};
    
    sizeof(arData) : 12
    sizeof(arData) / sizeof(int) : 3
    
    arData[0] = 10;                //저장공간(대입연산자가 있기 때문에)
    arData[0] + 9;                  //값
    arData[2] = arData[0] + 7;  //저장공간, 값

 

 

3. 오늘 실습코드

1) arTest.c

#include<stdio.h>

void main() {
	//정적배열 : 길이는 변하지 않음
	int arData[] = { 3,4,5 };
	int length = sizeof(arData) / sizeof(int);

	for (int i = 0; i < length; i++) {
		arData[i] = 3 - i;
	}

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

 

2) constant.c

#include <stdio.h>
//상수(전처리)
#define LENGTH 4

void main() {
	//인덱스에는 상수만 가능하고 변수는 불가능
	//왜? 정적 배열이기 때문에
    
	//변수
	int data1 = 10;
	//상수
	const int data2 = 4;

	/*
	//data2는 상수인데 발생하는 이유?
	//상수라도 배열보다 늦게 메모리에 올라가서 에러 발생
	//배열보다 빨리 메모리에 올라가려면 전처리에서 상수 처리해줘야 함
	//int arData[data2] = {1,3,4,5};	
	*/
    
	int arData[LENGTH] = { 1,3,4,5 };

}

 

3) arTask.c

#include <stdio.h>
#define L 5

void main() {
	//1~10까지 중 짝수만 배열에 넣고 출력하기
	int arData[L] = { 0, };

	for (int i = 0; i < L; i++) {
		arData[i] = (i + 1) * 2;
	}
    
	for (int i = 0; i < 5; i++) {
		printf("%d\n", arData[i]);
	}
	
	//arData에 담겨있는 값 포인터 연산으로 출력
	//대괄호는 사용하지 않는다.
	for (int i = 0; i < L; i++) {
		printf("%d\n", *(arData + i));
	}

	//배열명은 시작주소를 가지고 있다. 
	//printf("%p\n", arData);
	//printf("%p\n", &arData[0]);
	//printf("%p\n", arData + 1);
	//printf("%d\n", *(arData + 1));
	
}

 

4) arTest2.c

#include <stdio.h>
#define L 5

void main() {
	int arData[L] = {0, };

	for (int i = 0; i < L; i++) {
		printf("%d", arData[i]);

	}
	printf("\n");

}

 

5) arTask2.c

#include<stdio.h>

//#define L 10	//1~10까지 넣고 출력
//#define L 10	//10~1까지 넣고 출력
//#define L 100	//1~100까지 넣은 후 총합 구하기
//#define L 6	//A~F까지 넣고 출력
//#define L 5	//A~F까지 중 E제외하고 출력
#define L 26	//aBcDeF....Z 넣고 출력

void main() {


	/*
	//1~10까지 넣고 출력
	int ardata[L] = { 0, };
	for (int i = 0; i < L; i++) {
		ardata[i] = i + 1;
		printf("%d ", ardata[i]);
	}
	printf("\n");
	*/


	/*
	//10~1까지 넣고 출력
	int arData[L] = { 0, };
	for (int i = 0; i < L; i++) {
		arData[i] = 10 - i;
		printf("%d ", arData[i]);
	}
	printf("\n");
	*/
    
    
	/*
	//1~100까지 넣은 후 총합 구하기
	int arData[L] = { 0, };
	int result = 0;
	for (int i = 0; i < L; i++) {
		arData[i] = i + 1;
		//result = result + arData[i];
		result += arData[i];
	}
	printf("%d\n", result);
	*/
    
    
	/*
	//A~F까지 넣고 출력 - 첫번째 방법
	char arData[L] = { ' ', };
	for (int i = 0; i < L; i++) {
		arData[i] = i + 65;
		printf("%c ", arData[i]);
	}
	printf("\n");
	*/
	/*
	//A~F까지 넣고 출력 - 두번째 방법
	char arData[L] = { ' ', };
	for (char i = 'A'; i < 'G'; i++) {
		arData[i - 65] = i;
		printf("%c ", arData[i - 65]);
	}
	printf("\n");
	*/
    
    
	/*
	//A~F까지 중 E제외하고 출력
	char arData[L] = { ' ', };
	int temp = 0;
	for (int i = 0; i < L; i++) {
		//arData[i] = i == L-1 ? i + 66 : i + 65;
		temp = i;
		if (i == L - 1) {
			temp++;
		}
		arData[i] = temp + 65;
		printf("%c ", arData[i]);
	}
	printf("\n");
	*/
    
    
	//aBcDeF....Z 넣고 출력
	char arData[L] = { ' ', };
	for (int i = 0; i < L; i++) {
		arData[i] = i % 2 == 0 ? 97 + i : 65 + i;
		printf("%c", arData[i]);
	}
	printf("\n");
    
    
}

 

6) arTest3.c

#include <stdio.h>
#define L 5

void main() {
	int arData[L] = { 0, };

	for(int i = 0; i < L; i ++) {
		//printf("%d번째 정수 : ", i + 1);
		printf("정수 %d : ", i + 1);
		//scanf_s("%d", &arData[i]);
		scanf_s("%d", arData + i);
	}

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

}

 

7) arTask3.c

#include<stdio.h>
#define L 5

void main() {
	//5개의 정수를 입력받고 총 합 구하기
	//배열사용
	int arData[L] = { 0, };
	int total = 0;

	for (int i = 0; i < L; i++) {
		printf("%d번째 정수 : ", i + 1);
		scanf_s("%d", arData + i);
		total += arData[i];
	}

	printf("총합 : %d\n", total);
	
}

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_C] 2020.02.25  (0) 2020.02.26
[단과_JAVA] 2020.02.25  (0) 2020.02.26
[단과_JAVA] 2020.02.24  (0) 2020.02.25
[단과_C] 2020.02.21  (0) 2020.02.22
[단과_JAVA] 2020.02.21  (0) 2020.02.22