본문 바로가기

C언어/C과제

C과제 10

1. 잘못된 부분을 찾아서 고치고, 이유를 설명하세요.

1)  int num = 128;

    char* pNum = #

    printf(“%d”, *pNum);

 

1)  int num = 128;

    unsigned char* pNum =(unsigned char*)#

    printf(“%d”, *pNum);

pNum char 형의 포인터 이므로 &num(char *)로 캐스팅 해야한다. Char signed 형일 때는 양수로 +127까지 밖에 표현이 안되므로 undigned 형으로 해줘야한다.

 

 

2)  char* pStr = “Control”;

    printf(“%s \n”, *pStr);

 

2)  char* pStr = (char *)“Control”;

    printf(“%s \n”, pStr);

    pStr char 형의 포인터 이므로 “Control” (char*)로 캐스팅 해야한다.

    printf(“%s \n”, *pStr);  pStr Control 이 들어있으므로

    가리키는 곳을 출력하지말고 *pStr 대신 pStr로 출력해야함.

          

 

 

2. char형 변수 ch1 ch2의 데이터를 서로 바꾸는 swap함수를 구현하세요. 변수 ch1에는 ‘A’, 변수 ch2에는 ‘C’가 대입되어 있습니다. Call By Reference(참조에 의한 호출)로 함수를 호출하세요.

출력)    Before : ch1=A, ch2=C

           After  : ch1=C, ch2=A

 

 

#include <stdio.h>

int swap(char *ch1, char *ch2);  

int main()
{
  char ch1,ch2;
  ch1 ='A';
  ch2 ='C';
  printf("Before: ch1=%c, ch2=%c\n",ch1,ch2);
  swap(&ch1,&ch2);
  
}

int swap(char *a, char *b)
{
  char temp;
  temp=*a;
  *a=*b;
  *b=temp;

  printf("After : ch1=%c, ch2=%c\n",*a,*b);

}

  
  

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

출력)    문자 : P

           결과 : NO

 

#include <stdio.h>

void isdigit(char n1);


int main()
{
  char a;

  printf("문자: ");
  scanf("%c",&a);

  isdigit(a);
  return 0;


}

void isdigit(char n1)
{
  if((48<=n1)&&(57>=n1))
    printf("출력:YES\n");
  else
    printf("출력:NO\n");
}
     
--------------------------- 
  

 

#include <stdio.h>

void isdigit(char a);

int main()
{
   char a=0;
  printf("문자: ");
  scanf("%d",&a);
  isdigit(a);
  return 0;
}  
void isdigit(char ia)
{
  
  if(ia==0)
    printf("결과:NO\n");
  else
    printf("결과:YES\n");
}
   
  

 

'C언어 > C과제' 카테고리의 다른 글

#Pragma 지시자  (0) 2010.11.22
C과제 9  (0) 2010.10.22
C 연습문제  (0) 2010.10.22
C도전문제 1  (0) 2010.10.20
C과제 8  (1) 2010.10.19