'2009/03/24'에 해당되는 글 5건

  1. 2009.03.24 문자열
  2. 2009.03.24 성적관리 프로그램
  3. 2009.03.24 다중포인터II, 포인터배열, 배열포인터
  4. 2009.03.24 다중 포인터
  5. 2009.03.24 야구게임
C/C++2009. 3. 24. 20:55

/*
#include <stdio.h>
int main(){

 int ch;

 while(1){ 
 ch = getchar ();
 if(ch==0xe0){
 printf("특수키입니다\n",ch);
 ch = getchar ();
 }
 
 printf("입력한 문자는 %c(%x)(%d)입니다\n",ch,ch,ch);

 if(ch=='q'){

 printf("잠시만 기다려주세요...");
 getch();
 return 0;
 }
 }
}
*/

#include <stdio.h>
#include <stdlib.h>


int main(){

 char ch[10];
 /*
 puts("gets함수 사용");
 gets(ch); //10개의 문자 이상의 값을 입력 받을 시 에러
 puts(ch);

 */
 puts("fgets함수 사용");
 fgets(ch,sizeof(ch),stdin); //입력 받을 size크기를 조절가능
 puts(ch);
 


}


/*
#include <stdio.h>

int main(){          //문자열의 길이를 반환하는 함수

char ch[20];
printf("문자열 입력 : ");
fgets(ch,sizeof(ch),stdin);;
printf("입력한 문자열의 크기는 : %d\n",strlen(ch));
return 0;
}
*/

/*
#include <stdio.h>     //문자열을 복사하는 함수
#include <string.h>

int main(){

char ar1[10] = "Apple";
char ar2[10] = "Orange";
printf("ar1 : %s\n",ar1);
strcpy(ar1,ar2);
printf("ar1 : %s\n",ar1);
strncpy(ar1,"Banananananananana",sizeof(ar1)-1);
printf("ar1 : %s\n",ar1);
return 0;

}
*/

/*
#include <stdio.h>   //문자열을 연결하는 함수
#include <string.h>

int main(){

char si[10] = "서울시 ";
char gu[10] = "동대문구 ";
char dong[10] = "신설동 ";
char address[100] = "\0";

strncat(address, si, sizeof(address)-strlen(address)-1);
strncat(address, gu, sizeof(address)-strlen(address)-1);
strncat(address, dong, sizeof(address)-strlen(address)-1);
puts(address);
return 0;
}
*/

/*
#include <stdio.h>     //문자열을 복사하는 함수
#include <string.h>

int main(){

char ar1[10] = "Apple";
char ar2[10] = "Apple";
int tmp;
tmp = strcmp(ar1,ar2);   //두 문자열이 같을 때 0을 반환
printf("비교값 %d\n",tmp);
tmp = strcmp(ar1,"Orange");  //뒤의 문자열의 값이 더 클때 -1 반환
printf("비교값 %d\n",tmp);
tmp = strcmp(ar1,"Appld");  //앞의 문자열의 값이 더 클때 1을 반환
printf("비교값 %d\n",tmp);
tmp = strcmp(ar1,"Apppp",3);
printf("비교값 %d\n",tmp);  //앞의 3문자만 비교하여 결과를 반환
return 0;

}
*/

 

/*
//strstr   문자열 검색후 검색결과가 참일경우 그문자열의 주소를 반환(참), 검색결과 없을시 NULL(거짓)
#include <stdio.h>    
#include <string.h>

int main(){

char ch[] = "apple orange grape banana";
char * p;

p = strstr(ch,"orange");

if(p==NULL){
printf("문자열을 찾지 못했습니다.\n");
}else{
printf("해당 문자열이 있습니다.\n");
}

return 0;
}
*/


