티스토리 뷰


본 강좌는 아래 동영상 강좌와 같이 진행됩니다. 되도록이면 동영상과 같이 보시는 것을 추천합니다.

 

 

유튜브 채널 가기

 

강좌 5편 동영상 보기

 

 


 

 

 이번시간에는 지난시간에 이어 연산자를 사용한 연산을 해보고, 이를 화면에 출력하는 '출력문'에 대해 알아보도록 하겠습니다.

 

 

 

 1. 연산자를 이용한 연산

 

 지난번에 만들었던 성적관리 프로그램 프로젝트인 'Grade Manager' 를 열어봅시다. 지난시간까지 우리는 변수만 선언해두었고 나머지 작업은 아무것도 하지 않았습니다. 이제 연산자도 배웠으니 점수의 총점과 평균을 내 봅시다. 다음의 코드에서 빨간 부분을 해당 위치에 추가해줍니다.

 

#include <stdio.h> 

 

void main()

{

char name[20] = "홍길동";   // 이름

char grade = 'B';                 // 등급

int scoreKOR = 80;              // 국어점수

int scoreMAT = 75;              // 수학점수

int scoreENG = 86;              // 영어점수

int scoreSCI = 92;               // 과학점수

 

int scoreTotal = 0;                   // 총점

float scoreAverage = 0.0F;       // 평균

 

// 총점 계산

scoreTotal = scoreKOR + scoreMAT + scoreENG + scoreSCI;

// 평균 계산

scoreAverage = scoreTotal / 4;

 

}

 

 총점을 계산할 int형 변수를 하나 선언해주었고, 평균을 소수점까지 계산하기 위해 float형 변수를 선언해주었습니다. 총점은 모든 점수를 더해주면 계산이 되고, 평균은 총점을 과목수로 나눈 값이 될 것입니다.

 

이렇게 추가하고 '컴파일'을 해봅시다. '컴파일'이란 '빌드'와 달리 구문 분석을 통해 코드가 오류가 있는지만 검사합니다.

  


 메뉴에서 '빌드' → '컴파일' 을 누릅니다. 단축키는 'Ctrl' + 'F7' 입니다.

  


 컴파일을 하면 아래에 다음과 같이 'Waring' 이 뜬걸 볼 수 있습니다. 이는 '경고' 라는 뜻으로, 내용을 보면 'int'형을 'float' 형으로 변환하면서 데이터가 손실될 수 있다고 알려줍니다.

 

 변수는 보통 자신의 자료형과 같은 자료형의 값이 들어가야 정상적으로 동작합니다. 지금 우리는 평균을 내면서 float형 변수에 int형 변수인 scoreTotal을 과목수인 4로 나눈 'int'형을 넣으려고 했었습니다. 정수형을 정수형으로 연산한 값은 정수형이 됩니다. 그래서 저런 경고문구가 뜬 것이죠. 실제로 int형은 소수점이 없기 때문에 저렇게 나눈 결과값은 소수점이 없는 값일 것입니다. 위의 코드중에서 평균값 계산하는 부분을 다음과 같이 바꿔줍시다.

 

// 평균 계산

scoreAverage = (float) scoreTotal / 4;

 

 scoreTotal 변수 앞에 '(float)' 이 추가되었습니다. 이것은 '형전환 연산자' 또는 '형변환 연산자' 라 하며, 여기에서는 scoreTotal 변수를 float형으로 임시로 바꾸게 되며, 그것을 4로 나눠주게 됩니다. 여기서 중요한 사실은 정수형을 정수형으로 연산하면 결과는 정수형이 되지만, 실수형을 정수형으로 연산하거나, 정수형을 실수형으로 연산하게 되면 결과값은 실수형이 된다는 것입니다. 다시한번 정리하자면

 

// 평균 계산

scoreAverage =  scoreTotal / 4;    // int / int

// 소수점 아래 값 손실

 

scoreAverage = (float) scoreTotal / 4;    // float / int

// float을 int로 나누어도 float형이므로 손실 없음

 

scoreAverage = scoreTotal / 4.0F;    // int / float

// int를 float로 나누어도 float형이므로 위의 결과와 같음

 

 위의 예와 같이 계산식에서 어떤 것이든 float형이면 결과는 float형이란걸 알 수 있습니다. 편한 대로 사용하시면 되겠습니다.

 

 

2. 출력문

 

 이제 연산은 끝났으니 출력을 해보겠습니다. 아래의 코드를 추가합니다.

 

#include <stdio.h> 

 

void main()

