이 글은 언어를 처음 접하는 사람들에게 문법적인 부담을 가장 적게 주면서 차근차근 프로그래밍에 빠질수가 없나 하는 고민으로 쓴 글입니다.

가장 최악의 글이 처음 대하는 사람은 읽어도 모르고 아는 사람은 지겨운 글인데 이 글도 그런 글이 되지 않을 까 걱정이 됩니다.

이 글 읽어본 후 이해가 안 가는 부분 있으면 질답에 글 남겨 주세요. 보충 하겠습니다.

첫 계단 오르기 위한 준비운동

내용:
    -printf
    +변수
      -정수형 변수
      -실수형 변수
    -사칙 연산 , 몫 , 나머지 연산자
    -scanf
    -형 변환 연산자
    -수 분리하기

어떤 입력값을 받아 맞는 처리를 한 후 원하는 결과를 내는 것이 시스템의 기본 기능이다. c 언어에서 입력하는 용도로 사용하는 함수와 출력하는 함수에 대해서 알아보자.

1. printf

printf 는 화면에 출력하는 기능을 하는 것이다.

(1) printf("........");

   #include <stdio.h>

   int main()
   {
      printf("i love my life!!!");
      return 0;
   }
   

printf 의 약속은 쌍 따움표(") 안에 들어있는 내용을 그대로 화면상에 출력 하는 명령이다.

결과는:

i love my life!!!

다음 프로그램을 실행하면 전 프로그램과의 차이를 볼수 있는가?

   #include <stdio.h>

   int main()
   {
      printf("i love my life!!!\n");
      return 0;
   }
   

(2) printf("....\n.....\n....");

\n 문자는 다음 줄로 넘기는 기능을 하는 제어문자이다.

printf("이것은\n\n이렇게 된다.\n");

출력 결과는

이것은

이렇게 된다.

(프로그래밍 실습문제)

2. 변수

  - 정수형 변수
  - 실수형 변수

(1) 정수 형 변수

#include <stdio.h>

int main()
{
   int a;

   a = 10;
   printf("a = %d\n",a);
   return 0;
}

1)int a;

a 는 정수형 변수이다. 변수는 뭔가를 담을수 있는 그릇이다. 즉 a 는 정수를 담을수 있는 그릇이다.

정수란? 소수점을 포함하지 않는 수이다.

  • 2.5 , 3.0 ... 실수
  • 12 , -5 , 0 , 1000 ... 정수

2)a = 10;

변수 a 에 10 을 넣어라. = 는 같다는 의미가 아닌 대입을 의미하는 연산자

3)printf("a = %d\n",a);

printf("쌍 따옴표안에 있는 내용를 그대로 표시하라");

단 , %d 가 오면 이 자리에 뒤에 오는 변수의 값을 가져와서 출력하라는 의미이다.

(보충) %d 가 여러개 사용된 경우

(보기1) 두 수를 입력 받아 합을 구하는 프로그램 이다.

#include <stdio.h>

int main()
{
   int a,b;

   // 슬래쉬 두개를 사용하면 주석
   a = 10;
   b = 20;

   printf("%d\n",a+b); // 합 출력
}

(2)실수형 변수

실수 형 변수란 소수점을 포함한 수이다. 12.5 , -0.5 , 12.0 , ....

#include <stdio.h>

int main()
{
   float a;

   a = 10.56;
   printf("%.1f\n",a);
   return 0;
}

실수형 변수는


(프로그래밍 실습)

아래와 같이 출력되도록

printf 를 이용하여 괄호를 채우시요.

#include <stdio.h>

int main()
{
    int b, h;
    b = 10;
    h = 15;
	//여러줄이 와도 상관없습니다.
	(                       )
}

밑변의 길이가 20 이 되도록 변수 b 를 수정하여 수정해서 실행결과가 정상적으로 나오는지 확인 해 보세요.

꼭 알고 넘어가야 할 사항은 10 , 15 , 75 를 출력하는 자리에는 %d 를 사용해야 합니다. 변수 값에 따라 변화하는 부분입니다.


(Q) 아래 프로그램을 실행 시키면 결과는 어떻게 나올까요???

#include <stdio.h>

int main()
{
    int a;

    a = 10;
    a = 20;
	printf("%d\n", a);
}

(A) 프로그램은 위에서 아래로 실행을 합니다. a 변수에 10 을 넣은 후 다음 20 을 넣으면 기존에 있는 내용을 덮어 버립니다. 그래서 출력결과는 20

3. 사칙 연산자와 몫과 나머지 연산자

1) 나머지 연산자 %

2)나누기 연산자 /

