연습문제
예제 08
두 수 중 큰 수 찾기
사용자로부터 입력 받은 두 수를 변수 a, b에 저장하고, a 값이 b 값보다 크면 a 값을 출력하고, 그렇지 않으면 b 값을 출력한다.

# include <stdio.h>
main(void)
{
int a;
int b;
scanf("%d%d",&a,&b);
if (a > b)
{
printf("큰 값 : %d\n",a);
}
else
{
printf("큰 값 : %d\n",b);
}
return 0;
}
예제 09
양수, 0, 음수 판별하기
사용자로부터 입력 받은 수를 변수 a에 저장하고, a가 0보다 작으면 “음수”를, 그렇지 않고 0보다 크면 “양수”를, 그렇지 않으면 “0”을 출력한다.

# include <stdio.h>
main(void)
{
int a;
scanf("%d",&a);
if (a < 0)
{
printf("%d는(은) 음수\n",a);
}
else if (a > 0)
{
printf("%d는(은) 양수\n",a);
}
else
{
printf("0");
}
return 0;
}
예제 10
세 수 중 가장 큰 수 찾기(1)
a가 b보다 크고 a가 c보다 크면 a가 가장 큰 수가 되고, a가 b보다 크고 a가 c보다 크지않으면 c가 가장 큰 수가 된다. a가 b보다 크지 않고 b가 c보다 크면 b가 가장 큰 수가 되고, a가 b보다 크지 않고 b가 c보다 크지 않으면 c가 가장 큰 수가 된다.

# include <stdio.h>
main(void)
{
int a = 3;
int b = 7;
int c = 10;
if (a > b)
{
if (a > c)
{
printf("가장 큰 수 : %d\n",a);
}
else if (a < c)
{
printf("가장 큰 수 : %d\n",c);
}
}
else if (a < b)
{
if (b > c)
{
printf("가장 큰 수 : %d\n",b);
}
else if (b < c)
{
printf("가장 큰 수 : %d\n",c);
}
}
return 0;
}
예제 11
세 수 중 가장 큰 수 찾기(2)
사용자로부터 첫 번째 수를 입력받아 max에 저장한다. 두 번째로 입력받은 수 a와 max를 비교하여 a가 max보다 크면 max에 a를 저장한다. 세 번째 수도 마찬가지 방법으로 수행한다. 결국 가장 큰 수가 max에 저장된다.

# include <stdio.h>
main(void)
{
int max;
scanf("%d",&max);
int a;
scanf("%d",&a);
if (max < a)
{
max = a;
}
int b;
scanf("%d",&b);
if (max < b)
{
max = b;
}
printf("가장 큰 수 : %d\n",max);
return 0;
}
예제 12
홀수, 짝수 판별하기
사용자로부터 입력받은 수를 2로 나누었을 때 나머지가 0이면 ‘짝수’, 나머지가 0이 아니면 ‘홀수’다. 예를 들어 입력받은 수가 10이라면 2로 나누었을 때 나머지가 0이 된다. 따라서 10은 ‘짝수’가 된다. 만약 입력받은 수가 15라면 2로 나누었을 때 나머지가 1이 되어0이 아니므로 15는 ‘홀수’가 된다.

# include <stdio.h>
main(void)
{
int num;
scanf("%d",&num);
if (num % 2 == 0)
{
printf("짝수");
}
else
{
printf("홀수");
}
return 0;
}
예제 13
3의 배수 판별하기
사용자로부터 입력받은 수를 3으로 나눈 나머지가 0이면 입력받은 수는 3의 배수이고, 그렇지 않으면 3의 배수가 아니다.
예를 들어, 10은 3으로 나눈 나머지가 0이 아니므로 3의 배수가 아니다. 반면 15는 3으로나눈 나머지가 0이므로 15는 3의 배수가 된다.

# include <stdio.h>
main(void)
{
int num;
scanf("%d",&num);
if (num % 3 == 0)
{
printf("3의 배수");
}
else
{
printf("3의 배수 아님");
}
return 0;
}
예제 14
나이에 따른 입장료

입장료 정가가 5,000원인 경우 나이에 따른 요금체계가 다음과 같은 경우 나이를 입력 받아 입장료를 구한다.
입력 받은 나이가 8 미만이면 “0”을,
그렇지 않고 60 미만이면 정가인 5,000을,
그렇지 않으면 정가의 50%인 2,500을 출력한다.

# include <stdio.h>
main(void)
{
int num;
double fee = 5000;
scanf("%d",&num);
if (num < 8)
{
printf("0\n");
}
else if (num < 60)
{
printf("%.2f\n",fee);
}
else
{
printf("%.2f\n",fee*1/2);
}
return 0;
}
예제 15
3의 배수이면서 5의 배수 판별하기
사용자로부터 입력받은 수를
3으로 나눈 나머지가 0이고
5로 나눈 나머지도 0이면
3의 배수이면서 5의 배수이다.
예를 들어, 10은 3으로 나누었을 때 나머지가 1이 되어 0이 아니다.
따라서 10은 ‘3의 배수이면서 5의 배수’가 아니다.
반면 15는 3으로 나누었을 때 나머지가 0이 되고, 5로 나누었을 때도 나머지가 0이 되므로
15는‘ 3의 배수이면서 5의 배수’가 된다.

