
컴퓨터는 0과 1만 처리한다. 문자도 숫자로, 즉 0과 1로 처리한다. 그래서 단지 이것을 char, 즉 문자형으로 사용할 것이냐, int형, 즉 정수형으로 사용할 것이냐는, 포맷으로 달라진다.
#include <stdio.h>
int main() {
char a = 'a';
printf("a's value=%d, a's char=%c\n", a, a);
return 0;
}
결과는 다음과 같다
a's value=97, a's char=a
%d는 a의 값을 십진수로 출력하라는 뜻이다.
%c는 a의 값을 문자로 출력하라는 뜻이다.
a는 문자인 'a'로 저장되었지만 포맷에 따라 정수형과 문자형으로 출력 되었다.
ASCII 코드 : 문자와 숫자의 대응표. 1byte (8bit) 로 문자들을 표현했다.
Unicode : 한 문자를 1-4 바이트까지 다양한 길이로 처리한 code.
입력함수
scanf()
키보드로부터 결과를 받아들이는 입력함수
엔터를 눌러야 입력으로 처리된다. (단어 여러개를 따로 입력해야 한다면 엔터로 구분한다)
변수의 타입마다 입력받는 포맷을 달리한다.
int : %d
double : %lf(엘에프)
float : %f
char : %c
short : %hd
long : %ld(엘디)
#include <stdio.h>
int main() {
char a;
printf("문자를 입력하세요\n");
scanf("%c", &a);
return 0;
}
결과출력 방식
"문자를 입력하세요" 라는 질문이 뜬다.
아무 문자를 입력하면 문자형 변수 a 에 저장되고, %c포맷에 따라 그 문자가 입력된다.
형변환
#include <stdio.h>
int main() {
int a;
double b;
b = 2.4;
a = (int)b;
printf("%d", a);
}
결과는 다음과 같다
2
실수형 변수b에는 2.4 라는 값이 저장되어 있다.
a =(int)b;
형변환을 하려면 다음과 같이 괄호안 에 변경하고자 하는 문자형을 입력하고 변수 앞에 적어주면 된다.
(바꾸려는 형) 변수
그러면 a에는 b의 정수부분인 2가 저장된다. 다만 본래의 b는 변하지 않는다.
두 수의 비율
#include <stdio.h>
int main() {
int a, b;
float c, d;
printf("두 숫자 입력 : ");
scanf("%d %d", &a, &b);
c = a / b;
d = (float)a / b;
printf("두 수의 비율 : %f %f", c, d);
return 0;
}
a 에 5, b에 2를 입력하면 결과는 다음과 같다.
두 수의 비율 : 2.000000 2.500000
먼저, a와 b에는 정수형 숫자가 입력 되었다.
c = a/b;
따라서 a/b는 몫인 2만 출력하여 변수 c에 저장되었다.
만약에 a나 b둘 중 하나의 변수가 실수형이라면?
d = (float)a / b;
a를 float로 형변환 하여 b로 나눈 것이다.
컴퓨터는 연산값을 더 큰 자료형에 맞춘다. 따라서 a/b는 실수형인 2.500000으로 출력되었다.
문제 1
임의의 실수에서 소수점 이하 두자리수만 추출하여 정수형 변수에 대입하라. 예를들어 사용자로부터 입력받은 실수 f 가 12.3456이라면 34만 추출한다. 이때 반올림은 고려하지 않아도 상관없다. f 가 달러 단위의 화폐 액수라고할 때 센트 단위만 추출해내는 경우라고 생각하면 된다. 다음 ???? 자리에 적합한 연산식을 작성하는 문제이다.
printf("실수를 입력하시오 : ");
scanf("%f", &f);
i = ? ? ? ?
printf("i=%d\n", i);
이 문제의 핵심은 음수이거나 소수점 이하의 자리수가 없는 경우까지 잘 고려하여 항상 잘 동작하는 코드를 만드는것이다.
예시답안
#include <stdio.h>
int main() {
float f;
int i;
printf("실수를 입력하시오 : ");
scanf("%f", &f);
i = (f > 0)? (f - (int)f) * 100 : -1*((f - (int)f) * 100);
if (i==0) {
printf("i = 00");
return 0;
}
printf("i=%d\n", i);
return 0;
}
'프로그래밍 > C언어' 카테고리의 다른 글
6. c언어 반복문 for, while (0) | 2023.01.31 |
---|---|
5. c언어 if 문 if, if else, else (1) | 2023.01.21 |
3. c언어 연산자 증감, 복합대입, 관계, 로직, 조건, 비트 (0) | 2023.01.20 |
2. c언어 자료형 문자형, 정수형, 실수형, 기수법 (0) | 2023.01.20 |
1. c언어 상수, 변수, 메모리 (0) | 2023.01.10 |
댓글