코딩/C언어

c언어 - _01_교재=> 수업006_조건문 ~ 수업010_스위치02 , _01_문제 => 문제006_조건문 ~ 문제010_스위치02 (1~3)

tree0505 2025. 6. 26. 10:34
반응형
    • _01_교재

  • 수업006_조건문.cpp
#include <stdio.h>

int main(void) {
	/*
		조건문은 내용이 한줄일경우 {} 를 생략할수있다. 
	*/
	//c언어는 중괄호를 생략할 수 있다. 문제에 나온다. 

	int a = 10;
	if (a == 10) a = 30;
	else a = 20;
	printf("%d\n", a);
	return 0;
}

  • 수업006_조건문02.cpp
#include <stdio.h>
//bool 을 사용하기 위해 include를 해야한다. 

int main(void) {

	int i = 3;
	int j = 4;

	bool check = (++i > j--); // 0 
	// 4 > 4(j는 아직 안 되서), 그 다음에 j = 3 
		//꺽쇠를 하고 나서 j = 3 이 된다. 
		//j-- (--)가 우선순위가 낮아서 꺽쇠가 되고 숫자가 준다. 
		// ++i > j 이걸 먼저 하고 그 다음에 j--가 된다 
	//거짓이니까. c언어는 0으로 저장된다. 


	printf("%d\n", check); //0
	printf("%d %d\n", i, j); //4, 3

	bool check2 = (i++ < --j); //0 
	//4 < 2 , i = 5 
	//비교할 때는 4 < 2 인데, 비교후 i가 5가 된다. 

	printf("%d\n", check2); //0 
	printf("%d %d\n", i, j); // 5 2 

	j = i-- - --j;
	// 5 - 2 => j = 4, i = 4 
	printf("%d %d\n", i, j); // 4 4 

	return 0;
}

  • 수업007_실수.cpp
#include <stdio.h>

int main(void) {

	/*
		실수 자료형
		double 8바이트
		float  4바이트
	*/
	//실수는 float이라고 쓴다. 
	//출력할 때는 %f를 쓴다. 
	//%d => 정수 

	float f_value = 5.65;
	float f_value2 = 5.61;
	printf("%f %f \n", f_value, f_value2 );

	// 자리수제한 .두번째 자리에서는 반올림한다. 
	printf("%.1f %.1f  \n", f_value, f_value2);


	return 0;
}

  • 수업007_실수02.cpp
#include <stdio.h>

int main(void) {

	/*
		실수 자료형
		double 8바이트
		float  4바이트
	*/
	// double에 넣으나 float에 넣으나 똑같다. 

	double d_value = 5.65;
	double d_value2 = 5.61;
	printf("%f %f \n", d_value, d_value2);

	// 자리수제한 .두번째 자리에서 반올림한다. 
	printf("%.1f %.1f \n", d_value, d_value2);

	return 0;
}

  • 수업008_형변환.cpp
#include <stdio.h>

int main(void) {

	/*
		실수 자료형
		double 8바이트
		float  4바이트
	*/

	float f_value = 5.61;
	double d_value = 5.65;

	//int로 바꾸겠다.
	//int는 정수 . 소수점이 떨어져 나간다. 
	int n1 = (int)f_value;
	int n2 = (int)d_value;
	printf("%d %d\n", n1, n2);
	return 0;
}

  • 수업009_삼항연산자.cpp
  • 삼항연산자 
    • if문을 한줄로 적은것 
    • 조건 ? a : b 
    • 조건이 참이면 a 
    • 조건이 거짓이면 b 
#include <stdio.h>

int main(void) {


	/*
		삼항연산자
		변수 = (조건) ? 참 : 거짓;
		조건이참이면 ? 뒤의값 이 변수에저장
		조건이거짓이면 : 뒤의 값이 변수에저장
*/
	//삼항연산자란? 
		//if문을 한줄로 적은것 

	int a, b;
	a = 10;
	b = (a != 10) ? a + a : a * a;
	//a가 10이 아니면 . 거짓이기 때문에 
	//a * a 가 b에 저장된다. 

	printf("b=%d\n", b); //100
	return 0;
}

  • 수업010_스위치.cpp
  • 스위치
    • 경우의 수 에만 사용이 된다. 
    • == 
#include <stdio.h>

int main(void) {

	int a = 0, b = 1;
	switch (a) {
		case 0: printf("%d\n", b++); break;
			//1이 되고 나서 출력이 되고. 그 다음에 2가 된다. 
		case 1: printf("%d\n", ++b); break;
		case 2: printf("%d\n", b); break;
	}

	return 0;
}

  • 수업010_스위치02.cpp
#include <stdio.h>

int main(void) {
	/*
		break를 생략하면 조건에 걸리는 곳부터 break를 만날때까지 전부 실행한다. 
	*/
	//어떤게 출력이 될껀가? 
		//함정이 2가지가 있다. 
		//b++이 함정 
		//스위치는 break를 다 적어야 한다. 
		//break를 다 걸어야 하는데. 안 적으면 에러가 나야 되는데. 전부 실행이 된다.
		
		//걸리는데 부터 (a = 1,). break까지 전부 실행된다. 
			//case 1: printf("(1)%d\n", ++b); 
			//case 2: printf("(2)%d\n", b++); 
			//case 3: printf("(3)%d\n", ++b); break;

	int a = 1, b = 1;
	switch (a) {
		case 0: printf("(0)%d\n", b++); 
		case 1: printf("(1)%d\n", ++b); //2, 
		case 2: printf("(2)%d\n", b++); //화면 2, b = 3 
		case 3: printf("(3)%d\n", ++b); break; // b = 4 
		case 4: printf("(4)%d\n", b++);
		
		//화면 
			//2
			//2
			//4 
	}

	return 0;
}

  • _01_문제

  • 문제006_조건문.cpp
