일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 비즈니스일본어
- 일본어
- 자바
- springboot
- 인프런
- rails
- 디지몬
- DART
- C로 시작하는 컴퓨터 프로그래밍4판
- javascript
- 日本語
- ruby
- 건담
- 반다이몰
- html
- 一日一つメソッド
- CSS
- vscode
- rails7
- Spring
- 연습문제
- Flutter
- 건담베이스
- jsp
- Python
- nico
- java
- 単語
- メソッド
- Web
- Today
- Total
AR삽질러
C로 시작하는 컴퓨터 프로그래밍4판 - 5장 선택문 본문
혼자해보기 5-1
임의의 수를 입력받아 5의 배수인지 아닌지 검사하는 프로그램을 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int num;
printf("숫자를 입력하세요 : ");
scanf("%d", &num);
if (num % 5 == 0) {
printf("입력하신 %d는 5의 배수입니다.", num);
}
else {
printf("입력하신 %d는 5의 배수가 아닙니다.", num);
}
return 0;
}
혼자해보기 5-2
임의의 수를 입력받아 3의 배수이면서 6의 배수도 되는지 검사하는 프로그램을 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int num;
printf("숫자를 입력하세요 : ");
scanf("%d", &num);
if (num % 3 == 0) {
if (num % 6 == 0) {
printf("입력하신 %d는 3의 배수이면서 6의 배수입니다.", num);
}
else {
printf("입력하신 %d는 3의 배수이지만 6의 배수는 아닙니다.", num);
}
}
else {
printf("입력하신 %d는 3의 배수이면서 6의 배수가 아닙니다.", num);
}
return 0;
}
01. if문과 switch문은 각각 어느 경우에 사용하면 좋은지 설명하시오.
if문은 프로그램의 흐름을 두가지 상황으로 나누는데 반해 switch문은 조건식을 먼저 평가한뒤 그 식의 값이 case상수와 일치하는 쪽으로 분기하여 해당 명령문을 수행한다.
if문 : 조건이 단순하거나 수가적은 경우
switch case : 조건의 수가 많고 복잡한경우
02. 다음 프로그램의 오류를 수정하시오.
1)
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int input;
printf("양수를 입력하시오.\n");
scanf("%d", &input);
if (input)
printf("입력한수는 \n");
printf("짝수입니다. 11\n");
else
printf("입력한 수 %d는 홀수입니다.\n", input);
return 0;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int input;
printf("양수를 입력하시오 : ");
scanf("%d", &input);
if (input % 2 == 0) {
printf("입력한수 %d는 짝수입니다.", input);
}
else {
printf("입력한 수 %d는 홀수입니다.\n", input);
}
return 0;
}
2)
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int jumsu;
printf("0점에서 100점 사이의 점수를 입력하세요\n");
scanf("%d", &jumsu);
if (jumsu >= 0 && jumsu < 60)
printf("%d점은 F학점입니다.\n", jumsu);
else if
printf("%d점은 D학점입니다.\n", jumsu);
else if
printf("%d점은 C학점입니다.\n", jumsu);
return 0;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int jumsu;
printf("0점에서 100점 사이의 점수를 입력하세요\n");
scanf("%d", &jumsu);
if (jumsu >= 0 && jumsu < 60)
printf("%d점은 F학점입니다.\n", jumsu);
else if(jumsu >= 60 && jumsu < 70)
printf("%d점은 D학점입니다.\n", jumsu);
else if(jumsu >= 70 && jumsu < 80)
printf("%d점은 C학점입니다.\n", jumsu);
return 0;
}
3)
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int jumsu;
printf("0점에서 100점 사이의 점수를 입력하세요.\n");
scanf("%d", &jumsu);
swith(jumsu) {
case jumsu >= 0 && jumsu < 60;
printf("불합격입니다.\n");
break;
case jumsu >= 60;
printf("합격입니다.\n");
break;
}
return 0;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int jumsu;
printf("0점에서 100점 사이의 점수를 입력하세요.\n");
scanf("%d", &jumsu);
switch(jumsu / 10) {
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
printf("불합격입니다.\n");
break;
default: printf("합격입니다.");
break;
}
return 0;
}
4)
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int score;
printf("당신의 점수를 입력하세요 : ");
scanf("%d", &score);
switch (score / 10) {
case 10:
case 9: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'A');
case 8: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'B');
case 7: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'C');
case 6: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'D');
default: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'F');
}
return 0;
}
수정
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int score;
printf("당신의 점수를 입력하세요 : ");
scanf("%d", &score);
switch (score / 10) {
case 10:
case 9: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'A');
break;
case 8: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'B');
break;
case 7: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'C');
break;
case 6: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'D');
break;
default: printf("점수는 %d이고 성적은 %c입니다.\n", score, 'F');
break;
}
return 0;
}
03. 조건 연산자로 작성된 프로그램을 if문을 이용한 프로그램으로 바꾸시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int value, x;
scanf("%d", &x);
value = x > 0 ? 1 : 0;
int answer = 20, x;
scanf("%d", &x);
(answer == x) ? printf("정답\n") : printf("오답\n");
return 0;
}
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int value, x;
scanf("%d", &x);
if (x > 0) {
value = 1;
}
else {
value = 0;
}
int answer = 20;
scanf("%d", &x);
if (answer == x) {
printf("정답\n");
}
else {
printf("오답\n");
}
return 0;
}
04. 임의의 양의 정수를 입력받아 '2의 배수인지' 또는 '3의배수인지','2와 3의 배수인지','2와3의 배수가 아닌지'를 확인하는 프로그램을 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main(void) {
int num;
printf("양수입력 : ");
scanf("%d", &num);
if (num % 2 == 0 && num % 3 == 0) {
printf("입력하신 %d는 2와 3의 배수입니다.", num);
}
else if (num % 2 == 0 ) {
printf("입력하신 %d는 2의 배수입니다.", num);
}
else if (num % 3 == 0) {
printf("입력하신 %d는 3의 배수입니다.", num);
}
else {
printf("입력하신 %d는 2와 3의 배수가 아닙니다.", num);
}
return 0;
}
05. 제시한 조건에 맞게 프로그램을 작성하시오.
1) 정수 3개를 입력받아 3개 수중에서 최댓값을 구하는 프로그램을 제어문을 이용하여 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int num1, num2, num3, max;
printf("세 개의 정수를 입력하세요: ");
scanf("%d %d %d", &num1, &num2, &num3);
max = num1;
if (num2 > max) {
max = num2;
}
if (num3 > max) {
max = num3;
}
printf("입력한수 %d %d %d중에서 최댓값은 %d 입니다.\n",num1, num2, num3, max);
return 0;
}
2) 1)번에서 작성한 프로그램을 조건 연산자를 이용한 프로그램으로 바꾸시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int num1, num2, num3, max;
printf("세 개의 정수를 입력하세요: ");
scanf("%d %d %d", &num1, &num2, &num3);
max = num1 > num2 ? (num1 > num3 ? num1 : num3) : (num2 > num3 ? num2 : num3);
printf("입력한수 %d %d %d중에서 최댓값은 %d 입니다.\n",num1, num2, num3, max);
return 0;
}
3) 정수 3개를 입력받아 3개 수 중에서 중간값을 구하는 프로그램을 제어문을 이용하여 작성하시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int num1, num2, num3, mid;
printf("세 개의 정수를 입력하세요: ");
scanf("%d %d %d", &num1, &num2, &num3);
if (num1 >= num2) {
if (num2 >= num3) {
mid = num2;
}
else if (num1 >= num3) {
mid = num3;
}
else {
mid = num1;
}
}
else {
if (num1 >= num3) {
mid = num1;
}
else if (num2 >= num3) {
mid = num3;
}
else {
mid = num2;
}
}
printf("입력한 수 %d %d %d 중에서 중간값은 %d 입니다.\n", num1, num2, num3, mid);
return 0;
}
4) 3)번에서 작성한 프로그램을 조건 연산자를 이용한 프로그램으로 바꾸시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int num1, num2, num3, mid;
printf("세 개의 정수를 입력하세요: ");
scanf("%d %d %d", &num1, &num2, &num3);
mid = (num1 >= num2) ? ((num2 >= num3) ? num2 : ((num1 >= num3) ? num3 : num1)) : ((num1 >= num3) ? num1 : ((num2 >= num3) ? num3 : num2));
printf("입력한 수 %d %d %d 중에서 중간값은 %d 입니다.\n", num1, num2, num3, mid);
return 0;
}
06. if~else if문을 이용하여 다양한 도형의 면적을 계산하는 프로그램을 작성하시오. 면적을 계산할 도형은 삼각형, 직사각형, 정사각형, 원으로, 원하는 도형의 면적을 계산하기 위한 정보도 도형에 따라 프로그램에서 요청하도록 하시오.
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int shape;
float area;
printf("도형을 선택하세요: \n");
printf("1. 삼각형\n");
printf("2. 직사각형\n");
printf("3. 정사각형\n");
printf("4. 원\n");
scanf("%d", &shape);
if (shape == 1) {
float base, height;
printf("삼각형의 밑변을 입력하세요: ");
scanf("%f", &base);
printf("삼각형의 높이를 입력하세요: ");
scanf("%f", &height);
area = 0.5 * base * height;
printf("삼각형의 면적은 %.2f 입니다.", area);
}
else if (shape == 2) {
float width, height;
printf("직사각형의 가로 길이를 입력하세요: ");
scanf("%f", &width);
printf("직사각형의 세로 길이를 입력하세요: ");
scanf("%f", &height);
area = width * height;
printf("직사각형의 면적은 %.2f 입니다.", area);
}
else if (shape == 3) {
float side;
printf("정사각형의 한 변의 길이를 입력하세요: ");
scanf("%f", &side);
area = side * side;
printf("정사각형의 면적은 %.2f 입니다.", area);
}
else if (shape == 4) {
float radius;
printf("원의 반지름을 입력하세요: ");
scanf("%f", &radius);
area = 3.141592 * radius * radius;
printf("원의 면적은 %.2f 입니다.", area);
}
else {
printf("잘못된 입력했습니다.");
}
return 0;
}
07. switch ~ case문을 이용하여 달(month)을 입력받고 그 달에 며칠(day)이 있는지 출력하는 프로그램을 작성하시오. 이때 날수가 같은 달에는 break문을 사용하지 않고 프로그램을 작성하시오.(단, 2월은 29일까지 있다고 가정한다.).
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int month, day;
printf("월을 입력하세요(1~12): ");
scanf("%d", &month);
switch (month) {
case 2:
day = 29;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
default:
day = 31;
break;
}
printf("%d월은 %d일까지 있습니다.", month, day);
return 0;
}
08. 통신사가 연령대가 낮은 고객들을 유치하기 위한 전략을 아래와 같이 세웠다. switch~case문을 이용하여 연령대를 입력받아 연령대별 제공 서비스를 보여주는 프로그램을 작성하시오.
<연령대별 제공 서비스>
- 50대 이상 : 1년간 데이터 매달 1G 제공
- 40대 : 1년간 데이터 매달 1G 제공, 3개월 통신요금 10% 할인
- 30대 : 1년간 데이터 매달 1G 제공, 6개월 통신요금 10% 할인
- 20대 : 1년간 데이터 매달 1G 제공, 6개월 통신요금 10% 할인
- 이외에는 커피쿠폰 5매 증정
#include<stdio.h>
#pragma warning(disable:4996)
int main() {
int age;
printf("연령대를 입력하세요 : ");
scanf("%d", &age);
switch (age / 10) {
case 9:
case 8:
case 7:
case 6:
case 5:
printf("50대 이상 : 1년간 데이터 매달 1G 제공");
break;
case 4:
printf("40대 : 1년간 데이터 매달 1G 제공, 3개월 통신요금 10%할인");
break;
case 3:
printf("30대 : 1년간 데이터 매달 1G 제공, 6개월 통신요금 10%할인");
break;
case 2:
printf("20대 : 1년간 데이터 매달 1G 제공, 6개월 통신요금 10%할인");
break;
default:
printf("커피쿠폰 5매 증정");
break;
}
return 0;
}
'C' 카테고리의 다른 글
C로 시작하는 컴퓨터 프로그래밍4판 - 7장 배열 (0) | 2023.03.31 |
---|---|
C로 시작하는 컴퓨터 프로그래밍4판 - 6장 반복문 (0) | 2023.03.27 |
C로 시작하는 컴퓨터 프로그래밍4판 - 4장 연산자 (0) | 2023.03.16 |
C로 시작하는 컴퓨터 프로그래밍4판 - 3장 표준입출력 (0) | 2023.03.15 |
C로 시작하는 컴퓨터 프로그래밍4판 - 2장 기본자료형과 형변환 (0) | 2023.03.09 |