ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 8주차
    학교 수업/1-1, 1-2 코딩 기초 (파이썬, C) 2020. 10. 19. 16:18
    반응형

    CHAPTER 9 연습문제

     

    3번

     

    #include <stdio.h>
    
    void static_sum(int end);
    
    int main()
    {
    	int i;
    
    	for (i = 0; i < 10; i++)
    		static_sum(i);
    
    	return 0;
    }
    
    void static_sum(int end)
    {
    	static int sum = 0;
    	int n = end + 1;
    
    	printf("%2d번째 호출, sum = %3d + 1 ~ %3d까지의 합: %3d\n", n, sum,  n, sum+n*(n+1)/2);
    
    	sum += n * (n + 1) / 2;
    }

     

     

    4번

    getch() => _getch()로 변경해야 오류안나옴

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #define PASS 1
    #define FAIL 0
    
    void display_menu();
    int check_PW();
    void check_balance(int balance);
    int deposit(int balance);
    int withdraw(int balance);
    
    int main()
    {
    	int service, balance = 0;
    
    	printf("우리 시스템을 방문해 주셔서 감사합니다.");
    
    	do
    	{
    		display_menu();
    		printf("원하는 서비스를 선택하세요. ");
    		scanf_s("%d", &service);
    
    		switch (service)
    		{
    		case 1:check_balance(balance); break;
    		case 2: balance = deposit(balance); break;
    		case 3: balance = withdraw(balance); break;
    		case 4:exit(0);
    		}
    
    		printf("\n계속 서비스를 원하시면 아무키나 누르세요.");
    		_getch();
    		system("cls");
    	} while (service != 4);
    
    	return 0;
    }
    
    void check_balance(int balance)
    {
    	if (check_PW() == PASS)
    		printf("\n현재 잔액: %d원 \n", balance);
    }
    
    int deposit(int balance)
    {
    	int amount;
    
    	printf("\n입금하실 금액은? "); scanf_s("%d", &amount);
    
    	balance += amount;
    	printf("\n입금 후 현재 잔액: %d원\n", balance);
    
    	return balance;
    }
    
    int withdraw(int balance)
    {
    	int amount;
    
    	if (check_PW() == PASS)
    	{
    		printf("출금하실 금액은? "); scanf_s("%d", &amount);
    		if (balance < amount)
    			printf("\n잔액이 부족합니다. 현재 잔액 %d원 \n", balance);
    		else
    		{
    			balance -= amount;
    			printf("\n출금 후 현재 잔액: %d원 \n", balance);
    		}
    	}
    
    	return balance;
    }
    
    int check_PW()
    {
    	static int count = 0;
    	int system_PW = 1111;
    	int limit = 3;
    	int input_PW;
    
    	printf("\n시스템 비밀번호를 입력하세요.");
    	scanf_s("%d", &input_PW);
    
    	if (input_PW == system_PW)
    		return PASS;
    	else
    	{
    		count++;
    		if (count == limit)
    		{
    			printf("비밀번호 오류 3회 발생! \n");
    			printf("신분증을 가지고 서비스센터를 방문하세요. \n");
    			exit(0);
    		}
    		else
    		{
    			printf("비밀번호가 틀렸습니다. 총 %d회 오류!\n", count);
    			return FAIL;
    		}
    	}
    }
    
    void display_menu()
    {
    	printf("\n\n");
    	printf("======================\n");
    	printf("==    1. 잔액 조회  ==\n");
    	printf("==    2. 입금       ==\n");
    	printf("==    3. 출금       ==\n");
    	printf("==    4. 그만하기   ==\n");
    	printf("======================\n");
    }

     

     

     

    5번

    getch() => _getch()로 변경해야 오류안나옴

    system("cls")로 cmd 화면을 지워줌

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #define N 6
    
    void menu();
    void order();
    void check();
    
    char name[N][7] = { "", "노트", "연필","지우개","자","볼펜" };
    int unit_cost[N] = { 0,1000,500,300,800,1500 };
    int number[N] = { 0 };
    
    int main()
    {
    	int x;
    
    	do {
    		menu();
    		printf("원하는 서비스를 선택하세요. ");
    		scanf_s("%d", &x);
    
    		switch (x)
    		{
    		case 1:order(); break;
    		case 2:check(); break;
    		case 3:exit(0);
    		}
    
    		printf("\n계속 서비스를 원하시면 아무키나 누르세요.");
    		_getch();
    		system("cls");
    	} while (x != 3);
    
    	return 0;
    }
    
    void menu()
    {
    	printf("환영합니다.\n");
    	printf("=======================\n");
    	printf("== 1. 상품 주문하기  ==\n");
    	printf("== 2. 주문서 확인하기==\n");
    	printf("== 3. 종료하기       ==\n");
    	printf("=======================\n");
    }
    
    void order()
    {
    	int a, b;
    
    	system("cls");
    	printf(">> 상품 주문 서비스입니다.\n");
    	printf("==========================\n");
    	printf("    1. 노트      1000\n");
    	printf("    2. 연필       500\n");
    	printf("    3. 지우개     300\n");
    	printf("    4. 자         800\n");
    	printf("    5. 볼펜      1500\n");
    	printf("=========================-\n");
    
    	printf("원하는 상품의 번호는? ");
    	scanf_s("%d", &a);
    	printf("%s을(를) 주문할 개수는? ", name[a]);
    	scanf_s("%d", &b);
    
    	number[a] += b;
    
    	printf("\n\n 주문하신 %s %d개는 총 %d원입니다.\n", name[a], b, unit_cost[a] * b);
    
    }
    
    void check()
    {
    	int total = 0;
    	system("cls");
    	printf("  상품 주문 내역서\n");
    	printf("========================\n");
    	printf(" 상품명  개수    가격\n");
    	printf("------------------------\n");
    	for (int i = 1; i < 6; i++)
    		if (number[i] != 0)
    		{
    			printf("  %s   %3d     %d\n", name[i], number[i], unit_cost[i] * number[i]);
    			total += unit_cost[i] * number[i];
    		}
    	printf("========================\n");
    	printf(" 총액          %7d원\n",total);
    }
    반응형

    댓글

Designed by Tistory.