반응형
- _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;
}
반응형
'코딩 > C언어' 카테고리의 다른 글
수업014_함수 ~ 수업015_함수와배열02 , 문제014_함수 ~ 문제015_함수와배열(1~3) (1) | 2025.07.03 |
---|---|
_11_교재 => 수업012_배열 ~ 수업012_배열03 , _11_문제 => 문제012_배열 ~ 문제012_배열08 (1~3) (1) | 2025.07.01 |
c언어 해설 (0) | 2025.07.01 |
_11_교재 => 수업011_반복문 ~ 수업011_반복문03 , _11_문제 => 문제011_반복문 ~ 문제011_반복문12(1~3) (1) | 2025.06.27 |
c언어 - _01_교재 (1) | 2025.06.25 |