• Home
  • About
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • All Posts
    • All Tags
    • All categories
  • categories
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • 정보처리기사
    • Spring
    • Thymeleaf
    • 기술면접
  • Projects

실기 대비 - C언어 - 인프런 C프로그래밍 입문부터 게임 개발까지 (변수,상수,입출력,반복문,포인터)

27 Mar 2021

🔶 실기 대비 - C언어 -인프런 C프로그래밍 입문부터 게임 개발까지(변수,상수,입출력,반복문,포인터)

✔ 변수,상수,입출력,프로젝트

  • 코드
      #include  <stdio.h>
      int main(void)
      {
      printf("정수형 변수에 대한 예제\n");
      int age1 = 12;
      printf("%d\n", age1);
      age1 = 13;
      printf("%d\n", age1);

      printf("실수형 변수에 대한 예제\n");
      float f = 46.5;
      printf("%f\n", f); // 46.500000 출력
      printf("%.2f\n", f); // 46.50 출력 => .다음에 소숫점 출력하고자하는 자릿수 입력
      double d = 4.428;
      printf("%lf\n", d); // 4.428000 출력
      printf("%.2lf\n", d); // 4.43 출력 => 반올림

      printf("상수에 대한 예제\n");
      // 변수 타입앞에 const 붙혀주면 왼다 => 변하지 않는수 , 수정 안됨
      const int YEAR = 2000;
      printf("태어난 년도 = %d\n", YEAR);

      printf(" printf 사용 예제\n");
      // 연산
      int add = 3 + 7;
      printf("3+7 = %d\n", add);
      printf("%d x %d = %d\n", 3, 7, 3 * 7);

      printf("scanf 사용예제\n");
      // 키보드 입력을 받아서 저장
      int input;
            printf("값을 입력하세요\n");
      // input이라는 변수에 정수형을 입력받는다
      scanf_s("%d", &input);
      printf("입력값 : %d\n", input);

      int one, two, three;
      printf("3개의 정수를 입력하세요 : ");
      scanf_s("%d %d %d", &one, &two, &three);
      printf("첫번째 값 : %d\n",one);
      printf("두번째 값 : %d\n",two);
      printf("세번째 값 : %d\n",three);

      printf("문자( 한 글자), 문자열(한 글자 이상의 여러 글자)\n");
      char c = 'A';
      printf("%c\n", c);

      printf("배열 선언\n");
      char str[256];
      printf("문자열은 & 안붙혀도 되고, 사이즈를 표기해야된다\n");
      scanf_s("%s", str, sizeof(str));
      printf("%s\n", str);

      printf("프로젝트 \n");
      printf("경찰관이 범죄자의 정보를 입수(조서 작성)\n");
      printf("이름, 나이, 몸무게, 키, 범죄명?\n");
      char name[256];
      printf("이름이 뭐에요?");
      scanf_s("%s", name, sizeof(name));

      int age;
      printf("몇살이에요?");
      scanf_s("%d", &age);

      float weight;
      printf("몸무게는 몇 kg?");
      scanf_s("%f", &weight);

      double height;
      printf("키는 몇?");
      scanf_s("%lf", &height);

      char what[256];
      printf("무슨 범죄를 저질렀어요?");
      scanf_s("%s", what, sizeof(what));

      printf("조서 내용 출력");
      printf("\n\n--- 범죄자 정보 ---\n\n");
      printf("이름     : %s\n", name);
      printf("나이     : %d\n", age);
      printf("몸무게   : %.2f\n", weight);
      printf("키       : %.2lf\n", height);
      printf("범죄명   : %s\n", what);

      return 0;
      }

▶ 출력내용 c언어1

✔ 반복문

  • 코드
#include<stdio.h>

