먼지 쌓인 키보드
C언어 기초 내용 정리 (1/2) 본문
* 자료형
문자형 char 1byte
정수형 int 4byte
부동소수형 float 4byte
double 8byte
* 입력함수
scanf("입력형식기호", &변수);
입력형식기호
%c 문자입력
%d 10진수
%x 16진수
%o 8진수
%f float형
%lf double형
%e 지수형
%s 문자열
ex) %x %o사용법
int a=100;
printf("%o", a) 8진법으로 나옴
printf("%x", a) 16진법으로 나옴
* scanf주의할점
scanf("%d%d%d"로 하게 되었을 때 입력을
1 2 3을 하게 되면 첫 번째는 1 두 번째는 “ ”공백으로 입력됨
1[enter]2[enter]3[enter]를 하면 첫 번째 1 두 번째 [enter]가 입력된다.
scanf("%d %d %d", &a, &b, &c);를 하게되면 중간의 공백이 공백이나 enter를 잡아주게되어 사용가능하다
*getchar()함수는 입력받은 문자를 아스키코드 값인 정수형으로 저장하는 것이다.
grade=getchar();//A입력
printf %c grade //문자형 출력, A출력
printf %d grade // 정수형 출력, 65출력
%10f는 왼쪽부터 총 10개의자리를 차지하도록한다
123의 왼쪽에서 7번간후 123이 들어가 총 10개를 차지한다.
%05f는 총 자리른 똑같이 5개고 123이라면 왼쪽부터 2번간후 123인데 왼쪽의 빈칸 2개를 0으로 채운다
%-10f는 왼쪽부터 123이후 오른쪽으로 나머지 7칸이 간다.
* putchar();
grade=getchar();//A입력
putchar(grade);//A출력
int a=5, b=2;
(double)5/2; //2.5
(double)(5/2) //2
* 프로그래밍 규칙
이름은 대문자와 소문자로 구별
변수형은 소문자
함수명은 대소문자 모두가능
상수는 대문자
변수명은 가급적 한글자 사용x
변수명을 어떤 값을 저장하는 변수인지 알수있도록
숫자 1과 대소문자 I, I등을 구별한다
숫자 0과 대소문자 O, o등을 구별한다.
* 연산자
1의 보수
1을 0으로 0을 1로 바꾼다
2의 보수
1의 보수를 취한후 1을 더한다
a++ 후위
++a 전위
* 관계연산자
< <= > >= == !=(a와 b가 다른 경우 참)
a 0 0 1 1
b 0 1 0 1
&& 0 0 0 1
|| 0 1 1 1
^ 0 1 1 0
! !a 1 1 0 0
<< shift left a<<b a를 b만큼 왼쪽으로
>> shift right a>>b a를 b만큼 오른쪽으로
int a=9;
a<<2
00000000 00000000 00000000 00001001 9
00000000 00000000 00000000 00100100 36
a<<n a*2의 n승
음수일 때 그대로
a>>2
00000000 00000000 00000000 00001001 9
00000000 00000000 00000000 0000001001
00000000 00000000 00000000 00000010 2
a>>n a/2의 n승 후 나머지는 버린다.
ex)2.5라면 2로 한다
음수일 때 -2.5는 -3이다.
그 수를 넘지않은 가장 큰 정수이므로 양수일땐 2.5를 넘지안는 큰정수는 2인데 음수일때는 2.5의 가장큰 정수는 -3이다.
* 비트 논리 연산자
&
|
~ 1의 보수
* 조건연산자
(조건식)? 실행문:실행문;
참 거짓
sizeof(자료형)
sizeof(수식)
sizeof(char)
단항>산술>관계>논리>대입
* 우선순위
++ ==
* / %
+ -
>> <<
< <= > >=
== !=
&
^
!
&&
||
* 스위치
switch(c)
{
case 1: printf~~~
break;
case 2:
default : 실행문;
}
* 반복문
for(초기값; 조건식; 증감식)
while(조건식)//조건식이 참일 때 계속 반복
{
}
do
{
}
while(조건식);
continue; 그이후의 반복문 내용은 무시하고 다시 반복문으로 돌아간다.
break; 반복문을 나간다.
* goto문
goto 변수
변수: 실행문;
* 배열
자료형 배열명[배열크기]
int a[4]={1111111, 2222222, 3333333, 444444};
int b[4]={11, 22, 33}//크기보다 작아도됨 초기화 되지 않은 배열 요소는 0으로 초기화 된다.
int c[]={111, 222, 333, 444, 555}//배열크기 생략된다. 크기는 4
int d[4]={11, 22, 33, 44, 55}//크기가 4인데 5개 원소이므로 오류
다차원 배열
int a[2][4]={{1, 2, 3, 4}, {5, 6, 7, 8}};//배열선언 및 초기화
int b[2][4]={1, 2, 3, 4, 5, 6}//차례대로 초기화되어 b[0][1]부터 b[1][1]까지 6개 초기화후 b[1][2], b[1][3]은 선언되지 않았으므로 0으로 초기화된다.
int c[][4]={1, 2, 3, 4, 5, 6, 7, 8];
1234
5678 로 되면서 행의 크기는 2가 된다.
int d[4][] //에러
int nums[5]
sizeof(nums) 배열 전체 크기 5*4
sizeof(nums[0]) nums[0]의 크기
sizeof(nums)/sizeof(int) 배열 수 5
문자열
c[]="abcd";
c[0]c[1]c[2]c[3]c[4]
a b c d \0
크기 5 byte
%s
char name[13];
scanf("%s", name);
char b[][5]={"a","ab","abc","abcd"};
a \0\0\0\0
a b \0\0\0
a b c \0\0
a b c d \0
\0제외하고 4byte크기만큼 저장할수있음
gets puts 함수 문자열의 입출력
char name[10];
gets(name)//name 입력 크기 10byte
puts(name)//name 출력
'공부 관련 > Programming' 카테고리의 다른 글
'module' object is not callable 오류 (파이썬) (1) | 2022.03.26 |
---|---|
C언어 기초 내용 정리 (2/2) (0) | 2019.12.04 |
알고리즘을 시작하는 사람을 위한 [백준 기초 문제 링크] (0) | 2019.12.04 |
[백준 2748번][피보나치 수열] 피보나치 수2 (0) | 2019.02.26 |
[백준 2805번][이분탐색] 나무 자르기 (0) | 2019.02.26 |