/*
#include <stdio.h>
#include <string.h>
#define 후렴 "\n후렴 : 무궁화 삼천리 화려강산\n대한사람 대한으로 길이 보전하세\n\n"

int main(){

char ch[]="1.동해물과 백두산이 마르고 닳도록\n"
"하느님이 보우하사 우리 나라만세\n"
후렴
"2.남산 위에 저소나무 철갑을 두른듯\n"
"바람서리 불변함은 우리 기상일세\n"
후렴
"3.가을하늘 공활한데 높고 구름 없이\n"
"밝은달은 우리가슴 일편담심일세\n"
후렴
"4.이기상과 이맘으로 충성을 다하여\n"
"괴로우나 즐거우나 나라 사랑하세\n"
후렴;

char *p = ch;
char search[] = "나라";
int Count = 0;

while(1){
p = strstr(p,search);
if(p==NULL){break; 
}
Count++;
strncpy(p,"국가",4);
}

printf("%s는 총 %d번 검색되었습니다 \n",search,Count);
printf("%s",ch);

return 0;

}
*/

/*
#include <Turboc.h>
#include <string.h>

void main(void){

char str[]="Made In Korea";
char str2[16];

strcpy(str2,str);
strupr(str2);
printf("strupr => %s\n",str2);
strcpy(str2,str);
strlwr(str2);
printf("strlwr => %s\n",str2);
strcpy(str2,str);
strrev(str2);
printf("strrev => %s\n",str2);
strcpy(str2,str);
strset(str2,'*');
printf("strset => %s\n",str2);


return 0;

}
*/

#include <stdio.h>
#include <string.h>

int main(){

 char ch[]="Made In Korea";
 char *p;
 int i;

 
 printf("\n");
 for(i=strlen(ch+1);i>=0;i--){
  printf("%c",ch[i]);
  
 }

 return 0;
}

여기부터 멍 때려서

하나도 모르겠다 ㅜㅜ

Posted by 샤키
C/C++2009. 3. 24. 20:52

/*
#include <stdio.h>
#define MAX 10


void Input_detail(int grade[MAX][4],int i){
 printf("학생의 국어 : ");
 scanf("%d",&grade[i][0]);
 printf("학생의 영어 : ");
 scanf("%d",&grade[i][1]);
 printf("학생의 수학 : ");
 scanf("%d",&grade[i][2]);


 grade[i][3] = grade[i][0] + grade[i][1] + grade[i][2];


}
void Input(int (*grade)[4]){  // grade[MAX][4]
 int i;
 for(i=0;i<MAX;i++){
  if(grade[i][0] == -1)break;
 }


 Input_detail(grade,i);

 


 


}

 


int ranking(int grade[MAX][4] , int Sum){
 int rank=1;          //rank라는 변수를 1로 하고
 int i;


 for(i=0;i<MAX;i++){
  if(grade[i][0] != -1){
   if(grade[i][3] > Sum){      //입력된 합계가 Sum보다 많은 1씩 누적
    rank++;
   }
  }
 }


 return rank;

 

 


}

 


Print(int grade[MAX][4]){
 int i;
 for(i=0;i<MAX;i++){
  if(grade[i][0] != -1){
   printf("%5d | %5d | %5d | %5d | %5d | %.2f | %5d \n",
    i+1,grade[i][0],grade[i][1],grade[i][2],grade[i][3],
    (float)grade[i][3]/3, ranking(grade,grade[i][3]) );


  }


 }


}
void Sujung(int grade[MAX][4]){
 int Sel;
 int i;


 printf(" 1. 수정 \n");
 printf(" 2. 삭제 \n");
 printf(" > ");
 scanf("%d",&Sel);
 printf("몇번째 테이블 : ");
 scanf("%d",&i);
 i--;
 if(Sel==1){
  Input_detail(grade,i);
 }else if(Sel==2){
  grade[i][0] = -1;    //삭제는 -1 즉 작성되지 않은상태로 돌린다는 의미
 }else{
  printf("잘못입력 하셨습니다 \n");


 }
}

 


int main(){


 int grade[MAX][4];
 int Select;
 int i;


 


 for(i=0;i<MAX;i++){
  grade[i][0] = -1;  //초기값 성적이 작성 되지 않은상태를 -1


 }


 while(1){


  system("cls");
  printf("==성적관리 프로그램 ==\n");
  printf(" 1. 입 력 \n");
  printf(" 2. 출 력 \n");
  printf(" 3. 수정 및 삭제 \n");
  printf(" 4. 프로그램 종료 \n");
  scanf("%d",&Select);
  switch(Select){
   case 1:
    Input(grade);
    break;
   case 2:
    Print(grade);
    break;
   case 3:
    Sujung(grade);
    break;
   case 4:
    printf("프로그램을 종료하겠습니다 \n");
    return 0;
  }
  system("pause");

 


 } 

 


 return 0;
}
*/

