[C] C언어 300제 - 입문
001. C 프로그램 시작하기
• 소스
#include<stdio.h>
int main()
{
printf("안녕하세요!\n");
}
• 설명
main () : C 프로그램은 main 함수에서 시작되어 main 함수로 종료되며, 반드시 하나의 main 함수를 포함해야 함
printf (); : printf 함수는 화면에 문자열이나 값을 출력할 때 사용하는 함수
• 결과 화면

002. 변수형 개념 배우기
• 소스
#include<stdio.h>
int main()
{
int a;
int b;
int c;
a = 3;
b = 2;
c = a + b;
printf("%d\n", c);
}
• 설명
int a; : 정수형 변수 a를 정의 (b, c 동일)
a = 2; : 정수형 변수 a에 2를 대입 (b 동일)
c = a + b; : 정수형 변수 c에 a와 b를 더한 값을 대입
• 결과 화면

• 변수형의 정의 및 사용
- 문자형 (값의 범위 : -128 ~ +127 또는 0 ~ 255)
char a; : 문자형 변수 a를 정의
a = 10; : 문자형 변수 a에 숫자 10을 대입
unsugned char b; : 부호 없는 문자형 변수 b를 정의
b = 20; : 부호 없는 문자형 변수 b에 숫자 20을 대입
- 정수형 (값의 범위 : -2,147,483,648 ~ +2,147,483,648 또는 0 ~ 4,294,967,295)
int a; : 정수형 변수 a를 정의
a = 10; : 정수형 변수 a에 숫자 10을 대입
int b; : 정수형 변수 b를 정의
b = -20; : 정수형 변수 b에 숫자 -20을 대입
- 실수형 (값의 범위 : 1.7E-308 ~ 1.7E308)
double a; : 실수형 변수 a를 정의
a = 18.125; : 실수형 변수 a에 18.125를 대입
• 변수명으로 사용할 수 없는 예약어
다음의 C 언어의 예약어들은 변수명 또는 다른 용도로 사용할 수가 없다.
asm / auto
break
case / char / const / continue
default / do / double
else / enum / extern
float / for
goto
if / int
long
register / return
short / signed / sizeof / static / struct / switch
typedef
union / unsigned
void / volatile
while
003. 상수형 개념 배우기
• 소스
#include<stdio.h>
#define X 5
#define Y 18.125
int main()
{
double q;
q = X + Y;
printf("%f\n", q);
}
• 설명
변수 : 변할 수 있는 수
상수 : 변할 수 없는 수
#define X 5 : 정수형 상수 X를 정의
#define Y 18.125 : 실수형 상수 X를 정의
double q; : 실수형 변수 q를 정의
q = X + Y; : 정수형 상수 X와 실수형 상수 Y를 더해 실수형 변수 q에 대입
• 결과 화면

004. 연산자 개념 배우기
• 소스
#include<stdio.h>
int main()
{
int a;
int b;
a = 20;
b = a - 10;
if(a>b)
{
printf("a의 값이 b보다 크다.\n");
}
else
{
printf("b의 값이 a보다 크다.\n");
}
}
• 설명
b = a - 10; : 정수형 변수 a의 값에서 10을 뺀 후 정수형 변수 b에 대입
• 결과 화면

• 연산자의 종류
대입 연산자
변수에 값을 저장할 때 사용
예) =, +=, -=, *=, /=, %=
사칙 연산자
더하기, 빼기, 곱하기, 나누기 등 기본적인 수학 연산에 사용
예) +, -, *, /, %
부호 연산자
숫자의 부호를 표시할 때 사용
예) +, -
(예: -5, +10 등)
증감 연산자
변수의 값을 1씩 증가시키거나 감소시킬 때 사용
예) ++, --
(예: i++, --j 등)
관계 연산자
두 값을 비교하여 참(true) 또는 거짓(false)을 판단
예) ==, !=, >, <, >=, <=
논리 연산자
여러 조건을 조합할 때 사용
예) &&(그리고), ||(또는), !(부정)
조건 연산자
조건에 따라 다른 값을 선택할 때 사용
예) 조건 ? 참일 때 값 : 거짓일 때 값
쉼표 연산자
둘 이상의 표현식을 한 줄에 순서대로 실행할 때 사용
예) (a = 3, b = a + 2)
→ a에 3을 대입하고, b에 a+2 값을 대입함
비트 연산자
이진수(0과 1) 단위로 연산할 때 사용
예) &, |, ^, ~, <<, >>
→ 비트 단위로 and, or, xor, not, 왼쪽 쉬프트, 오른쪽 쉬프트 수행
005. 조건문 개념 배우기 (if~else)
• 소스
#include<stdio.h>
int main()
{
int a;
int b;
a = 20;
b = a - 10;
if(a>b)
{
printf("a의 값이 b보다 크다.\n");
}
else
{
printf("b의 값이 a보다 크다.\n");
}
}
• 설명
if(a>b) {...} : a>b의 조건이 참이면 if의 {...} 문장이 실행됨
else {...} : a>b의 조건이 거짓이면 if의 {...} 문장은 실행되지 않고, else의 {...} 문장이 실행됨
• 결과 화면

