|
2006년 12월 28일
#include < stdio.h >
#include < stdlib.h > #include < time.h > int main() { int Qnum[3],Anum[3],i,strike=0,ball=0,k=1; char choice; srand(time(NULL)); for(i=0;i<3;i++) Qnum[i]=(rand()%10)+1; while(k) { printf("\t\t######################################\n"); printf("\t\t### 숫 자 야 구 게 임 ###\n"); printf("\t\t######################################\n"); printf("\t\t맞힐 숫자는 총 3개 이며, 숫자의 범위는 1-9까지 입니다.\n"); printf("\t\t10번이내에 맞추셔야 합니다.\n"); for(i=0;i<10;i++) { printf("(%d)번째 시도 :",i+1); scanf("%d %d %d",&Anum[0],&Anum[1],&Anum[2]); strike=0; ball=0; if (Qnum[0]==Anum[0]) strike++; else if((Qnum[0]==Anum[1])||(Qnum[0]==Anum[2])) ball++; if (Qnum[1]==Anum[1]) strike++; else if((Qnum[1]==Anum[0])||(Qnum[1]==Anum[2])) ball++; if (Qnum[2]==Anum[2]) strike++; else if((Qnum[2]==Anum[1])||(Qnum[2]==Anum[0])) ball++; if(strike>0||ball>0) { printf("\t*** %d 스트라이크 %d 볼 ***\n",strike,ball); if(strike!=3 && i!=9) { fflush(stdin); printf("계속 진행 하시겠습니까? (y/n)"); scanf("%c",&choice); fflush(stdin); if(choice=='y') continue; else if(choice=='n') exit(1); } } if (strike==0 && ball==0 &&i!=9) { printf("\t*** 아웃!!! ***\n"); fflush(stdin); printf("계속 진행 하시겠습니까? (y/n)"); scanf("%c",&choice); fflush(stdin); if(choice=='y') continue; else if(choice=='n') exit(1); } if (strike==3) { printf("######################################\n"); printf("### 3 스트라이크!! 축하합니다~^^ ###\n"); printf("######################################\n"); exit(1); } if(i==9) { printf("\t*** %d 스트라이크 %d 볼 ***\n",strike,ball); fflush(stdin); printf("아쉽습니다.다시 하시겠습니까? (y/n)"); scanf("%c",&choice); fflush(stdin); if(choice=='y') k=1; else if(choice=='n') k--; } } } 2006년 12월 26일
#include <stdio.h>
#define WORD 1 int main( void ) #ifndef WORD2 #ifndef WORD return 1;
#define WORD 1 이것은 WORD를 1로 치환한다는 것입니다. 쉬운 예를 들자면 많일 원의 면적을 구하는 프로그램을 짤다고 했을 때 원주율 3.14가 계산에 필요하게 됩니다.
... int r, s; // r 은 원의 반지름 길이, s는 원의 넓이 r = 3; s = 3.14 * r ^ 2; ...
위와 같이 되겠죠. 그런데 이때 원주율 3.14를 좀더 정확하게 3.141592로 바꿔야 한다면 위에는 3.14가 한번밖에 안쓰였지만 3.14를 약 100번정도 사용하였다면 그걸 일일이 다 바꾸는건 엄청난 노가다가 될것입니다. 이럴때 #define PI 3.14 라고 해두면 ... int r, s; // r 은 원의 반지름 길이, s는 원의 넓이 r = 3; s = PI * r ^ 2; ... 라는 코드가 만들어 지니까 #define PI 3.141592 라고만 바꾸면 끝이되죠 위의 경우에만 쓰라고 있는건 아니고 #define라는건 어떤 숫자라든지 긴 정의를 짧게 또는 의미있는 단어로 바꾸어 주는겁니다.
#ifdef WORD
여기서 #ifdef WORD 라는것은 'WORD란 단어가 define가 되어있다면' 이란 뜻입니다. 즉 WORD란 단어가 위에서 #define WORD 1으로 define되어 있으므로 참이 되고 그 다음줄 printf("Hello, ");가 실행되는 거죠 #endif 란 #ifdef 구문이 끝났음을 알리는 겁니다.
#ifndef WORD2 도 비슷합니다. 이것은 #ifdef와는 반대로 'WORD2란 단어가 define되어 있지 않다면'이란 뜻입니다. 즉 WORD2란 단어는 위에서 #define에 의해 define된 적이 없으므로 참이되고 그 다음줄 printf("world/n");이 실행이 됩니다.
#ifndef WORD 에서는 #ifndef WORD에서 WORD는 이미 define되어 있으므로 거짓이 되서 그 다름줄인 printf("HaHa\n"); 가 실행되지 않습니다. 즉 출력결과는 Hello world 가 됩니다. 2006년 12월 19일
|