함수를 이용이 눈에 띄는 쌤 ver.

Posted by 샤키
C/C++2009. 3. 24. 20:51

/*
#include <stdio.h>   //문자열 중에 일치되는 첫문자 찾기

int main(){

char Select;
char Sel[]= "None but The Brave deserves the Fair";
char *tmp;


printf("문자열 : %s\n",Sel);
printf("찾을 문자 입력 : ");
scanf("%c",&Select);
for(tmp=Sel;*tmp!=NULL;tmp++){
if(*tmp==Select)break;
}
printf("일치되는 첫번째 문자열은 %d입니다 \n",tmp-Sel+1);
}
*/

/*
#include <stdio.h>
int main(){

char *name1[4] = { "apple","Orange","Banana","Grape"};
char name2[4][10] = { "apple","Orange","Banana","Grape"};
int i;

for(i=0;i<4;i++){  //2차원 배열
printf("name2[%d] = %8s (%d) \n",i,name2[i],name2[i]);//12로 시작 스텍영역
}
printf("============================\n");

for(i=0;i<4;i++){  //포인터 배열
printf("name1[%d] = %8s (%d) \n",i,name1[i],name1[i]);//4로 시작 데이터영역
}
return 0;
}
*/

/*
#include <stdio.h>

int main(){

int A[5] = {10,20,30,40,50};
int *p = A;
int i;
int AA[3][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (**pp)[4];  //**pp 두번으로 커널영역 접근하여 에러발생

for(i=0;i<5;i++){
printf("%d\n",p[i]);
}

pp = AA;

printf("pp = %d \n",pp);
printf("AA = %d \n",AA);

printf("*pp = %d \n",*pp);
printf("*AA = %d \n",*AA);

printf("**pp = %d \n",**pp);
printf("**AA = %d \n",**AA);

printf("AA[1][2] = %d \n",AA[0][1]);
printf("pp[1][2] = %d \n",pp[0][1]);
return 0;

}
*/


/*
#include <stdio.h>
int main(){

 char c;
 printf("getchr : ");
 c = getchar ();
 printf("입력한 값 : %c\n",c);
 //fflush(stdin);
 printf("fgetc : ");
 c = fgetc(stdin);
 printf("입력한 값 : %c\n",c);
 return 0;
}
*/

 

Posted by 샤키
C/C++2009. 3. 24. 20:47

/*
#include <stdio.h>   //2차원 배열

int main(void){

 int A[3][4] = {
  {1,2,3,4},
  {5,6,7,8},
  {9,10,11,12}

 };
 int i,j;

 printf("A[0][0] = %d \n",A[0][0]);
 printf("A[0][0] = %d \n",A[1][3]);

 printf("A = %d \n",A);
 printf("A[0] = %d \n",A[0]);
 printf("&A[0][0] = %d \n",&A[0][0]);
 printf("A[1] = %d \n",A[1]);
 printf("&A[1][0] = %d \n",&A[1][0]);

 for(i=0;i<3;i++){
  for(j=0;j<4;j++){
   printf("%3d ",A[i][j]);
  }
  printf("\n");

 }

 return 0;
}
*/

