티스토리 뷰
if 문이란 조건식의 결과에 따라 중괄호 {}로 묶어놓은 블록을 실행하거나 실행하지 않도록 하는 문법이다.
조건식에는 true 또는 false의 값을 낼 수 있는 연산식이나 boolean 변수가 올 수 있다.
조건식이 true면 블록을 실행하고 false면 블록을 실행하지 않는다.
if문 작성 방법
if (조건문) {
실행문 ..
}
if (num1>num2) // num 1이 num 2 봐 크다면, 조건이 참일때 아래의 문장 실행
{
printf("num1이 num2 보다 큽니다. \n");
printf("%d>%d \n",num1,num2);
}
여기서 만약 조건이 만족될 때 실행할 문장이 하나라면 다음과 같이 중괄호는 생략이 가능하다.
그러나 if 문 만 계속 사용하게 된다면 조건검사는 모두 실행되기 때문에 비효율적이다. 그러므로 불필요한 연산의 수를 줄일 수 있는 if ~ else 문을 활용한다. if ~else 문은 조건을 만족하는 if 문이 발견되면 나머지 if 문은 건너뛰는 특징을 지니기 때문에 연산을 효율적으로 할 수 있다.
if else 문
if (조건 1)
{
//조건 1 만족 시 실행
}
else if (조건 2)
{
//조건 2 만족 시 실행
}
else if (조건 3)
{
//조건 3 만족 시 실행
}
else
{
//모두 불 만족시 실행
}
여기서 조건의 만족여부 검사는 위에서 아래로 순차적으로 진행이 되며, 조건이 만족되어서 해당 블록을 실행하고 나면 마지막 else까지도 건너뛴다.
문제 1)
1이상 100미만의 정수 중에서 7의 배수와 9의 배수를 출력하는 프로그램을 작성해보자.
단 7의 배수이면서 동시에 9의 배수인 정수는 한번만 출력해야한다.
🤦♀️ 생각 과정
1. 먼저 1이상 100미만의 정수라는 조건이 있으니 for 문을 활용하여 i를 1로 초기화 하여 1씩 더해가 100까지 반복되게 하자
2. 7의 배수와 9의 배수를 출력을 해야하니 i를 7로 나누었을때, 9로 나누었을때 나머지가 0이 되는 경우의 수를 출력하면 되겠다.
내가 생각한 답
#include <stdio.h>
int main()
{
for (int i = 1; i < 101; i++)
{
if (i % 7 == 0)
printf("%d \n", i);
else if (i % 9==0)
printf("%d \n", i);
}
return 0;
}
RESULT:
답안
#include <stdio.h>
int main()
{
int i;
for (i = 1; i < 100; i++)
{
if (i % 7 == 0 || i % 9 == 0)
printf("%d", i);
}
return 0;
}
✔ 보충할 부분
1. OR 연산자인 ||을 활용하여 코드를 간결하게 만들었다.
cf)
문제 2)
두 개의 정수를 입력 받아서 두 수의 차를 출력하는 프로그램을 구현해보자. 단, 무조건 큰 수에서 작은 수를 뺀 결과가 출력해야 한다. 예를 들어서 입력된 두 수가 순서에 상관없이 12와 5라면 7이 출력되어야 하고, 입력된 두 수가 순서에 상관없이 4와 16이라면 12가 출력되어야 한다. 즉, 출력 결과는 무조건 0 이상이 되어야한다.
🤦♀️ 생각 과정
1. scanf 를 이용하여 사용자로부터 수를 입력받자
2. 두 수를 a,b라고 뒀을 때 a >b 인 경우와 a<b인 경우와 a==b 인 경우를 고려하여 if else 문을 만들자
내가 생각한 답
#include <stdio.h>
int main()
{
int a, b;
printf("첫번째 수를 입력하시오:");
scanf("%d", &a);
printf("두번째 수를 입력하시오:");
scanf("%d", &b);
if (a < b)
printf("%d", b - a);
else if (a > b)
printf("%d", a - b);
else
printf("%d", a - b);
return 0;
}
정답
include <stdio.h>
int main()
{
int num1, num2;
int result;
printf("두 개의 정수 입력: ");
scanf("%d %d", &num1, &num2);
if (num1 < num2)
result = num2 - num1;
else
result = num1 - num2;
printf("뺄셈 결과: %d \n", result);
return 0;
}
✔ 보충할 부분
1. scanf 하나에 두개의 수를 입력받을 수 있다
2. a=b나 a>b의 경우 계산할 식이 같으니 굳이 else if 로 묶지 않고 else로 해결하는게 더 간단하다
문제 3)
학생의 전체 평균점수에 대한 학점을 출력하는 프로그램을 작성하자. 학생의 성적이 90점 이상이라면 A, 80점 이상이라면 B, 70점 이상이라면 C, 50점 이상이라면 D 그리고 그 미만이면 F 다!
프로그램 실행 시 순서대로 국어, 영어, 수학의 점수를 입력 받는다. 그리고는 평균을 구한 다음 그에 적절한 함수를 출력하면 된다.
🤦♀️ 생각 과정
1. 먼저 국 영 수와 평균, 합에 해당하는 변수를 선언해준 뒤 사용자로부터 성적을 입력받는다.
2. 합은 입력받은 변수들을 합한 것이고, 평균은 이들을 3으로 나눠주면 된다.
3. 주어진 조건에 따라 if ~ else 문을 활용한다.
내가 생각한 답
#include <stdio.h>
int main()
{
int K, E, M;
int sum = 0; int avg = 0;
printf("차례대로 국영수 점수를 입력하시오:");
scanf("%d %d %d",&K, &E, &M);
sum = K + E + M;
avg = sum / 3;
if (avg >= 90)
printf("A");
else if (avg >= 80)
printf("B");
else if (avg >= 70)
printf("C");
else if (avg >= 50)
printf("D");
else
printf("F");
return 0;
}
'언어 > C' 카테고리의 다른 글
[C언어] 배열을 이용한 문자열 변수의 표현 (0) | 2023.02.13 |
---|---|
[C언어] 1차원 배열 (0) | 2023.02.12 |
[C언어] 반복문 _ Nested While 문 (while문의 중첩) (0) | 2023.01.18 |
[C언어] 반복문 (1) _ while 문 (0) | 2023.01.06 |
[C언어] 상수와 변수의 이해 (0) | 2022.12.15 |