코딩/C언어

c언어 - _01_교재

tree0505 2025. 6. 25. 10:38
반응형
    • 정보처리기사실기c언어

  • _01_교재

  • 수업001_변수와출력.cpp
  • 이 형태가 기본 구조이다. 
  • #include
    • => import 와 비슷하다. 
    • 포함하다. 
    • <stdio.h>을 포함한다. 
    • <> : 꺽쇠는 내부에 있는 파일 
    • std는 파일 이름 
    • 내부에 있는 파일을 나는 포함시킬꺼야. 
  • c 언어는 출력문이 printf( ) ; 이다.  
    • #include <stdio.h> 이게 없으면 printf(); 를 못 쓴다. 
    • 자바스크립트로 치면. 도큐먼트 라이트 
#include <stdio.h>

int main(void) {
    
    return 0;
}
#include <stdio.h>

int main(void) {
    //여기다가 코딩을 한다. 

    int a = 1, b= 2, c = 3; 
    //이렇게 한 줄로 쓸 수 있다. 

    //출력문 
    printf("%d\n", a);
    printf("%d\n",b);

    printf("%d %d %d\n",a,b,c); //한줄로 적을 수 있다. 
    //갯수가 안 맞으면 안된다. 
    
    //"%d" => decimal의 약자  . 숫자. 정수 . 10진수 
    //\n => 줄바꿈 

    //int a = 1; 
    //int b = 2; 
    //int c = 3; 
    
    return 0;
}
#include <stdio.h> // printf 를 사용할수있게 해준다. 

int main(void) { // c언어는 main 함수를 필수로 만들어야한다. 

	// int 는 정수형 자료형이다. 
	// = 은 대입연산자이다.  
	// ; 은 문장의 마침표이다. 
	// c언어는 사용하는 모든변수를 미리선언하고 코딩한다. 

	//int a = 1; int b = 2; int c = 3; 

	int a = 1, b = 2, c = 3; // 변수는, 로 연속으로 선언할수있다. 

	printf("%d\n", a); // 각자 출력 
	printf("%d\n", b); // \n은 줄바꿈
	printf("%d\n", c);
	printf("%d %d %d\n", a, b, c);  // 한줄로 출력 
	
	return 0;
}

  • 수업001_변수와출력02.cpp
#include <stdio.h> 

int main(void) {

	int a, b; //둘다 1이 들어갔다. 
	a = b = 1; // 한번에 값저장하기 
	printf("%d %d\n", a, b);
	
	return 0;
}

  • 수업001_변수와출력03.cpp
  • 자료형이 2가지가 나왔다. 
    • int 정수 
    • char 캐릭터 => 글자 1개 
      • c언어 글자 1개는 ' ' (홑따음표) .작은 따옴표 
#include <stdio.h> 

int main(void) {

    //int가 아니라. char이다. 
	char a = 'a';
	//char b = '가';  //한글 '가'는 한글자가 아니다. 두 글자다. 그래서 에러가 난다. 
	
	// 한글 은 2byte이기때문에 정상출력되지않는다.
	// 추후 배열로 해결한다.

	//printf("%c %c\n", a, b);
    printf("%c\n", a);

	return 0;
}

  • 수업001_변수와출력04.cpp
#include <stdio.h>
//랜덤을 쓸려면 임포트를 2개를 더 해야 한다. 
#include <stdlib.h> 
// srand(); //스탠다드 라이브러리 
#include <time.h> // time(NULL)

int main(void) {
	
	srand(time(NULL)); //랜덤을 출력할 수 있다. 

	int n = rand() % 6 + 1; // 1~6
	//rand() % 6 => 0~5 
	printf("%d ", n);

	return 0;
}

  • 수업001_변수와출력05.cpp
#include <stdio.h>

int main(void) {

	const int n = 3;
	//int 앞에 const를 붙일 수 있다. 
	//const 상수가 된다. 
	//자바의 fianl과 같다. //final int a = 3; //값을 못 변경 

	// const 는 값변경이 불가능하다.
	//n = 5; //에러남 
	printf("%d ", n);

	return 0;
}

  • 수업001_변수와출력06.cpp
#include <stdio.h>

// 전역변수 
int n = 20;
int arr[] = {10,20,30};
//변수가 밖에 적을 수도 있다. 

