[입력함수]
키보드로 입력을 하는 기능이 있는 함수
-전제조건: 변수를 미리 생성해야 한다.
scanf("형식지정자",&변수)
<형식지정자>
int %d
float %f
double %lf
char %c
char[] %s
&변수: 변수의 주소값
<실습> 정보입력.c
나이, 키, 이름, 혈액형(A,B,O있다고 가정한다)을 입력받아 다음과 같이 출현하도록 구현
(출력형식)
나이:~세
키:~CM
이름:~님
혈액형:~형
#include <stdio.h>
int main() {
int age;
double height;
char name[20];
char blood;
char address[100];
printf("나이:");
scanf("%d",&age);
printf("키:");
scanf("%lf", &height);
printf("이름:");
scanf("%s",name); //문자열변수 & 안붙임
printf("혈액형:");
scanf(" %c", &blood);
printf("주소:");
scanf(" %[^\n]", address);
printf("입력한 나이:%d세\n",age);
printf("입력한 키:%.1lfcm\n", height);
printf("입력한 이름:%s님\n", name);
printf("입력한 혈액형:%c형\n",blood);
printf("입력한 주소:%s\n", address);
return 0;
}
문자형 입력받을 때 오류가 나는 이유는?
문자형은 1byte로 입력을 받는데 문자형을 저장해야하는 버퍼에 이전에 입력했던 엔터키가 저장되어 이미 입력이 있다고 착각을 한다.
->따라서, 문자형을 입력받기 전에는 버퍼를 비위주는 작업이 필요하다.
방법은
scanf(" %c",&변수명);
형식지정자를 사용하기 전에, 한칸을 띄워줌으로써 버퍼를 비워준다.
패턴문자
%[^\n]: 엔터를 제외한 나머지는 다 저장해라
문자열에 값 저장하기
char 변수명[] = "넣을 문자열값";
초기화하지 않고 선언하기
char 변수명[크기];
->해당 크기만큼 문자 저장이 가능한 문자열 변수 생성;
문자열은 입력받을때 변수명 앞에 &를 붙히지 않는다.
->문자열 변수는 변수명 자체가 변수의 주소이기 때문이다.
[연산자]
연산 기능이 있는 문자를 말한다
ex)
식: 10+20
연산자: +
피연산자: 10,20
연산자의 종류
산술 연산자
비트 연산자
관계 연산자
논리 연산자
삼항 연산자
대입 연산자
단항 연산자
[산술 연산자]
+,-,*(곱셈),/(나눗셈)
%(나머지)
5%2 = 1
11%4 = 3
-> 홀짝구분시 많이 사용
N%2 = 1
N:홀수
N%2 = 0
N:짝수
[비트 연산자]
비트(bit):데이터의 최소 단위
비트 연산자:비트 단위로 연산을 하는 문자
1bit x8 = 1byte
비트 덧셈 연산
7=111(2)
5=101(2)
12=1100(2)
-비트 논리 연산자
1 or 0
논리연산: 참,거짓의 값으로 하는 연산
비트연산: 비트 단위로 하는 연산
1: 참
0: 거짓
연산자의 종류
and & : A 그리고 B가 참일때만 결과가 참
or | : A 또는 B가 참이라면 결과가 참
xor ^ : A 와 B가 서로 다를때 결과가 참
not ~ : A의 결과가 참이면 거짓, 거짓이면 참
[and] 그리고
A B 결과
1 1 1
0 1 0
1 0 0
0 0 0
[or] 또는
A B 결과
1 0 1
0 1 1
0 0 0
1 1 1
[xor] 서로다른
A B 결과
1 1 0
0 1 1
1 0 1
0 0 0
[not] 부정
A 결과
1 0
0 1