반복문 연습, getchar, putchar
test1. 점수를 입력받아 등급을 나누어 표시하는 프로그램.(if문 사용)
#include<stdio.h>
int main()
{
int iNum=0; // 입력받을 점수가 들어갈 변수 선언
printf("1~100 사이의 점수를 입력하세요.: ");
scanf("%d", &iNum);
if((iNum>=90) && (iNum<=100))
{
printf("당신은 A 등급입니다.\n");
}
else if((iNum>=80) && (iNum<90))
{
printf("당신은 B 등급입니다.\n");
}
else if((iNum>=70) && (iNum<80))
{
printf("당신은 C 등급입니다.\n");
}
else if((iNum>=0) && (iNum<70))
{
printf("당신은 F 등급입니다.\n");
}
else // 1에서 100을 벗어난 값을 입력하면 출력된다.
{
printf("잘못된 값을 입력하셨습니다.\n");
}
return 0;
}
test2. 점수를 입력받아 등급을 나누어 표시하는 프로그램.(switch문 사용)
#include<stdio.h>
int main()
{
int iNum;
printf("1~100 사이의 점수를 입력하세요: ");
scanf("%d",&iNum);
iNum=iNum/10;
switch(iNum)
{
case 10:
case 9:
printf("당신은 A 입니다.\n");
break;
case 8:
printf("당신은 B 입니다.\n");
break;
case 7:
printf("당신은 C 입니다.\n");
break;
default:
printf("당신은 F 입니다.\n");
break;
}
return 0;
}
⇒ if문과 switch문은 우리가 쓰는 PC 에서는 큰 차이가 나지 않지만 임베디드 쪽에서는 차이가 난다. 예전에는 if문 쪽이 빠르다는 의견이 많았지만 컴파일러간의 차이와 발전과정에 따라 어느 것이 더 빠른지는 차이가 없다.
※ 아스키 코드와 수의 이해
⇒ ‘0’=48, ‘1’=49;, ‘2’=50
⇒ ‘2’-‘1’ = 1
⇒ 2-1 =1
⇒ 2+‘0’=‘2’ (→ 2+48=50)
⇒ printf("%c\n",'0'+2); // (→ 48+2=50) 즉, 출력이 2가 된다. (아스키 코드 50)
char A = 50;
char B = '2'; // → 둘 다 50이 저장된다.
printf("%c\n",A); // → 2가 출력된다.
printf("%d\n",B); // → 50이 출력된다.
// getchar 확인
#include<stdio.h>
int main()
{
char ch;
ch = getchar(); // 1byte ASCII 코드를 가져온다.(scanf와는 달리 한 개(1byte)만 입력받는다.)
printf("%d\n",ch); // 입력한 문자에 해당하는 ASCII 코드 숫자를 출력한다.
printf("%c\n",ch); // 입력한 문자가 그대로 다시 나온다.
putchar(ch); // 글자 하나를 출력한다.
putchar('\n'); // 개행문자(putchar는 개행문자를 이렇게 따로 써줘야 한다.)
putchar(97); // 소문자 a를 출력한다.
return 0;
}
※ 우리가 입력하는 것들(1234ABC or 1234 or ABC)은 모두 문자이며, 컴퓨터는 모두 숫자로 입력받는다.
※ 숫자 1234(10) → 64D2(16)
예를 들어 키보드 입력(1234)를 하게 되면 이것은 문자로 입력되고 64D2(16)로 저장된다. 그리고 printf문 %d 불러오게 되면 이것은 다시 64D2에서 1234로 바뀌어 출력된다.
※ 문자로 2000000000은 10byte 지만 숫자로는 4byte면 된다.(int 형으로 표현할 수 있으므로)
※ getchar와 putchar의 경우 scanf, printf와는 달리 글자하나를 입력받고 출력한다.
※ putchar는 개행문자를 붙여 쓸 수 없다. 따라서 따로 putchar(‘\n’); 을 써줘야 한다.
※ getchar는 putchar는 한문자만 입력되거나 출력되는 단점이 있다. 용도에 따른 쓰임이 있다.
⇒ Alt를 누른 상태에서 ASCII 숫자를 누르면 해당 문자가 출력된다.
(Alt + 97 → a, Alt + 47 → 1)
'내장형 하드웨어 > C언어' 카테고리의 다른 글
visual studio 6.0 실행, 디버깅, Execute Program, Breakpoint, run-time error (2) | 2011.04.06 |
---|---|
BricxCC를 이용한 마인드 스톰 구동 첫시간 (0) | 2011.04.05 |
if문, 다중 if문, switch 문, 흐름도 (flow chart) (1) | 2011.04.04 |
부가 연산자, 복합 부가 연산자, printf, scanf, 제어문 (0) | 2011.04.04 |
C 언어의 연산자 - 산술, 비교, 논리 연산자 (0) | 2011.04.04 |