Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

생일 축하 메시지를 출력하는 C++ 프로그램

C++를 활용하여 “Happy Birthday”라는 생일 축하 메시지를 출력하는 프로그램을 살펴보겠습니다. 이 프로그램의 흥미로운 핵심은, 최종적으로 출력할 문자보다 ASCII 코드상 1만큼 앞선 문자들로 구성된 문자열을 미리 선언해 두고, 실행 과정에서 각 문자를 하나씩 증가시켜 원하는 문구를 완성한다는 점입니다.

알고리즘

시작
원하는 출력 문자보다 하나 앞선 문자로 구성된 문자열 str1을 준비합니다. (예: ‘H’ → ‘G’)
이 문자열을 포인터 p에 할당합니다.
*p가 NULL이 아닌 동안 반복하는 while 루프를 만듭니다.
현재 가리키는 문자를 하나 증가시키고, 그다음 문자 위치로 이동합니다.
결과를 출력합니다.
종료

예제 코드

#include<iostream>
using namespace std;
main(){
char str[]="G`ooxAhqsgc`x",*p;
p=str;
while(*p!='\0')
++*p++;
cout<<str;
}

실행 결과

HappyBirthday

코드 동작 원리

문자열 “G`ooxAhqsgc`x”의 각 문자는 최종 출력값인 “HappyBirthday”의 대응 문자보다 ASCII 코드 값이 정확히 1 작습니다. 예를 들어 ‘G’(71)에 1을 더하면 ‘H’(72)가 되고, 백틱 ‘`’(96)에 1을 더하면 ‘a’(97)가 됩니다.

포인터 p가 문자열을 순회하면서 ++*p++ 연산을 수행합니다. 이 표현식은 현재 문자의 값을 먼저 1 증가시킨 뒤(++*p), 포인터를 다음 문자 위치로 이동시킵니다(p++). 널 문자 ‘\0’을 만나면 루프가 종료되고, 변환이 완료된 문자열 전체가 화면에 출력됩니다.

참고로 현대 C++ 표준에서는 main 함수의 반환 타입으로 int를 명시하고 마지막에 return 0;을 추가하는 것이 권장됩니다.