#include <stdio.h>

int main(void) {
	//함정 
		//뒷 ++ , 뒷 --
		//1번 && 2번 => 1번이 거짓이면 1번은 안 한다. 

	int i = 3;
	int j = 4;
	
	if ((++i > j--) && (i++ < --j)) i = i-- + ++j;
	//앞 ++ 이기 떄문에 i = 4 
	//j는 뒷 --이기 때문에 
	//4 > 4 , j = 3 
	//거짓이다. && 뒤를 안한다. (i++ < --j)
	//i = i-- + ++j; . 앞이 거짓이기 때문에 동작을 안 한다. 

	else j = i-- - --j;
	//거짓이기 때문에 else로 넘어온다. 
	//4 - 2 , j = 2 , i = 3 
	

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

  • 문제006_조건문02.cpp
#include <stdio.h>

int main(void) {
	//함정
		//뒷 ++, 뒷--
		//1번 ||2번 => 1번이 참이면 2번은 안 한다. 

	int i = 3;
	int j = 4;
	
	if ((++i > j--) || (i++ < --j)) i = i-- + ++j;
	//i = 4, 4 > 4, j = 3 
	//거짓이여서 넘어옴 
	// 4 < 2 , i = 5 , j = 2 
	// 거짓이기 때문에 else로 넘어옴 
	else j = i-- - --j;
	//5 - 1 , i = 4 , j = 4  
	
	printf("%d %d\n", i, j); // 4 4 
	return 0;
}

  • 문제006_조건문03.cpp
#include <stdio.h>

//함정 
	//뒷++ 
	//|| => 1번이 참이면 2번을 안한다. 
int main(void) {

	int a = 20, b = 30;

	if (a++ <= 20 || ++b > 30) b++;
	//a++ <= 20 . 참이기 때문에 ++b > 30 이것을 안한다. 
	//20 <= 20 , a = 21 , b = 31

	printf("%d %d\n", a++ , b); //21 , a  = 22 , b = 31 
	//21 31 
	return 0;
}

  • 문제006_조건문04.cpp
#include <stdio.h>

int main(void) {

	int a, b;
	a = b = 1;
	//a와 b도 1이다. 

	//else if이기 때문에.
	//if가 거짓이면 else if가 실행된다. 
	if (a == 2)
		b = a + 1;
	else if (a == 1)
		b = b + 1;
		//이것만 된다. 나머지는 다 안된다. 
	else
		b = 10;
	printf("%d %d\n", a, b);
	return 0;
}

  • 문제006_조건문05.cpp
#include <stdio.h>

int main(void) {

	int score = 85;
	char grade;

	//if이기 때문에 전부다 검사 해야 한다. 
	if (score >= 90) grade = 'A'; 	//거짓 
	if (score >= 80) grade = 'B';	//사실 b
	//if이기 때문에 뒤로 넘어간다. 
	if (score >= 70) grade = 'C';	//c 
	if (score < 70) grade = 'F';	//거짓 
	
	printf("%c\n", grade); //c가 출력됨 

	//출력 
		//int => %d 
		//float, double => %f 
		//char => %c 
	return 0;
}

  • 문제008_형변환.cpp
#include <stdio.h>

int main(void) {

	double d_value; //비여 있다. 
	float f_value = 5.65;
	int n; //비여 있다. 
	d_value = f_value; //d_value => 5.65
	d_value = d_value + 0.5; //d_v = 6.15 
	n = (int)d_value; //n = 6 
	printf("%3.1f, %d", d_value, n); // 6.2, 6 
	//%3.1 => 최대 3자리까지 . 반올림을 해라. 

	return 0;
}

  • 문제009_삼항연산자.cpp
#include <stdio.h>

int main(void) {
	int a, b;
	a = 20;
	b = (a > 10) ? a + a : a * a;
	printf("b=%d\n", b); //b = 40 
	return 0;

}

  • 문제009_삼항연산자02.cpp
#include <stdio.h>
int main(void) {
	int i = 7, j = 9;
	int k;
	/*
	if (i > j)
		k = i - j;
	else
		k = i + 1;
	*/
	/*
		위 식을 삼항연산자로변경
	*/

	k = (i > j) ? i - j : i + j;

	printf("%d", k); //16 

	return 0;
}

  • 문제010_스위치.cpp
#include <stdio.h>

int main(void) {
	
	int a = 0, b = 1;
	switch (a) {
		case 0: printf("%d\n", b++); break;
		case 1: printf("%d\n", ++b); break;
		case 2: printf("%d\n", b); break;
	}
	//1
	return 0;
}

  • 문제010_스위치02.cpp
#include <stdio.h>

//함정
	//뒷++, 뒷--
	//break 제거 
	//break가 없으면 만날때까지 아래로 내려간다. 
int main(void) {

	int c = 1;
	switch (3) {
		case 1: c += 3;
		case 2: c++;
		case 3: c = 0; //c = 0 
		//여기서부터 시작 . 밑에 다 동작함 
		case 4: c += 3; //c = 3 
		case 5: c -= 10; //c = -7
		default: c--; //c = -8 
	}
	printf("%d", c); // -8
	return 0;
}

 

반응형