int main(void)
{
	printf("++ 연산자\n");
	int a = 10;
	// ++이 앞에 붙으면 ++를 실행 후 출력
	printf("a는 %d\n", ++a);
	// ++이 뒤에 붙으면 해당 문장 수행 후 ++ 이 적용되는것
	printf("a는 %d\n", a++);
	printf("a는 %d\n", a);

	printf("반복문 : for, while, do while\n");
	printf("for문 : for(선언; 조건; 증감; { } \n");
	printf("반복문 : for 예시\n");
	for (int i = 1; i <= 3; i++) {
		printf("Hello world %d\n", i);
	}

	printf("while문 : while(조건){ } \n");
	printf("반복문 : while 예시 \n");

	int i = 1;
	while (i <= 3)
	{
		
		printf("Hello world %d\n", i++);
	}

	printf("do while문 : do{ } while(조건){ } \n");
	printf("반복문 : do while 예시 \n");
	int j = 1;
	do {
		printf("Hello world %d\n", j++);

	} while (j <= 3);


	printf("반복문 :2중 반복문 예시 \n");
	for (int i = 1; i <= 3; i++) {
		printf("첫번째 반복문 : %d\n", i);

		for (int j = 1; j <= 2; j++) {
			printf("           두번째 반복문 : %d\n", j);
		}
	}
	
	printf("반복문 :2중 반복문 활용한 구구단 출력 \n");

	for (int i = 2; i <= 3; i++) {
		printf(" %d단 계산 \n", i);
		for (int j = 1; j <= 9; j++) {
			printf(" %d * %d = %d\n", i, j, i * j);
		}
	}

	printf("반복문 :2중 반복문 활용한 별 출력 \n");
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j <= i; j++) {
			printf("*");
		}
		printf("\n");
	}

	printf("반복문 :2중 반복문 활용한 별 출력 \n");
	for (int i = 0; i <= 5; i++) {
		
		for (int j = i; j <= 5-1; j++) {
			printf(" ");
			
		}for (int k = 0; k <= i; k++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

▶ 출력내용 c언어2

✔ 포인터

  • 코드
#include<stdio.h>
void swap(int c, int d); // 함수 선언
void swap_addr(int* c, int* d);
void changeArray(int* ptr);

int main(void)
{
	// 포인터

	// [철수] : 101호 -> 메모리 공간의 주소
	// [영희] : 201호
	// [민수] : 301호
	// 각 문 앞에 암호가  걸려있음
	int 철수 = 1; // 암호 : 1
	int 영희 = 2;
	int 민수 = 3;

	
	printf("철수네 주소 : %d, 암호 : %d\n", &철수, 철수);
	printf("영희네 주소 : %d, 암호 : %d\n", &영희, 영희);
	printf("민수네 주소 : %d, 암호 : %d\n", &민수, 민수);

	// 미션 : 아파트의 각 집에 방문하여 문에 적힌 암호 확인
	int *미션맨; // 포인터 변수 선언 : 변수명 앞에 *을 붙혀준다
	미션맨 = &철수; // 미션맨이 철수의 주소값을 할당 : 할당할 변수이름(철수)앞에 &를 붙혀준다
	printf("미션맨이 방문하는 곳 주소 %d, 암호 : %d\n", 미션맨, *미션맨);

	미션맨 = &영희; 
	printf("미션맨이 방문하는 곳 주소 %d, 암호 : %d\n", 미션맨, *미션맨);

	미션맨 = &민수; 
	printf("미션맨이 방문하는 곳 주소 %d, 암호 : %d\n", 미션맨, *미션맨);

	// 두번째 미션 : 각 암호에 3을 곱해라
	미션맨 = &철수;
	*미션맨 = *미션맨 *3 ;
	printf("미션맨이 암호를 바꾼 곳 주소 %d, 암호 : %d\n", 미션맨, *미션맨);

	미션맨 = &영희;
	*미션맨 = *미션맨 * 3;
	printf("미션맨이 암호를 바꾼 곳 주소 %d, 암호 : %d\n", 미션맨, *미션맨);

	미션맨 = &민수;
	*미션맨 = *미션맨 * 3;
	printf("미션맨이 암호를 바꾼 곳 주소 %d, 암호 : %d\n", 미션맨, *미션맨);

	// 스파이등장
	// 미션맨이 바꾼 암호에서 2를 빼라

	// 스파이도 미션맨이 가르키고있는 메모리 주소를 가리킨다
	int* 스파이 = 미션맨;

	스파이 = &철수;
	*스파이 = *스파이 - 2;
	printf("스파이가 방문하는 곳 주소 : %d, 암호 : %d\n", 스파이, *스파이);

	스파이 = &영희;
	*스파이 = *스파이 - 2;
	printf("스파이가 방문하는 곳 주소 : %d, 암호 : %d\n", 스파이, *스파이);

	스파이 = &민수;
	*스파이 = *스파이 - 2;
	printf("스파이가 방문하는 곳 주소 : %d, 암호 : %d\n", 스파이, *스파이);

	// 참고로 미션맨,스파이가 사는 곳의 주소 : &미션맨, &스파이 로 확인
	printf("미션맨이 사는 주소 : %d\n", &미션맨);
	printf("스파이가 사는 주소 : %d\n", &스파이);


	// 배열
	printf("-------배열--------\n ");
	int arr[3] = { 5,10, 15 };
	int* ptr = arr;

	for (int i = 0; i < 3; i++) {
		printf("배열 arr[%d] 의 값 : %d\n", i, arr[i]);
	}

	for (int i = 0; i < 3; i++) {
		printf("포인터 ptr[%d] 의 값 : %d\n", i, ptr[i]);
	}

	printf("-------포인터의 값 변경 후--------\n ");
	ptr[0] = 100;
	ptr[1] = 200;
	ptr[2] = 300;

	for (int i = 0; i < 3; i++) {
		//printf("배열 arr[%d] 의 값 : %d\n", i, arr[i]);
		printf("배열 arr[%d] 의 값 : %d\n", i, *(arr + i));

	}

	for (int i = 0; i < 3; i++) {
		//printf("포인터 ptr[%d] 의 값 : %d\n", i, ptr[i]);
		printf("포인터 ptr[%d] 의 값 : %d\n", i, *(ptr + i));
	}
	// *(arr + i) == arr[i] : 똑같은 표현
	// arr == arr 배열의 첫번째 값의 주소와 동일하다 == &arr[0]
	// *& 는 아무것도 없는 것과 같다 : &는 주소, *은 그 주소의 값이기 때문
	// *& 는 서로 상쇄된다
 

	// SWAP 함수 : 변수의 값을 바꾼다
	int c = 10;
	int d = 20;
	printf("SWAP 함수 전 => c : %d, d : %d\n", c, d);
	swap(c, d);
	printf("SWAP 함수 후 => c : %d, d : %d\n", c, d);

	// 값에 의한 복사(Call by Value) -> 값만 복사한다는 의미
	// 메모리 공간에 있는 주소값 자체를 넣어줘야한다
	printf("SWAP 함수 전(주소값 전달) => c : %d, d : %d\n", c, d);
	swap_addr(&c, &d);
	printf("SWAP 함수 후(주소값 전달) => c : %d, d : %d\n", c, d);

	// 포인터로 배열값 변경하기
	int arr2[3] = { 10, 20, 30 };
	printf("------배열값 변경 전-------\n");
	for (int i = 0; i < 3; i++) {
		printf("%d\n", arr2[i]);
	}
	changeArray(arr2);
	printf("------배열값 변경 후-------\n");
	for (int i = 0; i < 3; i++) {
		printf("%d\n", arr2[i]);
	}

	return 0;
}
void swap(int c, int d) {
	int temp = c;
	c = d;
	d = temp;
	printf("SWAP 함수 내 => c : %d, d : %d\n", c, d);
}

void swap_addr(int *c, int *d) {
	int temp = *c;
	*c = *d;
	*d = temp;
	printf("SWAP 함수 내(주소값 전달)=> c : %d, d : %d\n", *c, *d);
}
void changeArray(int* ptr) {
	ptr[2] = 50;
}

▶ 출력내용 c언어3



Share Tweet +1