#include<stdio.h>
main(void)
{
int num;
scanf("%d",&num);
if ((num % 3 == 0) && (num % 5 == 0))
{
printf("3의 배수이면서 5의 배수입니다.");
}
else
{
printf("3의 배수이면서 5의 배수가 아닙니다.");
}
}
예제 16
나이에 따른 공원입장료

공원 입장료는 다음과 같은 경우 나이를 입력 받아 입장료를 구한다.
입력 받은 나이가 8미만이거나 60세 이상 이면 “무료”를 출력하고, 그렇지 않으면 “5,000원”을 출력한다.

#include<stdio.h>
main(void)
{
int age;
scanf("%d",&age);
double fee = 5000;
if ((age < 8) || (age >= 60))
{
printf("무료\n");
}
else
{
printf("%.2f\n",fee);
}
}
과제
과제6
두 수를 입력받아 둘 중 작은 수를 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>
main(void)
{
int a;
int b;
scanf("%d%d",&a,&b);
if (a < b)
{
printf("작은 수 : %d\n",a);
}
else
{
printf("작은 수 : %d\n",b);
}
}
과제7
두 수를 입력받아 두 수의 차를 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>
main(void)
{
int a;
int b;
scanf("%d%d",&a,&b);
if (a > b)
{
int sub = a - b;
printf("두 수의 차 : %d\n",sub);
}
else
{
int sub = b - a;
printf("두 수의 차 : %d\n",sub);
}
}
과제8
양수, 0, 음수를 판별하는 순서도와 C 프로그램을 다음과 같이 작성하면 어떤 문제가 발생하는 찾아 서술하여라.

위 코드의 문제점은 양수나 음수를 입력하면 양수인지, 음수인지를 판별하는 prinf 문이 나온 뒤에 printf("0이다\n"); 부분도 실행되는 문제가 있다.
이를 해결하기 위해서는 0을 입력했을 때만 0이다를 출력할 수 있도록 바꿔야 한다.
아래는 수정된 코드와 순서도이다.

#include<stdio.h>
int main()
{
int a;
printf("정수 : ");
scanf("%d",&a);
if (a < 0)
{
printf("음수\n");
}
if (a > 0)
{
printf("양수\n");
}
if (a == 0)
{
printf("0\n");
}
return 0;
}
과제9
세 수를 입력받아 가장 작은 수를 출력하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>
int main()
{
int min;
printf("첫 번째 정수 : ");
scanf("%d",&min);
int num1;
printf("두 번째 정수 : ");
scanf("%d",&num1);
if (min > num1)
{
min = num1;
}
int num2;
printf("세 번째 정수 : ");
scanf("%d",&num2);
if (min > num2)
{
min = num2;
}
printf("가장 작은 수 : %d\n",min);
return 0;
}
과제11
홀수, 짝수를 판별하는 다음 순서도의 ①과 ②를 채우고 그에 맞는 C 프로그램을 작성하여라.

#include<stdio.h>
int main()
{
int a;
printf("정수 : ");
scanf("%d",&a);
if (a%2 == 1)
{
printf("홀수");
}
else
{
printf("짝수");
}
return 0;
}
과제12
3의 배수를 판별하는 다음 순서도의 ①을 채우고 C 프로그램을 작성하여라.

#include<stdio.h>
int main()
{
int a;
printf("정수 : ");
scanf("%d",&a);
if (a%3 == 0)
{
printf("3의 배수");
}
else
{
printf("3의 배수아님");
}
return 0;
}
과제13
다음과 같은 요금 체계에 대해 거리에 따른 요금을 출력하는 순서도와 C 프로그램을 작성하여라.


#include<stdio.h>
int main()
{
double len;
printf("km : ");
scanf("%lf",&len);
if (len < 5)
{
printf("1,000원");
}
if ((len >= 5) && (len < 10))
{
printf("2,000원");
}
if (len >= 10)
{
printf("3,000원");
}
return 0;
}
과제14
하나의 수를 입력받아 5 또는 7의 배수인지 판별하는 순서도와 C 프로그램을 작성하여라.

#include<stdio.h>
int main()
{
int a;
printf("정수 : ");
scanf("%d",&a);
if (a % 5 == 0)
{
printf("5의 배수");
}
if (a % 7 == 0)
{
printf("7의 배수");
}
return 0;
}
과제15
다음 공원 입장료에 대한 요금을 구하는 순서도의 ①을 채우고 C 프로그램을 작성하여라.


#include<stdio.h>
int main()
{
int age;
printf("나이 : ");
scanf("%d",&age);
if ((age < 8) || (age >= 60))
{
printf("무료\n");
}
else
{
printf("5,000원\n");
}
return 0;
}