연습문제/열혈강의

9장. 연습문제

규남 2013. 4. 6. 00:17
반응형

1번. 다음 실행 결과를 보고 함수 abs()를 구현하세요. 이 함수는 키보드를 통해서 입력받는 값의 절대값을

구하는 프로그램입니다.

#include <stdio.h>

int abs(int);

int main()
{
    int num = 0;
    int result;

    printf("정수를 입력하세요:");
    scanf("%d", &num);

    result = abs(num);
    printf("절대값은 : %d\n", result);
    return 0;
}

int abs(int n)
{
    if(n<0)
    {
            n = n *(-1);
    }
    return(n);
}


결과 화면



2번. 다음 시나리오를 구현하는 코드를 완성하세요.

#include <stdio.h>


int sum(int, int);

int main()
{
     sum(1,1);

    return 0;
}

int sum(int n1, int n2)
{
    for(;;)
    {
            printf("%d %d ", n1, n2);
            n1 = n1+n2;
            n2 = n1+n2;
         if(n2 > 144)
          {
                break;
          }
    }
    return(n1,n2);
}


결과 화면



3번. 다음 프로그램은 사칙 연산을 위해 각각 plus, minus, multiply, divide 함수를 선언하고 사용한 코드입니다. 제시한 실행 결과가 나오게 선언한 함수들을 직접 구현하세요.

#include <stdio.h>

int plus(int i, int j);
int minus(int i, int j);
int multiply(int i, int j);
float divide(int i, int j);

int main()
{
    int a,b;
    int result;
    double result2;

    printf("input two numbers : ");
    scanf("%d %d", &a, &b);

    result = plus(a,b);
    printf("a + b = %d \n", result);
    result = minus(a,b);
    printf("a - b = %d \n", result);
    result = multiply(a,b);
    printf("a * b = %d \n", result);
    result2 = divide(a,b);
    printf("a / b = %lf \n", result2);

    return 0;
}

int plus(int i, int j)
{
        int result;
          result = i+j;
        return(result);
}

int minus(int i, int j)
{
        int result;
          result = i-j;
        return(result);
}

int multiply(int i, int j)
{
        int result;
          result = i*j;
        return(result);
}

float divide(int i, int j)
{
        float result;
          result = (float)i/j;
        return(result);
}


결과 화면



4번. 다음 실행 결과와 같이 밑변과 높이를 입력받아서 사각형의 넓이를 출력하는 프로그램을 구현하세요. 이때 사각형의 넓이를 구하는 함수 getArea(int x, int y)를 구현하여 사용하세요. 함수getArea(int x. int y)는 각각 x 값과 y 값을 입력받아서 사각형의 넓이를 구하는 함수입니다.

#include <stdio.h>

getArea(int,int);

int main()
{
        int x,y;
        int result;
          printf("밑변 길이 :");
          scanf("%d", &x);
          printf("높이 :");
          scanf("%d", &y);

          result = getArea(x,y);
          printf("사각형의 넓이는 %d입니다.\n", result);
        return 0;
}

getArea(int n1, int n2)
{
        int result;
          result = n1*n2;
        return(result);
}


결과 화면



5번. 정수를 인자로 받아 제곱을 반환하는 함수 square()와 세제곱을 반환하는 함수 cube()를 작성하세요.

또한 이들을 사용하여 4제곱, 5제곱을 출력하는 함수 quartic()과 quintic()을 작성하세요. 그리고 이들 함수를 조합해서 다음과 같이 출력하는 프로그램을 작성하세요.

#include <stdio.h>

int square(int);
int cube(int);
int quartic(int);
int quintic(int);

int main()
{
        int n1;
        int result1, result2, result3, result4;

          printf("A TABLE OF POWERS\n");
          printf("-------------------------------------------------------------\n");
          printf(" INTEGER SQUARE CUBE QUARTIC QUINTIC\n");
          printf("-------------------------------------------------------------\n");

        for(n1=1; n1<=3; ++n1)
          {
                result1 = square(n1);
                result2 = cube(n1);
                result3 = quartic(n1);
                result4 = quintic(n1);
                printf(" %3d %3d %3d %3d %3d\n",
                n1, result1, result2, result3, result4);
          }
        return 0;
}

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

int cube(int n1)
{
        int result;
          result = n1*n1*n1;
        return(result);
}

int quartic(int n1)
{
        int result;
          result = square(n1)*square(n1);
        return(result);
}

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


결과 화면



6번. 두 정수를 입력받아 덧셈을 하는 함수 Add()와 연산을 몇 번 수행했는지 세는 Count()함수를 작성하세요. 단, 총 연산은 100번으로 제한하며 두 정수 모두 0을 입력하면 종료합니다. 결과를 다음과 같이 출력하는 프로그램을 작성하세요. 정적 변수를 이용하세요.

#include <stdio.h>

int Add(int,int);
int Count(int);

int main()
{
        int a,b,c;
        int result, result1;


        for(c=0; c<101; ++c)
         {
                printf("숫자 두 개를 입력하세요(0 0 -> exit):");
                scanf("%d %d", &a, &b);
                result = Add(a,b);
                printf("덧셈 결과 : %d\n", result);
                result1 = Count(c);
             if((a==0 && b==0) || c==100)
                {
                            printf("총 연산 수 : %d\n", result1);

                            return 0;
                }
         }
        return 0;
}

int Add(int n1, int n2)
{
        int result;
          result = n1+n2;
        return(result);
}

int Count(int n3)
{
        int result;
          result = n3;
        return(result);
}


결과 화면



7번. 알파벳 문자 하나를 입력받아 알파벳 순서로 몇 번째 문자인지 출력하는 프로그램을 작성하세요.단, 몇 번째 알파벳 문자인지 판단하는 Alpha()함수를 작성하세요. char형과 int형은 덧셈과 뺄셈 연산이 가능합니다.

#include <stdio.h>
char Alpha(int);

int main()
{
        char a;
        int result;
          printf("알파벳을 입력하세요:");
          scanf("%c", &a);
          result = Alpha(a);
          printf("입력한 %c는 알파벳 순서로 %d번째 문자입니다.\n",a,result);

        return 0;
}

char Alpha(int a)
{
        int result;
        if(a==65 || a==97)
         {
                result = 1;
              return(result);
         }
        else if(a>65 && a<91)
         {
                result = a-64;
              return(result);
         }
        else if(a>97 || a<123)
         {
                result = a-96;
              return(result);
         }
        else
         {
                printf("잘못된 입력입니다.\n");
         }
}


결과 화면



8번. 1부터 n까지의 합을 구하는 간단한 재귀 함수를 작성해 보세요. 반복문으로도 간단히 구현할 수 있지만, 반드시 재귀 함수를 통해 구현해 보세요. 팩토리얼의 계산과 크게 다르지 않습니다.

#include <stdio.h>
int factorial(int);

int main()
{
        int num = 10;
        int result;
          printf("input your number = %d\n", num);
          result = factorial(num);
          printf("1부터 10까지의 합 = %d\n", result);

        return 0;
}

int factorial(int n1)
{
        if(n1<=1)
         {
            return 1;
         }
        else
         {
            return n1 + factorial(n1-1);
         }
}


결과 화면



728x90
반응형

'연습문제 > 열혈강의' 카테고리의 다른 글

8장. 연습문제  (1) 2013.04.05
7장. 연습문제  (0) 2013.04.03
6장. 연습문제  (0) 2013.04.01
5장. 연습문제  (2) 2013.04.01
4장 연습문제  (2) 2013.03.31
2장 연습문제  (0) 2013.03.31