나누기 연산자는 두가지 역할을 합니다. 그러면 언제 나누기를 언제 몫 연산을 할까요?

나누기를 하려면 나눔을 당하는 피 젯수 , 나눔을 하는 젯수 두 수가 필요합니다.

몇가지 예를 들면 ,

4. scanf

프로그램 실행시에 변수 값을 키보드로 주는 역할을 하는 것이 scanf 이다.
   #include <stdio.h>

   int main()
   {
       int a;

       scanf("%d", &a);
       printf("a = %d\n", a);
   }
   

7번재 줄의 scanf가 a 가 차지한 공간에 키보드로 입력 받은 데이터를 넣어주는 역할을 하는 입력 전용의 도구이다.

  1. int a; 변수 a 에 대한 공간이 만들어 진다.

  2. scanf("%d",&a); 키보드로 데이터를 입력받아 엔터를 치면 입력 받은 값을 a 공간에 저장 (scanf 를 사용할 시 변수 앞에 & 를 사용한다.)

    키보드로 10 을 입력하고 엔터를 쳤다면

    - scanf 함수는 이삿짐 센터 역할을 하는 함수이다. 우리가 이사할 때 주소를 가르켜 주면 그 주소로 이삿짐을 옮겨준다. c 언어에서 변수의 주소를 나타내는 연산자가 & 이다.

  3. 출력
       a = 10 
       

5. 순간 변신 연산자

이 연산자에 대해서 알아보기에 앞서 나누기 / 연산자에 대해 알아보자. 두 가지 모두 0.5 를 의미할 것 같지만 결과는 c 언어에서는 처음 것은 0 이고 두 번째 것은 0.5 이다.

/ 연산자는 두 가지 얼굴을 가진 연산자이다.(두 가지 얼굴을 가졌다는 것을 overloading 이라고 한다.)

(예제) 다음의 결과는 ?
  1. 7 / 5 1
  2. 7 / 5.0 1.4
  3. 7.0 / 5.0 1.4
화면에 출력할 때는 첫 번째 것의 결과는 정수이므로 %d 로 , 두 번째 세번 째 것은 결과가 실수이니 %f 로 출력해야 한다.
아래 프로그램은 점수와 인원수를 이용하여 평균을 구하려고 짠 프로그램이다. 예상 결과는 21.50
#include <stdio.h>

int main()
{
    int total, cnt;
    float avg;

    total = 215;
    cnt = 10;

    avg = total / cnt;

    printf("%.2f\n", avg);

    return 0;
}
실행결과
21.00

그런데 예상 한 결과는 21.5 인데 기대한 결과가 나오지 않는다.

/ 는 젯수 , 피 젯수 중 적어도 하나가 실수인 경우 나누기 연산을 수행하는데 cnt , total 변수가 정수형 변수이다.

그러면 어떻게 할까? 두 가지 해결 방법이 있다.

방법 1

두 수 중 하나를 실수로 바꾸어야 하는데 숫자이면 숫자.0 형태로 실수화 할수 있으나 변수명.0 형태로 해서 실수로 바꿀수가 없다.

한 가지 방법으로 total , cnt 변수 중 하나를 실수 변수로 사용할 수 있다.

#include <stdio.h>

int main()
{
    int cnt;
    float avg, total; // total을 float으로

    total = 215.0;
    cnt = 10;

    avg = total / cnt;

    printf("%.2f\n", avg);
    return 0;
}
실행결과
21.50

이렇게 하면 원하는 결과를 낼수 있으나 변수의 특성상 이 변수를 실수로 바꾸는것은 바람직 하지 않다.

방법 2
순간 변신 연산자(cast 연산자)를 이용한다.
avg = (float)total / cnt;
(float)total 은 total 변수가 이 순간 실수로 바뀌어 실수 / 정수 형태가 되어 몫이 아닌 나누기한 결과가 avg 가 된다.

#include <stdio.h>

int main()
{
    int cnt, total;
    float avg;

    total = 215;
    cnt = 10;

    // total을 float형으로 변신
    avg = (float)total / cnt;

    printf("%.2f\n", avg);

    return 0;
}
실행결과
21.50

6. 수 분리하기

수를 다룰 경우 주어진 수를 떼어낼 경우가 종종 발생한다

예를 들어 , 수 123 을 일의 자리 3 과 일의 자리수를 떼어낸 숫자 12 를 어떻게 알수 있을까?

123 = 1*100 + 2*10 + 3
출처: dovelet + makecode 

*수정할 사항이 있거나 변경할 부분이 있으면 가차없이 질답에 글을 남겨 주세요.


[질/답]
[홈으로]  [뒤 로]
[푼 후(0)]