int main(void) {
	//나중에 함수가 더 생기면 차이가 있다.
	//지금은 함수가 1개밖에 없어서 별 차이가 없다.  

	printf("%d\n" , n);
	
	printf("%d %d %d\n" , arr[0] , arr[1] , arr[2]);

	return 0;
}

  • 수업001_변수와출력07.cpp
#include <stdio.h>

// (전처리기)
// 보통상수를 표현할때 사용한다. 
// 일반적으로 대문자로 표기해서 알아보기쉽게 한다. 

#define SIZE 3
//이것이 const int SZIE = 3;와 같다고 생각하면 된다. 
//여기는 마지막에 ;(세미콜론)붙이지 않는다. 

int main(void) {

	//const int SZIE = 3;  
	//못 바꾼다고 생각하면 된다. 

	printf("%d \n" , SIZE);

	return 0;
}

  • C언어가 왜 망했나?
    • 너무 이상한게 많다. 
    • 그래서 망했다. 
    • 70년대 부터 사용해서 기능이 너무 많다. 
    • 개발자들이 너무 어려워 한다. 
    • 이 세상에 라이브러리는 C언에 다 있다. 

  • 수업002_생명주기.cpp
#include <stdio.h> 

int main(void) { 

	int a = 1, b = 2, c = 3; 
	printf("%d %d %d\n", a, b, c); 
	//출력 1 2 3  

	{ //중괄호 안에 있으면 죽는다. 
		int a = 4;
		// 위에 int a가 있지만 만들 수 있다. 

		b = a;
		printf("%d %d %d\n", a, b, c);
		//출력 4 4 3 
		{
			int c = 60;
			a = c;
			printf("%d %d %d\n", a, b, c);
			//출력 60 40 60 
		}
	}
	//이렇게 시험문제를 낸다. 
	printf("%d\n",a);
	//출력 1 
	return 0;
}

  • 수업003_연산자.cpp
#include <stdio.h> 

int main(void) {

	int a, b;
	a = 2;
	b = 1;
	int c1 = b + a;
	int c2 = b - a;
	int c3 = b * a;
	int c4 = b / a; // 정수형은 몫이 저장된다. 
					// 1 /2 => 0.5 => 0이 저장됨. 몫 
	int c5 = b % a;	//1 % 2 => 1 

	printf("%d\n", c1);
	printf("%d\n", c2);
	printf("%d\n", c3);
	printf("%d\n", c4);
	printf("%d\n", c5);
	return 0;
}

  • 수업004_증감연산자.cpp
  • 증감연산자가 c 언어에서 악명이 높다. 
#include <stdio.h> 

int main(void) {

	/*
		증감연산자 

		앞증가 연산자 ++a;
		뒷증가 연산자 a++;

		앞감소 연산자 --a;
		뒷감소 연산자 a--;

		[1] 앞 증감연산자는 = (대입연산자) 보다 우선순위가 높다.
		[2] 뒷 증감연산자는 = (대입연산자) 보다 우선순위가 낮다. 
	*/
	int a, b, c, d;
	a = 1;
	b = 2;
	c = 10;
	d = 20;
	
	//뒷증가 
	printf("%d\n", a++); 
	//출력 1 
	//우선순위가 낮아서. 출력이 되고 그 이후에 증감이 된거다.
	//출력보다 우선순위가 낮다.  
	//안 보이는데. 여기서 a=2가 된다. 
	printf("%d\n", a);
	//출력 2
	//2번째 출력했을때. 그제야 2가 나온다. 

	printf("%d\n", b--);
	//출력후 b가 1이 된다. 
	printf("%d\n", b);
//---------------------------------
	//앞증가 
	printf("%d\n", ++c);
	//출력 11 
	printf("%d\n", c);
	//출력 11 

	printf("%d\n", ++d);
	printf("%d\n", d);
	
	return 0;
}

  • 수업004_증감연산자02.cpp
#include <stdio.h> 

