본문 바로가기
Algorithm/기본개념과 원리로 배우는C++

개념과 핵심원리로 배우는 C++ 프로그래밍 5장 프로그래밍 문제

by 준그래머 2023. 10. 31.
반응형

1. 다음 프로그래밍 출력 결과가 문자열"C++"가 되도록 Set 함수를 작성하시오.

void main()
{
     int a = 0;
     char* s = (char*)&a;

    Set(s);
    cout << (char*)&a << endl;
}
#include <iostream>
using namespace std;
void set(char* s){
        *(s + 0) = 'C';
        *(s + 1) = '+';
        *(s + 2) = '+';
        *(s + 3) = '\\0';
}
int main(void){
        int a = 0;
        char* s = (char*)&a;
 
 set(s);
        cout << (char*)&a << endl;
}

 

2. 다음 프로그램의 출력 결과가 3이 되도록 Set함수를 작성하시오.

void main()
{
     int a;
     int* p = &a;
     int** pp = &p;

    Set(pp,3);
    cout << a << endl;
}
#include <iostream>
using namespace std;
void set(int** k, int i){
        **k = i;
}
int main(void){
        int a;
        int* p = &a;
        int** pp = &p;
 
        set(pp,3);
        cout << a << endl; 
}

 

3.  다음 프로그램의 출력 결과가 3이 되도록 Increment 함수를 작성하시오.

void main()
{
     int a = 2;
     Increment(a);
     cout << a << endl;
}
#include <iostream>
using namespace std;
void Increment(int& a){
        a = 3;
}
int main(void){
 
        int a = 2;
        Increment(a);
        cout << a << endl;
}

 

4. memset함수는 dest가 가리키는 주소로부터 count바이트의 메모리 영역에 1바이트 씩 값 c를 채우는 역활을 한다.

void* memset(void *dest, int c,  size_t count);

같은 기능을 수행하는 MyMemset함수를 구현하시오(다음 프로그램을 실행할 경우 -1이 출력되어야 한다).

void main()
{
     int a;
     MyMemset(&a, -1, 4);
     cout << a << endl;
}
#include <iostream>
using namespace std;
void MyMemset(int* x, int y, int z){
        for(int i = 0; i < z; i++){
                *(x + i) = y;
        }
}
int main(void){
 
        int a;
        MyMemset(&a, -1, 4);
        cout << a << endl;
}

풀이는 생략하겠습니다.