C++/기초를 탄탄히 세워주는 C++ 프로그래밍 입문(황준하 저)

기초를 탄탄히 세워주는 C++ 프로그래밍 입문 2장 연습문제

꾸준함. 2017. 6. 20. 23:26

[2.1]

/*

int형 변수 2개를 선언하고 cin을 사용하여 값을 입력받도록 한다.

그리고 cout을 사용하여 두 값에 대한 사칙연산(+, -, *, /) 결과를 출력해 보도록 한다.

어떤 값을 출력하기 위해서는 cout과 출력할 변수를 기술해 주면 된다.

그런데 cout의 대상은 변수뿐만이 아니라 상수, 수식, 함수(반환값) 등 어떤 값이 동반되는 경우라면 어느 것이든 될 수 있다.

*/

#include <iostream>

using namespace std;

 

int main(void)

{

        int num1, num2;

        cout << "숫자 두개 입력:";

        cin >> num1 >> num2;

 

        cout << ":" << num1 + num2 << endl;

        cout << ":" << num1 - num2 << endl;

        cout << ":" << num1*num2 << endl;

        cout << "나눗셈:" << num1 / num2 << endl;

        return 0;

}

[2.2]

/*

5 5열의 원소를 가지는 char형 배열을 선언하고 실행 결과와 같이 마름모 모양으로 '*' 문자를 채워보도록 한다.

그리고 cout을 사용하여 배열 원소의 값을 출력하되 실행 결과와 같이 출력되도록 한다.

*/

#include <iostream>

using namespace std;

 

int main(void)

{

        char arr[5][5] =

        {

               {' ', ' ', '*', ' ', ' '},

               { ' ', '*', '*', '*', ' ' },

               { '*', '*', '*', '*', '*' },

               { ' ', '*', '*', '*', ' ' },

               { ' ', ' ', '*', ' ', ' ' },

        };

 

        for (int i = 0; i < 5; i++)

        {

               for (int j = 0; j < 5; j++)

               {

                       cout << arr[i][j];

               }

               cout << endl;

        }

        return 0;

}

[2.3]

<ns.h>

/*

"ns.h" 파일을 만들고 MyNS라는 네임스페이스를 만들어 본다.

MyNS 네임스페이스에는 2개의 int 값 중 최대값을 반환하는 MyMax라는 함수와 최소값을 반환하는 MyMin이라는 함수를 추가한다.

, 함수 프로토타입만 추가해야한다.

그리고ns.cpp 파일에는 이 두함수의 정의 부분을 추가하도록 한다.

main.cpp main 함수에서는 MyNS MyMax, MyMin 함수를 사용해보도록 한다

*/

#ifndef NS_H

#define NS_H

 

#include <iostream>

using namespace std;

 

namespace MyNS

{

        int MyMax(int, int);

        int MyMin(int, int);

}

 

#endif


<ns.cpp>

#include "ns.h"

 

int MyNS::MyMax(int num1, int num2)

{

        if (num1 > num2)

               return num1;

        else if (num1 < num2)

               return num2;

        else

               cout << "두 수는 동일하다" << endl;

}

 

int MyNS::MyMin(int num1, int num2)

{

        if (num1 > num2)

               return num2;

        else if (num1 < num2)

               return num1;

        else

               cout << "두 수는 동일하다" << endl;

}

 

<nsMain.cpp>

#include "ns.h"

 

int main(void)

{

        int num1, num2;

        cout << "두 수 입력:";

        cin >> num1 >> num2;

 

        cout << "최댓값:" << MyNS::MyMax(num1, num2) << endl;

        cout << "최솟값:" << MyNS::MyMin(num1, num2) << endl;

        return 0;

}

[2.4]

/*

직사각형과 원의 면적을 계산하는 GetArea라는 함수를 작성하고자 한다.

사용자로부터 계산하고자 하는 모양을 입력받고, 직사각형일 경우 가로와 세로값을 입력받고,

원일 경우 반지름을 입력받는다.

그리고 GetArea 함수를 통해 면적을 계산하여 화면에 출력한다.

*/

#include <iostream>

using namespace std;

 

#define PI 3.14

 

int GetArea(int col, int row)

{

        return col*row;

}

 

double GetArea(int radius)

{

        return radius*radius*PI;

}

 

int main(void)

