264p
Programming
6. 2차방정식의 근을 계산하는 함수 quad_eqn()를 작성하여보자. quad_eqn() 함수는 a, b, c를 나타내는 double형의 3개의 인수를 받는다. 판별식이 양수인 경우에만 근을 출력하고, 만약 판별식의 값이 음수이면 근이 없다는 메시지를 출력한다.
ax² + bx + c = 0
2차 방정식의 계수를 입력하시오. a: 1 b: -5 c: 6 근은 2와 3입니다. |
#include <stdio.h> #include <math.h> void quad_eqn(double a, double b, double c); void main() { double a, b, c; printf("2차 방정식의 계수를 입력하시오."); scanf_s("%lf %lf %lf", &a, &b, &c); quad_eqn(a, b, c); scanf_s("%lf %lf %lf", &a, &b, &c); } void quad_eqn(double a, double b, double c) { double x, y; if ((b*b - 4 * a*c) >= 0) { x = (-b + sqrt(b*b - 4 * a*c)) / 2 * a; y = (-b - sqrt(b*b - 4 * a*c)) / 2 * a; printf("근은 %.0f와 %.0f 입니다.", x, y); } else printf("근이 존재하지 않습니다."); } |
7. 난수 생성 함수를 이용하여 컴퓨터로 여러 가지 문제를 시뮬레이션하는 것을 흔히 몬테 카를로(Monte Carlo) 시뮬레이션이라고 한다. 간단한 동전 던지기 게임을 시뮬레이션하여보자. 컴퓨터가 동전을 던지고 사용자는 앞뒤를 말한다. 컴퓨터는 난수 생성 함수를 이용하여 난수를 생성한 후에 난수가 짝수이면 동전의 앞면으로 간주하고 홀수이면 동전의 뒷면으로 간주한다. 이것을 몇 번 반복하여 승패를 기록한다.
#include <stdio.h> #include <stdlib.h> void main() { int a,b=1,c=0,d=0; while (b == 1) { c++; printf("\n앞?(0) 뒤?(1)\n"); scanf_s("%d", &b); a = rand()%2; if (a == b) { printf("맞췄습니다\n"); d++; } else printf("틀렸습니다\n"); printf("현재전적 %d전 %d승 \n더 하시겠습니까? (예:1 / 아니요:0",c,d); scanf_s("%d", &b); } } |
8. 간단한 메뉴 시스템을 작성하여보자. 다음과 같은 메뉴를 선택하고 사용자로부터 입력을 받아서 입력이 올바른지를 검사한다. 메뉴를 실제로 실행할 필요는 없다. 다만 메뉴의 이름을 화면에 출력하고 다시 반복한다.
1. 햄버거 2. 치즈버거 3. 샌드위치 4. 종료 원하는 메뉴를 선택하시오. |
(a) 메뉴를 화면에 출력하고 원하는 메뉴를 선택하라는 메시지를 내보내는 함수 print_menu()를 작성한다.
(b) 사용자로부터 하나의 정수를 읽은 후에 메뉴 번호의 상한과 하한을 넘지 않았는지를 검사하는 함수 get_menu_number()를 작성한다. 만약 사용자로부터 입력된 정수가 상한이나 하한을 벗어나면 print_menu()를 호출하여 화면에 메뉴를 표시한다. 범위 안에 드는 정수가 입력되면 메뉴를 처리하는 함수를 호출한다.
(c) 각각의 메뉴를 처리하는 함수를 작성한다. 메뉴에 해당되는 함수가 호출되면 메뉴가 호출되었다는 메시지만을 출력하고 종료한다.
#include <stdio.h> void print_menu(); void get_menu_number(); void serve_menu(int b); void main() { print_menu(); get_menu_number(); printf("종료되었습니다."); } void print_menu() { printf("1. 햄버거\n"); printf("2. 치즈버거\n"); printf("3. 샌드위치\n"); printf("4. 종료\n"); printf("원하는 메뉴를 선택하시오.\n"); } void get_menu_number() { int a; scanf_s("%d", &a); while (a > 4 || a < 0) { print_menu(); scanf_s("%d", &a); } serve_menu(a); } void serve_menu(int b) { switch (b) { case 1: printf("햄버거가 나왔습니다\n"); break; case 2: printf("치즈버거가 나왔습니다\n"); break; case 3: printf("샌드위치가 나왔습니다\n"); break; case 4: break; } } |
'Solution > C언어 콘서트' 카테고리의 다른 글
C언어 콘서트 - 제7장: 함수 연습문제 (8/8) (0) | 2015.01.25 |
---|---|
C언어 콘서트 - 제7장: 함수 연습문제 (7/8) (0) | 2015.01.24 |
C언어 콘서트 - 제7장: 함수 연습문제 (5/8) (5) | 2014.07.27 |
C언어 콘서트 - 제7장: 함수 연습문제 (4/8) (8) | 2014.06.23 |
C언어 콘서트 - 제7장: 함수 연습문제 (3/8) (0) | 2014.06.22 |