/*

#include <stdio.h>   //2차원배열을 이용 학생성적

int main(void){

 int A[3][4];
 int i,j;

 printf("<<학생 성적 입력>>\n");

 for(i=0;i<3;i++){
  printf("<< %d번째 학생>>\n",i+1); 
  printf(" 국어 : ");
  scanf("%d",&(A[i][0]));  //표를 생각해보면 됨
  printf(" 영어 : ");
  scanf("%d",&(A[i][1]));
  printf(" 수학 : ");
  scanf("%d",&(A[i][2]));
  A[i][3]=A[i][0]+A[i][1]+A[i][2];  //for이 세번 돌면서 합까지 열3번째 계산
 }
  
 
  printf("%s %5s %5s %5s %5s\n","Num","국어","영어","수학","합계");
  
  for(i=0;i<3;i++){
   printf("[%d]",i+1);
   for(j=0;j<4;j++){
    printf("%5d", A[i][j]);
   }
   printf("\n");
  }
  return 0;
}
*/

#include <stdio.h>

int main(){

 int x = 10;

 int * p;    //일중 포인터
 int ** pp;   //이중 포인터
 int *** ppp;   //삼중 포인터
 int y = 200;

 p = &x;

 *p = 100;

 printf("x = %d \n",x);   //x의값
 printf("&x = %d \n",&x); //x의 주소

 pp = &p;

 printf("pp = %d \n",pp);  //p의 주소
 printf("*pp = %d \n",*pp);  //2번따라가서 x의 주소
 printf("**pp = %d \n",**pp); //x의 값

 ppp = &p;
 printf("ppp = %d \n",ppp);
 printf("*ppp = %d \n",*ppp);
 printf("**ppp = %d \n",**ppp);
 //printf("***ppp = %d \n",***ppp);

 x = &y;

 printf("***ppp = %d \n",***ppp);

 return 0;
}

슬슬 한계다...

Posted by 샤키
C/C++2009. 3. 24. 20:45

#include <stdio.h>   //야구게임
#include <time.h>
#include <stdlib.h>

int main(){
 int Player[3];  //플레이어 숫자
 int CPU[3];  //컴퓨터 숫자
 int strike=0,ball=0,count=0;
 int i,j;
 int tmp;

 srand(time(NULL));
 rand();rand();rand();
 srand(rand());

 CPU[0]=rand()%9+1;  //랜덤수 생성
 CPU[1]=rand()%9+1;
 CPU[2]=rand()%9+1;


 while((CPU[0]==CPU[1])||(CPU[1]==CPU[2])||(CPU[0]==CPU[2])) //랜덤수가 중복 되지 않기 위해
 {
  CPU[0]=rand()%9+1;
  CPU[1]=rand()%9+1;
  CPU[2]=rand()%9+1;
 }


 printf("== 게임을 시작 합니다 ==\n"); 

 while(1){
  printf("= 숫자를 세개 입력하세요 = :");
  scanf("%d",&tmp);

  strike=0;
  ball=0;

  Player[0] = tmp/100;
  Player[1] = tmp%100/10;
  Player[2] = tmp%100%10;


  for(i=0;i<3;i++)  
   for(j=0;j<3;j++)
    if(CPU[i]==Player[j]&&i==j){
     strike++;      //스트라이크 맞춘갯수
    }else if(CPU[i]==Player[j]){
     ball++;       //자리는 안맞고 숫자만 맞춘갯수
    }


    count++;

    printf("%d번째  Strike: %d  Ball: %d\n",count,strike,ball);
    printf("\n");


    if(strike==3){        // 3개 모두 자리수 맞추면 끝
     printf("숫자는 %d, %d, %d 입니다\n",CPU[0],CPU[1],CPU[2]);
     printf("%d 번만에 맞추셨습니다!! \n",count);
     break;
    }

 }
}


Posted by 샤키