{

        int sel;

        cout << "[1].직사각형 넓이\t[2].원의 넓이:  ";

        cin >> sel;

        switch (sel)

        {

        case 1:

               int col, row;

               cout << "가로 세로 입력:";

               cin >> row >> col;

               cout << "직사각형의 넓이:" << GetArea(col, row) << endl;

               break;

        case 2:

               int radius;

               cout << "반지름 입력:";

               cin >> radius;

               cout << "원의 넓이:" << GetArea(radius) << endl;

               break;

        }

        return 0;

}


[2.5]

/*

5개 이하의 int형 값을 매개 변수로 전달받아 합을 반환하는 Sum 함수를 구현해 본다.

이 때 Sum 함수는 단 하나만 구현해야 한다.

디폴트 매개변수의 복습을 위한 간단한 문제이다

*/

#include <iostream>

using namespace std;

 

int Sum(int num1 = 1, int num2 = 2, int num3 = 3, int num4 = 4, int num5 = 5)

{

        return num1 + num2 + num3 + num4 + num5;

}

 

int main(void)

{

        cout << "Sum():" << Sum() << endl;

        cout << "Sum(5):" << Sum(5) << endl;

        cout << "Sum(4, 5):" << Sum(4, 5) << endl;

        cout << "Sum(3, 4, 5):" << Sum(3, 4, 5) << endl;

        cout << "Sum(2, 3, 4, 5):" << Sum(2, 3, 4, 5) << endl;

        cout << "Sum(1, 2, 3, 4, 5):" << Sum(1, 2, 3, 4, 5) << endl;

        return 0;

}

[2.6]

/*

다음과 같은 main 함수가 동작할 수 있도록 GetArray 함수를 작성한다

*/

#include <iostream>

using namespace std;

 

int *GetArray(int num)

{

        int *p = new int[num]; //동적할당

        for (int i = 0; i < num; i++)

               p[i] = i;

        return p;

}

 

int main(void)

{

        int i;

        int *pAry;

 

        pAry = GetArray(5);

        for (i = 0; i < 5; i++)

               cout << pAry[i] << " ";

        cout << endl;

 

        delete[]pAry;

 

        return 0;

}

 

[2.7]

/*

다음과 같은 구조체가 있다.

이 구조체 변수 5개를 원소로 갖는 배열을 포인터 변수를 사용하여 동적으로 생성하고 각 원소의 x, y값을 임의의 값으로 채워 본다

struct Point

{

        int x, y;

};

이 연습문제에서는 각 원소에 대해 배열 방식이 아닌 포인터 방식으로 접근해 본다.

*/

#include <iostream>

using namespace std;

 

struct Point

{

        int x, y;

};

 

int main(void)

{

        struct Point *pAry = new struct Point[5];

 

        for (int i = 0; i < 5; i++)

        {

               *(pAry + i) = { i, i };

        }

 

        for (int i = 0; i < 5; i++)

        {

               cout << "[" << pAry[i].x << ", "<< pAry[i].y << "]" << endl;

        }

 

        return 0;

}

[2.8]

/*

다음 프로그램의 출력결과는 무엇인가?

bool 타입에 대한 이해를 확인하는 문제이다.

bVar1 bVar2의 값이 무엇인지 생각해 보고 직접 실행하여 확인해본다

*/

#include <iostream>

using namespace std;

 

typedef int BOOL;

 

int main(void)

{

        BOOL bVar1;

        bool bVar2;

 

        bVar1 = (1 < 2) + (2 < 3);

        bVar2 = (1 < 2) + (2 < 3);

 

        cout << "bVar1:" << bVar1 << endl;

        cout << "bVar2:" << bVar2 << endl; //bool이므로 1 or 0만 출력가능

}

[2.9]

/*

1부터 100까지 더하는 프로그램을 작성한다.

for문을 사용하고 index용 변수는 for 문으ㅢ 초기화 구문 내에서 선언하여 사용하도록 한다.

매우 간단한 문제이다. 하지만 이 문제로부터 C++의 경우 어느 위치에서든지 변수 선언이 올 수 있으며

특히 for 문의 index로 다음과 같은 구문을 매우 흔하게 사용함을 알도록 한다

*/

#include <iostream>

using namespace std;

 

int main(void)

{

        int sum = 0;

 

        for (int i = 0; i < 100; i++)

               sum += (i + 1);

 

        cout << "합계:" << sum << endl;

        return 0;

}



개발 환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


[참고] 기초를 탄탄히 세워주는 C++ 프로그래밍 입문 황준하 저

반응형