딩굴댕굴

C 4Day (20160112)

by jennysgap

BOX

자료형 변환

  • 연산식에서의 자료형 변환
    서로 다른 자료형이 연산을 하려고 할 때 주기억 장소에 차지하는 기억 공간의 크기가 작은 자료형이 기억 공간의 크기가 큰 자료형으로 변환하는 것
  • 대입문에 의한 자료형 변환
    연산자 우측에 위치한 피연산자의 자료형이 연산자 좌측에 위치한 피연산자의 자료형으로 변환
  • cast연산자에 의한 자료형 변환
(자료형) 변수 & 상수




형변환 예제

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(void)
{
    int num1;
    float num2=367.78;
 
    num1=num2;
    printf("num1=%d\n", num1);
 
    return 0;
}
cs
  • 실수형이라도 정수형으로 변환 가능
  • 프로그래머들이 밤을 새는 이유 = 논리적인 오류
    num2=367.78 소수점 자리에 숫자가 있지만 이를 num1 정수로 표현할 때 소수점을 없애고 출력하기 때문이다.





강제 형변환 예제

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main(void)
{
    int num1=25, num2=3;
 
    printf("num1 / num2 = %d\n", num1 / num2);
    printf("num1 / num2 = %f\n", (float)num1 / (float)num2);
    printf("num1 * num2 = %d\n", num1 * num2);
    return 0;
}
cs

정수 / 정수 = 정수 (?)

정수끼리 나눈다고 하더라도 정수가 나온다는 보장없음. 그러므로 소수점을 표현하기 위해 (자료형: float)을 사용하는데 이를 'cast연산'이라고 한다.





정렬 예제

#include <stdio.h>

int main(void)

{

printf("%5d\n", 10);                    //5칸 오른쪽 정렬

printf("%-5d\n", 10);                    //5칸 왼쪽 정렬

return 0;

}





표준 입력 함수

scanf :   사용자에게 직접 값을 받아 표현하는 함수. printf와 사용법이 똑같은데, 하나 다른점은 변수명 앞에 무조건 &연산자를 입력해야 한다.

#include <stdio.h>

int main(void)

{

int num;                        // 선언을 꼭 해야 한다.


//scanf("서식문자", &변수명);            //scanf 사용법, 입력방법

printf("정수를 하나 입력하세요 : ");

scanf("%d", &num);

printf("입력하신 정수는 %d입니다.\n\n", num);

return 0;

}





표준입력함수(실수) 예제

#include <stdio.h>

int main(void)

{

float num;


printf("실수를 하나 입력하세요 : ");

scanf("%f", &num);

printf("입력하신 실수는 %f입니다. \n\n", num);


return 0;

}


double로 입력하면 값이 이상해짐. 그렇다면 못쓸까요? No

입력 값을 받을 때, %|f로 받으면 됨

#include <stdio.h>

int main(void)

{

double num;


printf("실수를 하나 입력하세요 : ");

scanf("%|f", &num);

printf("입력하신 실수는 %f입니다. \n\n", num);


return 0;

}





표준입력함수(문자) 예제

#include <stdio.h>

int main(void)

{

char num;


printf("문자를 하나 입력하세요 : ");

scanf("%c", &num);

printf("입력하신 문자는 %c입니다. \n\n", num);


return 0;

}





표준입력함수(정수+실수) 예제

#include <stdio.h>

int main(void)

{

int num1;

float num2;


printf("정수를 하나 입력하세요 : ");

scanf("%d", &num);

printf("입력하신 정수는 %d입니다. \n\n", num1);


printf("실수를 하나 입력하세요 : ");

scanf("%f", &num);

printf("입력하신 실수는 %f입니다. \n\n", num2);


return 0;

}






표준입력함수(문자+문자) 예제

#include <stdio.h>

int main(void)

{

int num;

char ch;


printf("정수를 하나 입력하세요 : ");

scanf("%d", &num);

printf("입력하신 정수는 %d입니다. \n\n", num);


fflush(stdin);


printf("문자를 하나 입력하세요 : ");

scanf("%c", &num);

printf("입력하신 문자는 %c입니다. \n\n", ch);


return 0;

}

문자 + 문자 예제는 몰라도 됨 (그러나 수업시간에 했으니 적어봄)

문자같은 경우 엔터나 스페이스도 인식하기 때문에 버퍼를 지워주기 위해 fflush를 사용





표준입력함수(정수의 합) 예제

#include <stdio.h>

int main(void)

{

int n1, n2, sum;


printf("덧셈할 두 수를 입력하세요.. \n ");

scanf("%d %d", &n1, &n2);

sum=n1+n2;

printf("두 수의 합은 %d입니다. \n\n", sum);


return 0;

}

두 개 정수를 입력받아서 합을 출력하는 것

* 계행(\n)은 printf 출력할 때만 사용함 (scanf에는 계행 사용 No!)





산술연산자




'%' 연산의 사용예

  • 짝, 홀수 구분
    10%2 == 0 (짝수)
    15%2 == 1 (홀수)
  • 배수 구분
    123%3 == 0 (3의 배수)
  • 숫자의 자리수 구분하기
    156%10 == 6
    156/10 == 15
    15%10 == 5
    15/10 == 1



산술연산자 예제
#include <stdio.h>
int main(void)
{
int su1=20, su2=3;

printf("%d + %d = %d\n", su1, su2, su1+su2);
printf("%d - %d = %d\n", su1, su2, su1-su2);
printf("%d * %d = %d\n", su1, su2, su1*su2);
printf("%d / %d = %d\n", su1, su2, su1/su2);
printf("%d %% %d = %d\n", su1, su2, su1%su2);
return 0;
}


값 입력 받기

#include <stdio.h>
int main(void)
{
int su1=, su2;

printf("구하고 싶은 값을 적어주세요..\n");
scanf("%d %d", &su1, &su2);

printf("%d + %d = %d\n", su1, su2, su1+su2);
printf("%d - %d = %d\n", su1, su2, su1-su2);
printf("%d * %d = %d\n", su1, su2, su1*su2);
printf("%d / %d = %d\n", su1, su2, su1/su2);
printf("%d %% %d = %d\n", su1, su2, su1%su2);
return 0;

}









20160112 C언어 4day.pages


20160112 c언어 4day.txt





반응형

'BOX' 카테고리의 다른 글

C 7Day (20160115)  (0) 2016.01.21
C 6Day (20160114)  (0) 2016.01.20
C 5Day (20160113)  (0) 2016.01.20
C 3Day (20160111)  (0) 2016.01.20
C 2Day (20160108)  (0) 2016.01.20

블로그의 정보

jennysgap

jennysgap

활동하기