1. 잘못된 부분을 찾아서 고치고, 이유를 설명하세요.
1)
int num = 128;
char* pNum = #
printf(“%d”, *pNum);
int num =
128;
unsigned char* pNum = (unsigned char*)#
printf(“%d”, *pNum);
num은 int형변수이기 때문에 캐스팅을 해주기위해 (unsigned char*)를 입력해준다.
int형은 128(4byte)은
char(2byte)에 대입시켜주면 -128이 되기 때문에 정수형으로 바꿔주기위해
포인트변수앞에 unsigned를 입력해준다.
2)
char* pStr = “Control”;
printf(“%s \n”, *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>
char swaps(char *a);
int main()
{
char ch1,ch2;
char *swap;
char cnum1,cnum2;
fprintf(stdout, "Character Key Input : ");
fscanf(stdin, "%c %c", &ch1, &ch2);
cnum1=swaps(&ch2);
cnum2=swaps(&ch1);
fprintf(stdout, "Before : ch1=%c, ch2=%c\n", ch1, ch2);
fprintf(stdout, "After : ch1=%c, ch2=%c\n", cnum1, cnum2);
return 0;
}
char swaps(char *a)
{
char *swap;
swap=a;
return *swap;
}
3. 문자가
숫자인지 알려주는 isdigit 함수를 구현하세요. 문자 ch를 입력 받고, ch가 숫자인지 출력하세요. 맞다면 YES, 아니면 NO를
출력합니다.
출력) 문자 : P
결과 : NO
#include <stdio.h>
int main()
{
char ch;
fprintf(stdout, "문자나 숫자를 입력하시오 : ");
fscanf(stdin, "%c", &ch);
if((65<=ch)&&(122>=ch))
{
fprintf(stdout, "문자 : %c\n결과 : No", ch);
}
else
{
fprintf(stdout, "숫자 : %d\n결과 : Yes", ch-48);
}
return 0;
}
'C언어 > 과제' 카테고리의 다른 글
불러온 파일 Hexacode 보여주기 (0) | 2010.12.09 |
---|---|
C언어 과제 11 (0) | 2010.10.27 |
C언어 과제 09 (0) | 2010.10.25 |
C언어 과제 08 (0) | 2010.10.25 |
C언어 도전과제 01 (소수와 합성수를 판단하여라) (0) | 2010.10.20 |