{

char name[20] = "홍길동";   // 이름

char grade = 'B';                 // 등급

int scoreKOR = 80;              // 국어점수

int scoreMAT = 75;              // 수학점수

int scoreENG = 86;              // 영어점수

int scoreSCI = 92;               // 과학점수

 

int scoreTotal = 0;            // 총점

float scoreAverage = 0.0F;       // 평균

 

// 총점 계산

scoreTotal = scoreKOR + scoreMAT + scoreENG + scoreSCI;

// 평균 계산

scoreAverage = (float) scoreTotal / 4;

 

// 화면 출력

printf("%s의 성적\n", name);

printf("국어 점수 : %d\n", scoreKOR);

printf("수학 점수 : %d\n", scoreMAT);

printf("영어 점수 : %d\n", scoreENG);

printf("과학 점수 : %d\n", scoreSCI);

printf("총점 : %d\n평균 : %f\n", scoreTotal, scoreAverage);

}

 

  'Ctrl' + 'F5' 를 눌러 실행해봅시다.

  


  결과값이 잘 나오는 것을 알 수 있습니다.

 

 이제 코드를 살펴보겠습니다. 두번째시간에 'HelloWorld'를 만들면서 보았던 printf() 문이 보입니다. 그때 이것이 화면 출력을 담당하는 녀석이라고 설명을 잠깐 하였습니다만, 이제 사용하는 형식을 알아보도록 하겠습니다.

 

printf("문자열 형식", 값, .... 값);

 

 문자열 형식이란건 여러가지 요소가 복합적으로 들어가는데, 기본적으로는 화면에 출력하고 싶은 문자열을 넣어줍니다.

 

printf("대한민국"); 

 

출력결과

 

대한민국

 

  여기에 우리가 키보드로 입력할 수 없는 문자를 넣어줄 수 있습니다.

 

 /n

 다음줄로 이동

 /r

 같은줄의 맨 처음으로 이동

 /t

 Tab 문자 (일정간격 띄움)

 

 printf("대한민국\n만세");

 

화면 출력

 

대한민국

만세 

 

  특수문자 " 나 \를 출력하려면 '\"', '\\' 와 같이 \뒤에 써줍니다.

 

printf("\"아버지가방에들어가신다.\"");

 

출력 결과

 

"아버지가방에들어가신다."

 

 중간에 어떤 변수의 값을 출력하고 싶을때는 다음과 같은 형식을 사용합니다.

 

 서식문자

 기능

 %d

 short, int

 %ld

 long

 %f

 float, double

 %c

 char (단일 문자)

 %s

 char[] (문자열)

 %x

 16진수

 

이런 서식문자를 ""안에 넣어두고 그에 대응하는 변수나 상수를 뒷부분에 순서대로 붙여줍니다. 반드시 서식문자의 갯수와 순서를 똑같이 맞춰주어야 합니다. 다음과 같이

 

int a = 0, b = 1, c = 2;

printf("a = %d b = %d c = %d", a, b, c);

 

 큰따음표 안의 %d의 갯수와 큰따음표 밖의 변수 갯수가 동일한 것을 알 수 있습니다. 이제 다시 이부분을 살펴봅시다.

 

printf("총점 : %d\n평균 : %f\n", scoreTotal, scoreAverage);

 

 총점 부분은 int형 변수 scoreTotal을 출력하기 위해 '%d'를 사용했고, 평균부분에는 float형 변수 scoreAverage를 출력하기 위해 '%f'를 사용한 것을 알 수 있습니다. 그런데 평균 부분의 소수점 아래 부분이 6자리나 출력이 되어 보기 좋지 않으므로 한자리만 출력해보도록 하겠습니다.

 

printf("총점 : %d\n평균 : %.1f\n", scoreTotal, scoreAverage);

 

 이렇게 '%'와 'f' 사이에 '.1'을 넣어주면 소수점 첫번째 자리까지 출력하라는 서식을 지정 할 수 있습니다. 여기서 남는 부분은 반올림 돼서 결과는 '83.3'이 출력되게 됩니다.

 

 아래는 이번시간에 수정한 최종 소스코드입니다.

 

#include <stdio.h> 

 

void main()

{

char name[20] = "홍길동";   // 이름

char grade = 'B';                 // 등급

int scoreKOR = 80;              // 국어점수

int scoreMAT = 75;              // 수학점수

int scoreENG = 86;              // 영어점수

int scoreSCI = 92;               // 과학점수

 

int scoreTotal = 0;            // 총점

float scoreAverage = 0.0F;       // 평균

 

// 총점 계산

scoreTotal = scoreKOR + scoreMAT + scoreENG + scoreSCI;

// 평균 계산

scoreAverage = (float) scoreTotal / 4;

 

// 화면 출력

printf("%s의 성적\n", name);

printf("국어 점수 : %d\n", scoreKOR);

printf("수학 점수 : %d\n", scoreMAT);

printf("영어 점수 : %d\n", scoreENG);

printf("과학 점수 : %d\n", scoreSCI);

printf("총점 : %d\n평균 : %.1f\n", scoreTotal, scoreAverage);

}

 

 이것으로 변수를 선언해서 계산하고 출력하는 것까지 모두 해보았습니다. 다음시간에는 여기에 사용자의 입력을 받는 부분을 만들어보도록 하겠습니다.

 


댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30