옥수수와 식빵 그리고 코딩

9장 연습문제 본문

C/perpect C

9장 연습문제

옥식 2022. 1. 1. 18:40

01. 인치를 센티미터로 바꾸는 함수

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define INCH 2.54 //1인지는 2.45cm

double inchTcm(double);

int main(void)
{
    double cm;
    printf("거리를 인치로 입력하세요: ");
    scanf("%lf", &cm);
    printf("입력한 %lf인치는 %lf센티미터입니다.", cm, inchTcm(cm));

    return 0;

}

double inchTcm(double cm)
{
    double result = cm * INCH;
    return result;
}

 

02. 1부터 입력받은 수 까지의 합을 구하는 함수

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int getsum(int);

int main(void)
{
    int n;
    printf("1부터 n까지 합을 구할 n입력: ");
    scanf("%d", &n);
    printf("1에서 %d까지의 합: %d", n, getsum(n));

    return 0;
}

int getsum(int max)
{
    int sum = 0;
    for (int i = 1; i <= max; i++)
        sum += i;

    return (sum);
}

 

03. 섭씨온도를 화씨온도로 변환하는 함수, 섭씨온도 10부터 100까지 0.5씩 증가

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

double celTfah(double);

int main(void)
{
    for (double cel = 10; cel <= 100; cel = cel + 0.5)
    {
        printf("섭씨온도 = %.2lf   화씨온도 = %.2lf\n", cel, celTfah(cel));
    }
    return 0;
}

double celTfah(double cel)
{
    double fah = 0;
    fah = cel * 9 / 5 + 32;

    return (fah);
}

 

04. 세 정수를 입력받아 가장 큰 수를 출력하는 함수

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int max(int, int, int);

int main(void)
{
    int num1, num2, num3;
    printf("가장 큰 정수 입력: ");
    scanf("%d %d %d", &num1, &num2, &num3);
    printf("입력한 정수 %d, %d, %d 중에서 가장 큰 정수는 %d이다.", num1, num2, num3, max(num1, num2, num3));

    return 0;

}

int max(int a, int b, int c)
{
    int maxnum = a;
    for (int i = 1; i <= 3; i++)
    {
        if (b > maxnum) // max = (max>b)?max:b; 라고 적을 수도 있음
        {
            maxnum = b;
        }
        if (c > maxnum)
        {
            maxnum = c;
        }
            
    }
    return maxnum;
}

 

05. 입력받은 정수의 제곱을 구하는 함수와 세제곱을 구하는 함수를 이용해 다섯제곱을 구하라

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int square(int);
int cube(int);

int main(void)
{
    int n;
    printf("정수 입력: ");
    scanf("%d", &n);

    printf("%d의 다섯 제곱은 %d입니다", n, square(n) * cube(n));

    return 0;

}

int square(int n)
{
    int result;
    result = n * n;
    return result;
}

int cube(int n)
{
    int result;
    result = square(n) * n;
    return result;
}

06. 원의 면적을 구하는 함수와 원의 둘레를 구하는 함수

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define PI 3.14

double area(double);
double circumference(double);

int main(void)
{
    double r;
    printf("반지름 입력: ");
    scanf("%lf", &r);

    printf("반지름 %.2lf인 원의 면적은 %.3lf입니다.\n", r, area(r));
    printf("반지름 %.2lf인 원의 둘레는 %.3lf입니다.\n", r, circumference(r));

    return 0;
}

double area(double r)
{
    double areaa = r * r * PI;
    return areaa;
}

double circumference(double r)
{
    double circum = 2 * PI * r;
    return circum;
}

 

07. 단리 계산 함수, 복리 계산 함수

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

double dan(int, int, double);
double bok(int, int, double);

int main(void)
{
    int a;
    int n;
    double r;
    printf("이자를 계산할 다음 세 항목 입력\n");
    printf("1. 원금: ");
    scanf("%d", &a);
    printf("2. 년: ");
    scanf("%d", &n);
    printf("3. 이율: ");
    scanf("%lf", &r);

    printf("단리 계산 총액: %lf\n", dan(a, n, r));
    printf("복리 계산 총액: %lf", bok(a, n, r));

    return 0;
}

double dan(int a, int n, double r)
{
    double s;
    s = a * (1 + r/100 * n);
    return s;
}

double bok(int a, int n, double r)
{
    double s;
    s = (a * pow((1 + r/100), n));
    return s;
}

 

08. 기회 7번 안에 난수 맞추기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 100

int main(void)
{
    int guess, input;

    srand((long)time(NULL));
    guess = rand() % 100 + 1;

    printf("1에서 %d사이에서 한 정수가 결정되었습니다.\n", MAX);
    printf("기회는 7번입니다\n");
    printf("이 정수는 무엇일까요? 입력ㄱㄱ\n");

    int i;
    for (i = 0; i < 7; i++)
    {
        
        scanf("%d", &input);
        if (input > guess)
            printf("이것보다 작음. 다시 ㄱㄱ: ");
        else if (input < guess)
            printf("이것보다 큼. 다시 ㄱㄱ: ");
        else
        {
            printf("정답!");
            break;
        }

    }
    if(i==7)//기회를 모두 소진 했을때만 출력, 6에서 멈춰소 1은 더해지기 대문에
        printf("기회가 모두 소진되었습니다.");

    return 0;
}

에...마지막까지 못맞췄을 때 다시 입력하라는 문구는안떳으면 좋겠는디...

 

09. 1부터 n까지 합을 재귀함수로 작성

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int sum(int);

int main(void)
{
    for (int i = 1; i <= 10; i++)
    {
        printf("1부터 %d까지의 합: %3d\n", i, sum(i));
    }
}

int sum(int n)
{
    if (n <= 1)
        return 1;
    else
        return (sum(n - 1) + n); //sum(n)=(sum(n - 1) + n) 이케 적는거 아님
}

 

10.x의 y제곱을 구하는 재귀함수, 제곱을 구하는 재귀함수

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

double squr(int);

int main(void)
{
    printf("6의 0승부터 10승까지\n");
    for (int i = 0; i <= 10; i++)
    {
        printf("6의 %2d승: %10.0lf\n", i, squr(i));
    }
}

double squr(int n)
{
    if (n <= 0)
        return 1;
    else
        return (6 * squr(n-1));//n이 아니라 n-1해야 재귀됨
}

 

11. 재귀함수를 이용하여 입력받은 정수를 16진수로 변환. 16진수 재귀함수

참고: https://blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=xtelite&logNo=50017626069 

 

재귀함수를 이용한 10진수를 16진수로 표시하는 프로그램

#include "stdio.h" void Show16(int n); void PrintHex(int n); int main() {  int n; scanf("%d", &...

blog.naver.com

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void hex(int);
void turn16(int);

int main(void)
{
    int n;
    printf("정수 입력: ");
    scanf("%d", &n);


    hex(n);//hex()안에 turn16이 있으므로 turn16이 아닌 hex를 호출해야함


    return 0;

}

void hex(int n)
{
    if (n == 0)
        return;

    hex(n / 16);
    turn16(n % 16);

}
void turn16(int n)
{
    if (n >= 10)
        printf("%c", 'A' + n - 10);
    else
        printf("%d", n);
}

12.

 

 

13.

 

 

14.

 

 

 

'C > perpect C' 카테고리의 다른 글

11장 연습문제 포인터 기초  (0) 2022.01.08
10장 변수 유효범위 연습문제  (0) 2022.01.05
8장 배열 연습문제  (0) 2021.12.30
7장 연습문제  (0) 2021.12.29
6장 연습문제  (0) 2021.12.29
Comments