int main(void) {

	/*
		증감연산자

		앞증가 연산자 ++a;
		뒷증가 연산자 a++;

		앞감소 연산자 --a;
		뒷감소 연산자 a--;

		[1] 앞 증감연산자는 = (대입연산자) 보다 우선순위가 높다.
		[2] 뒷 증감연산자는 = (대입연산자) 보다 우선순위가 낮다.
	*/
	int a, b;
	a = 1; //a에 1이 들어갔다. 
	b = a++; //b = 1 , a = 2 
	//b한테 먼저 주고. 그 다음에 a가 2가 된다. 
	printf("%d %d\n", a, b);
	// 출력 2 1 
	
	return 0;
}

  • 수업005_변수선언.cpp
#include <stdio.h>

int main(void) {

	int a = (10, 20);
	printf("%d\n", a);  // 20

	int b = (10, (20, 30));
	printf("%d\n", b);  // 30


	int c = (10, (20, 30) ,40 , 50);
	printf("%d\n", c);  // 50

	//맨 뒤의 것이 저장이 된다. 
	
	return 0;
}

  • _01_문제

  • 문제002_생명주기.cpp
#include <stdio.h>

int main(void) {
	int a = 1, b = 2, c = 3;
	{
		int b = 4, c = 5;
		a = b;
		{
			int c;
			c = b;
		}
		printf("%d %d %d\n", a, b, c); 
		//출력 4 4 5 
	}
	return 0;
}

  • 문제003_우선순위.cpp
#include <stdio.h> 

int main(void) {
	 
	int x = 7 / 2; // 몫 // 3 
	int y = 3 + 2 * x; //9 

	printf("%d", y); //9
	return 0;
}

  • 문제004_증감연산자.cpp
#include <stdio.h> 

int main(void) {

	int a, b;

	a = 4 * (1 / 2); //0 
		//1 / 2 => 0 
	b = a++; 
	//0을 주고 증가됬다. 
	//b = 0, a = 1 
	printf("%d", b); //0
	return 0;
}

  • 문제004_증감연산자02.cpp
#include <stdio.h> 

int main(void) {

	int a = 5, b = 5;
	a *= 3 + b++;
	//우선순위
		//1번 +  => 8 
		//2번 *=  => a = 40 
		//3번 b++ = > b = 6 

	printf("%d %d\n", a, b);
	//40 6 

	return 0;
}

/*
	[해설]
		a = 5, b = 5

		a *= 3 + b++;
		[1] x = 3 + b; // 8
		[2] a = a * x; // 40
		[3] b = b + 1; // 6
*/

  • 문제004_증감연산자03.cpp
#include <stdio.h>

//굉장히 중요함. 문제 
//1번 &&2번. 
	//는 1번이 false이면 2번을 하지 않는다. 
//1번 || 2번 . 
	//은 1번 true이면 2번을 안한다. 

//c언어는 true false가 없다. 
//그냥 1과 0이다. 
int main(void) {

	int a = 3, b = 4, c = 2;
	int r1, r2, r3;

	r1 = b <= 4 || c == 2; //r1 = 1 
	//b <= 4 이게 맞으면 . r1에 1이 저장됨. => true이기 때문에 
	//c == 2 은 동작을 안 한다.  (true이기 때문에 동작x )
	r2 = (a > 0) && (b < 5); //r2 = 1 
	//(a > 0) 사실 true 
	//(b < 5) 동작함 

	printf("%d\n", r1 + r2);
	//2 
	return 0;
}

  • 문제004_증감연산자04.cpp
#include <stdio.h>

int main(void) {

	int a = 3 + 5, b = 1, c;
	int ap, bp;
	ap = a++; //ap => 8 , a = 9 
	bp = ++b;	//b = 2, bp = 2 
	b = 3 * (ap == 8); 
	//ap == 8 ture 그래서 1 
	//b = 3 
	c = 5 * (ap != 8);
	// ap != 8 false =  0
	//c = 0 
	

	printf("%d %d %d %d %d\n", a , b , c, ap, bp);
	// 9 3 0 8 2 
	return 0;
}

  • 문제005_변수선언.cpp
  • 맨 뒤의 것이 저장 됨 
#include <stdio.h>

int main(void) {

	int a = (10, 20);
	printf("%d\n", a);  

	int b = (10, 20, 30);
	printf("%d\n", b); 

	int c = (10, (20, 30), 40);
	printf("%d\n", c);  

	return 0;
}

 

반응형