006. 순환문 개념 배우기(for)
• 소스
#include<stdio.h>
int main()
{
int i;
int a = 0;
for(i=1; i<=10; i=i+1)
{
a = a + i;
}
printf("1부터 10까지의 합:%d\n",a);
}
• 설명
• 결과 화면

007. 문자열 개념 배우기
• 소스
#include<stdio.h>
int main()
{
printf("문자열 개념에 대해 알아볼까요?\n");
}
• 설명
"" : 더블 쿼테이션(")을 문자 좌우에 "xxx"을 붙여서 문자열로 사용
• 결과 화면

008. 함수 개념 배우기
• 소스
#include<stdio.h>
int count(int value);
int main()
{
printf("1부터 10까지의 합:%d\n",count(10));
printf("1부터 100까지의 합:%d\n",count(100));
printf("1부터 1000까지의 합:%d\n",count(1000));
}
int count(int value)
{
int i;
int c = 0;
for(i=1; i<=value; i=i+1)
{
c = c + i;
}
return c;
}
• 설명
int count(int value); : 정수형 변수 value를 매개변수로 받는 함수 count를 선언
int count(int value){...} : 전달 받은 매개변수 value를 가지고 {...} 문장을 실행
• 결과 화면

• 함수
함수는 반환값으로 정수형 값 외에도 실수형, 문자형 또는 문자열형을 가질 수도 있다.
반복되는 문장이 많을 때 사용
매개 변수 -> 연산(함수의 형태) -> 결과 출력
009. 주석 개념 배우기
• 소스
#include<stdio.h>
int main()
{
int i; // 정수형 변수 i를 정의합니다.
int c = 0; // 정수형 변수 c를 정의하고, 0으로 초기화합니다.
/*
for 문은 다음처럼 실행됩니다.
1. i에 1을 초기값으로 설정합니다.
2. i가 10보다 작거나 같을 때 까지만 순환문은 반복됩니다.
3. 현재의 c의 값과 i값을 더하여 c에 대입합니다.
4. i는 1씩 증가합니다.
*/
for(i=1; i<=10; i=i+1)
{
c = c + i; // c와 i를 더하여 c에 대입합니다.
}
/* "1부터 10까지의 합:55"가 화면에 표시됩니다.*/
printf("1부터 10까지의 합:%d\n",c);
}
• 설명
// : 더블 슬래시(//)를 사용하여 기본 주석을 사용
/*~*/ : 긴 문장에 걸쳐 주석을 사용
• 결과 화면

010. 컴파일 개념 배우기
• 소스
#include<stdio.h>
int main()
{
// int i;
int c = 0;
for(i=1; i<=10; i=i+1)
{
c = c + i
}
printf("1부터 10까지의 합:%d\n",c);
}
• 설명
위 소스 예제에서 c 언어의 문법상 맞지 않아 생기는 컴파일 에러에 대한 설명을 합니다.
HelloWorld.c:8:9: error: use of undeclared identifier 'i' :
HelloWorld.c에서 8번째 줄의 i라는 변수가 정의되지 않았음을 알려주는 에러
HelloWorld.c:10:18: error: expected ';' after expression :
HelloWorld.c에서 10번째 줄의 문장의 끝을 알리는 세미콜론(;)이 빠졌음을 알려주는 에러
• 결과 화면

• 세미콜론을 사용하지 않는 경우
1. #include 문 사용 시
2. #define 문 사용 시
3. main() 함수 사용 시
4. if(조건식) 사용 시
5. for(초기식; 조건식; 증감식) 사용 시
6. {, } 사용 시
• 컴파일러(compiler)
프로그래머가 입력한 코드에 에러가 있는지 여부를 검사여 목적 코드를 생성하는 역활을 한다.
목적 코드는 링커(linker)라는 프로그램에 의해 실행 가능한 프로그램으로 변환되며, 소스 코드는 다음 과정에 의해 실행 가능한 프로그램으로 탈바꿈 되는 것이다.
소스코드 ➡ 컴파일러 ➡ 목적 코드 ➡ 링커 ➡ 실행 가능한 프로그램(exe 프로그램)
이 글은 초보자를 위한 C언어 300제 (김은철 지음, 정보문화사)을 참고하여 작성했습니다.