예제

1. 문자가 숫자인지 알려주는 isDigit 함수를 구현하세요. 문자 ch를 입력 받고, ch가 숫자인지 출력하세요. 맞다면 YES, 아니면 NO를 출력합니다.

#include <iostream>
using namespace std;

bool isDigit(char ch);  // 숫자 여부 판별 함수

int main()
{
  char ch;

  while(1)
  {
    cout << "문자: ";
    cin >> ch;

    if(isDigit(ch))  // 숫자이면
    {
      cout << "결과: YES" << endl;
    }
    else  // 숫자가 아니면
    {
      cout << "결과: NO" << endl;
    }
  }

  return 0;
}

bool isDigit(char ch)
{
  if(ch >= 48 && ch <= 57)  // '0' ~ '9'
  {
    return 1;
  }
  else
  {
    return 0;
  }
}


2. 정수 N을 입력하면 2 N승을 출력하는 프로그램을 작성하세요. , 비트 연산을 이용합니다.

그리고 -1을 입력할 경우 프로그램은 종료됩니다.

#include <iostream>
using namespace std;

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

  while(1)
  {
    cout << "입력 : ";
    cin >> num;

    if(num == -1)  // -1을 입력하면
    {
      cout << "프로그램 종료" << endl;
      break;
    }

    result <<= num;  // num만큼 shift
    cout << "출력 : 2^" << num << = " << result << endl;
    result = 0x01;
  }

  return 0;
}


3. 다음과 같은 형태로 문자열이 출력되는 프로그램을 작성하시오.

1)
#include <iostream>
using namespace std;

int main()
{
  for(int i = 0 ; i < 5 ; i++)
  {
    for(int j = 0 ; j <= i ; j++)
    {
      cout << (char)('A' + j) << "\t";
    }
    cout << endl;
  }

  return 0;
}


2)
#include <iostream>
using namespace std;

int main()
{
  for(int i = 0 ; i < 5 ; i++)
  {
    for(int j = 0 ; j < 5 ; j++)
    {
      if(j == 4)
      {
        cout << 'a' << '\t';
      }
      else if(j == 3 && i >= 1)
      {
        cout << 'b' << '\t';
      }
      else if(j == 2 && i >= 2)
      {
        cout << 'c' << '\t';
      }
      else if(j == 1 && i >= 3)
      {
        cout << 'd' << '\t';
      }
      else if(j == 0 && i >= 4)
      {
        cout << 'e' << '\t';
      }
      else
      {
        cout << '\t';
      }
    }
    cout << endl;
  }

  return 0;
}



   인라인 함수

인라인 함수(Inline Function)는 새로운 종류의 함수가 아니고 함수의 속성이다. 인라인 함수의 기본 개념은 함수를 호출하는 대신에 함수의 내용을 그대로 옮겨 놓은 것이다. 인라인 함수를 사용하면 함수호출에 의해서 발생하는 오버헤드를 줄 일 수 있는 장점이 있다.
  // 인라인 함수 예제
#include <iostream>
using namespace std;

inline int SQUARE(int val)
{
  return val * val;
}

int main()
{
  cout << SQUARE(4<< endl;

  return 0;
}


   main함수의 인자
명령어에 인자가 있을 경우에 main() 함수는 인자를 가지게 된다. ANSI C에서 main() 함수의 원형은 다음과 같다.
int main(int argc, char *argv[])
첫 번째 인자 argc는 argument count에서 나온 말로 명령어 행에서 문자열의 개수이다. 문자열은 공백문자로 구분된다.
두 번째 인자 argv는 argument value에서 나온 말로 명령어 행의 각 문자열을 가리키는 포인터 배열이다.
   // main 함수 인자 예제
#include <stdio.h>

int main(int A, char *p[])
{
  int i;

  printf("%d\n", A);    // 명령어 인 자 개수
  
  for(i = 0 ; i < A ; i++)
  {
    printf("%d : %s\n", i, p[i]);  // 인 자들을 출력
  }

  return 0;
}


   구조체  
구조체는 의미상으로 연관된 여러 데이터를 하나의 이름으로 묶은 사용자 정의 자료형으로, 여러 개의 속성(구조체의 멤버)을 가지고 있는 개체를 정의할 수 있다. 다음은 기본적인 구조체 정의 형식이다.
struct 변수명
{
기본자료형 변수명;
기본자료형 변수명;
        ..........
};

구조체의 멤버는 도트연산자(.)를 사용하여 접근한다. 도트 연산자의 형식은 다음과 같다.
구조체변수.멤버이름
 // 구조체 예제
#include <stdio.h>

typedef struct  // typedef 을 이용하여 STUDENT 타입을 정의
{
  char name[20];
  int english;
  int math;
  float average;
} STUDENT;

int main()
{
  STUDENT st;  // 변수의 선언-메모리가 할당된다.

  // 키보드로부터 구조체 멤버의 값을 읽어들인다.
  printf("Please enter student name: ");
  gets(st.name);
  printf("Please enter english score: ");
  scanf("%d"&st.english);
  printf("Please enter math score: ");
  scanf("%d"&st.math);
  
  st.average = (float)(st.english + st.math) / 2;
  printf("student name: %s\n", st.name);
  printf("average: %6.3f\n", st.average);

  return 0;
}


 typedef
키워드 typedef은 새로운 자료형을 정의하는 데 사용된다. typedef은 전처리 문이 아닌 c문법이며, 긴 이름의 자료형을 짧게 정의하는 데 편리하게 이용된다. 또한 다른 시스템에 동일한 코드를 이식 할 때도 유용하게 사용 된다.
  // typedef 예제
#include <stdio.h>

typedef char NAME[20];  // 새로운 타입 정의
typedef int AGE;

int main()
{
  NAME student;  // 새로운 타입의 변수 선언
  AGE stAge;

  puts("Enter Name: ");
  gets(student);
  puts("Enter Age: ");
  scanf("%d"&stAge);

  printf("%s %d\n", student, stAge);
  
  return 0;
}


 구조체를 함수 인자로 전달
구조체를 함수 인자로 전달 할 때 call by value와 call by reference 둘 다 사용 할 수 있다. call by value 방법으로 전달하는 방법은 시스템에 부하가 많이 걸리므로 되도록이면 사용하지 않고 call by reference 방법을 이용하는 것이 좋다.


+ Recent posts