[KR]초보자를 위한 C언어 학습 -3

in #kr7 years ago (edited)

안녕하세요. @pepcilia입니다. 이번 포스팅에서 다룰 내용을 소개하겠습니다.

  • 사용자로부터 입력을 받기위해 사용하는 scanf 함수
  • 자료형에 대한 조금 더 다양하고 깊은 이해

윗 내용들을 다루어 보겠습니다. 다음포스팅에서 더 다루어졌으면 하는 부분이나, 이번 포스팅 내용에 대하여 추가할 부분 또는 궁금한 부분이 있으시면 댓글에 적어주시면 최대한 빨리 답변하도록 하겠습니다.
또, 여러가지 예제들을 다루어 보고싶으신분은 백준 온라인 저지 에 대해 설명을 적어놓으신 @geunwoong0624님의 글을 참고하셔서, 해당 부분의 문제를 풀어보시는 것도 좋습니다.


첫 번째로, 프로그램에서 사용자의 입력이 왜 필요할까요?

프로그램에서 사용자의 입력이 없다고 생각해보면, 프로그램은 항상 똑같은 결과만을 출력하기 때문에, 큰 효용가치가 없기 때문입니다.
이전 시간에서 배웠던 printf와 scanf를 인간과 컴퓨터 사이의 관계로 나타내면
printf : computer -> user
scanf : computer <- user
로 간단하게 나타낼 수 있습니다.
사용자의 입력에 대한 필요성은 여기까지 살펴보도록하고, 직접 사용하면서 배워보겠습니다.

#include<stdio.h>
int main(void)
{
     int a=0; //int형 자료형을 가진 a라는 이름을 가진 변수를 선언한 후 0으로 초기화합니다.
     scanf("%d",&a); //scanf 함수를 사용하여 a에 사용자가 입력한 정수를 저장하는 부분입니다.
     printf("a의 값은 %d입니다.",a); //a의 값을 출력하는 부분입니다.
     return 0;
}

scanf함수의 사용법은 우측과 같이 쓰면 됩니다. scanf("형식지정자,&변수명);
변수명 앞에 &기호가 붙는 이유는 나중에 포인터 부분에서 자세히 다루도록 하고, 지금은 넘어가겠습니다.
윗 부분을 이해하기 위해서

  • 사용자로부터 2개의 정수를 입력받고, 덧셈연산을 한 결과를 출력하는 소스를 코딩해보세요.
  • 사용자로부터 3개의 정수를 입력받아, 합계와 편균값을 출력하는 소스를 코딩해보세요.
    해답은 포스팅 제일 아래 부분에 있습니다.
    위의 두 예제로 충분히 scanf함수에 대한 이해가 됫으리라 봅니다. 더 많은 예제는 백준을 참고하시죠.

두번째, 자료형에 대해 설명해보려합니다

앞선 포스팅에서 간단하게 언급했지만, 좀더 세밀한 이해를 필요로 하기때문에 알아 둘 필요가 있습니다..
정수형 자료형은 short, int, long, long long가 있습니다.

위 그림과 같은 차이가 있는데, 비트 수 차이와, 표현가능한 숫자의 범위 차이가 있습니다
비트수는 알아두면 좋다. 그리고 숫자의 범위는 알아두면 좋습니다.
암기해야한다는 뜻이아니라, 대소관계정도만 알아두면 된다는 뜻입니다.
실수형 자료형은 short, double, long double 가있고, 부동소수점 방식으로 표현되는데
이 표현방법은 C언어 강의 이후 자료구조 포스팅에서 살펴보도록하고, 일반적으로 double을 사용한다고만 알고있으면 됩니다..
또, scanf함수에서 float자료형은 %f형식지정자를 사용하고, double자료형은 %lf형식지정자를 사용한다.

이제 문자형에 대해서 알아보겠습니다.

  • 문자는 컴퓨터보다 인간에게 중요하며, 숫자를 이용해서 구현할 수 있습니다.
    *그러기 위해선 공통적인 규격이 필요하며, 현재로썬 아스키 코드를 사용합니다.

    위 표는 암기하실 필요는 없고, 필요할 때 마다 보고쓰시면됩니다.
    아래와 같이 작동하는 소스코드를 작성해보는 것으로 포스팅을 마치겠습니다.

    역시 해답은 포스팅 아래에 있다 .
해답_1
// 사용자로부터 입력 받은 2개의 정수의 합을 계산하여 출력 #include <stdio.h>
int main(void)
{
     int x;   // 첫 번째 정수를 저장할 변수
      int y;  // 두 번째 정수를 저장할 변수
      int sum;
     printf("첫 번째 숫자를 입력하시오:");  // 입력 안내 메시지 출력
     scanf("%d", &x);   // 하나의 정수를 받아서 x에 저장
     printf("두 번째 숫자를 입력하시오:");  // 입력 안내 메시지 출력
      scanf("%d", &y);  //하나의 정수를 받아서 y에 저장
     sum = x + y; //변수 2개를 더한다.
     printf("두수의 합: %d", sum);  // sum의 값을 10진수 형태로 출력
     return 0;
 }
해답_2
#include<stdio.h>
int main(void)
{
     int x;
     int y;
     int z;
     int sum;
     scanf("%d %d %d",&x,&y,&z);     //이렇게 세개의 변수를 동시에 입력받을 수도있다.
     sum = x+y+z;
     printf("합 : %d  평균 :%d",sum, sum/3); //출력과정에서 수식이 와도 상관없다.
     return 0;
}
해답_3
 
#include <stdio.h>
int main(void)
{
    char initial;
    char grade;
    printf("영어 이름 첫글자는 무엇인가요: ");
     scanf(" %c", &initial);
    getchar();
    printf("프로그래밍 과목 학점을 물어보아도 되나요?(A부터 F) "); 
    scanf(" %c", &grade);
    printf("%c군의 프로그래밍 과목 성적은 %c입니다. ", initial, grade);
    return (0);
}

@pepcilia였습니다. 다음은 조건문과 반복문에 대해 알아보겠습니다.
자세히 하려다보니 진도가 느려지는 감이있네요.
유용한 글이라 생각하시면 follow & upvote 부탁드립니다!!

Sort:  

작성자님! 맨 위에 scanf가 scarf로 오타가 난 것 같습니다 ㅎㅎㅎ 쉬운 설명 감사합니다 ^^

ㅎㅎ 수정하겠습니다 !

저랑 비슷한 내용을 포스팅하고 계시는군요!
포스팅할때 참고 많이 하겠습니다ㅎㅎ
정성들여 쓰신글 업봇 팔로우하고 갈게요
제 블로그도 들리셔서 많은 피드백 부탁드려요!

앞으로 잘부탁드려요 ~ 많은교류해요 !