C언어 기초: 조건

김영채 (Kevin)·2020년 3월 6일
0

C언어

목록 보기
4/23
post-thumbnail
post-custom-banner

조건에 따른 선택 if문

기본 형식:

if (condition) 
	statement;
next;

//condition이 만족되면 아래 코드가 실행이 된다

예시:

if (grade >= 3.2)
{
	printf("회사에 지원할 수 없습니다.");
}
printf("졸업을 축하합니다.");

if else 문

기본 형식:

if (condition)
	statement;
else
	statement;
next;

예시:

if (n % 2 == 0)
	printf("짝수");
else 
	printf("홀수");

printf("입니다.");

if.. else if 문

if (condition 1)
	statement1;
else if (condition 2)
	statement2;
else if (condition 3)
	statement3;
else
	statement4;
next;

블록 표시와 else

잘못된 예시 1:

int age = 30;

if (age>=20)
	if (age>=65)
		printf("당신은 어르신입니다.\n");
else
	printf("당신은 미성년자입니다.");

잘못된 예시 2:

int age = 30;

if (age>=20)
{
	if (age>=65)
		printf("당신은 어르신입니다.\n");
	else
		printf("당신은 미성년자입니다.");
}

올바른 예시:

int age = 30;

if (age>=20)
{
	if (age>=65)
		printf("당신은 어르신입니다.\n");
}
else
	printf("당신은 미성년자입니다.");
}

다양한 if문

if (temperature >= 32)
	printf("폭염주의");

//

if (40<=speed && speed <= 60)
	printf("적정속도");

//

if (point >= 60)
	printf("면허시험 합격");
else
	printf("면허시험 불합격");

*주의해야 할 조건 연산식

( 40 <= speed <= 60 )
//위 연산식은 우선순위에 따라 아래 연산식과 같음
( (40<=speed) <= 60)
//(40<=speed)이 먼저 계산되며, 해당 연산의 결과는 0(거짓)또는 1(참)임을 주의

if와 조건연산자

  1. 두 수의 최대값 구하기

    //조건 연산자:
    max = x > y ? x : y;

    //if:
    if (x>y)
    max=x;
    else
    max=y;

  2. 두 수의 최소값 구하기

    //조건 연산자:
    min = x > y ? y : x;

    //if:
    if (x>y)
    min=y;
    else
    min=x;

  3. 절대값 구하기

    //조건 연산자:
    abs = x >= 0 ? x:-x;

    //if:
    if (x>=0)
    abs= x;
    else
    abs= -x;

  4. 홀수와 짝수 구하기

    //조건 연산자:
    a % 2 ? printf("홀수") : printf("짝수");

    //if:
    if (a%2) //a와 2를 나눈 나머지를 계산. a가 짝수면 0이 대입되는 연산이 false로 처리돼서 다음 조건문으로 넘어감.
    printf("홀수");
    else
    printf("짝수");

다양한 선택 switch 문

기본 형식:

switch(exp){  //식의 결과는 문자형 또는 정수형이어야 한다!
	case 상수1:  //정수 또는 문자형의 상수이어야 한다.
		stmt1;
		break;  //break을 만나면 switch문이 종료된다.
	case 상수12:
		stmt2;
		break;
	case 상수3:
		stmt3;
		break;
	default:  //위의 case값이 일치하지 않으면 끝에 default문을 실행시킨다.
		stmt4;
		break;
}

switch(exp)에서 exp는 반드시 문자형 또는 정수형이어야 한다.

switch( exp ==1 .1 ) 불가능

break 생략 예제:

int month;

printf("년도의 월(month)을 입력: ");
scanf("%d", &month);

switch(month){
	case 4: case 5:
		printf("%월은 봄입니다.\n", month);
		break;
	case 6: case 7: case 8:
		printf("%월은 여름입니다.\n", month);
	case 9: case 10: case 11:
		printf("%월은 가을입니다.\n", month);
	case 12: case 1: case 2: case 3: 
		printf("%d월은 겨울입니다.", month);

	default:
		printf("잘못 입력");
}

위 예제와 같이 case 를 묶기 가능

세 정수의 최대값 출력 예제:

int x,y,z;

printf("세 정수를 입력: ");
scanf("%d %d %d", &x, &y, &z);

switch((x>y)){ //x>y가 참이면 1, 거짓이면 0
	case 0:
		printf("최대 값: %d\n", y>z?y:z);  //y>z가 참이면 y출력, 아니면 z출력
		break;
	case 1:
		printf("최대 값: %d\n", x>z?x:z);
		break;
}

성적 처리 switch문 예제:

int score;

printf("점수 입력: ");
scanf("%d", &score);


switch(score/10){
	case 10: case 9:
		printf("점수: %d, 성적: %c", score, 'A');
		break;
	case 8:
		printf("점수: %d, 성적: %c", score, 'B');
		break;
	case 7:
		printf("점수: %d, 성적: %c", score, 'C');
		break;
	case 6:
		printf("점수: %d, 성적: %c", score, 'D');
		break;
	
	default:
		printf("점수: %d, 성적: %c", score, 'F'); //default문에서는 break 생략 가능
}

break문은 사실 위치 제한도 없고 생략도 가능하다. 다만 가장 아래가 아닌 가장 위에 작성하게 되면 break문이 필요하게 된다.

profile
맛있는 iOS 프로그래밍
post-custom-banner

0개의 댓글