본문 바로가기
관/솔직한 c 언어 공부

c언어 기초 공부 07.

by 4차원 박스 2019. 11. 7.

이번에는 공부한 내용을 활용하여 

조금은 복잡한 프로그램을 하나 만든다.

 

만드려는 내용은 다음과 같다

 

숫자 2를 누르면 문제 2번이 실행됨

3을 누르면 문제3

문자 a를 누르면 문제 4번이 실행

만약 문자q 혹은 숫자 9번을 누르면 프로그램이 종료되게 한다.

 

문제2번 = 두 수를 입력받아서 어느 수부터 다음 수까지의 합을 구하게 한다.

문제3번 = 1부터 100까지 수 중에 while문으로 3의 배수만 출력하기, for문으로 출력하기

문제4번 = 키보드로 입력받아서 어떤종류의 아스키코드에 해당하는지 출력해주기

 

 

만약 이걸보고 공부하는 사람이라면

직접 해보고 다음 내가만든 코드를 참고하는걸 추천한다.

 


#include 
#include 

int main()
{
char a;
int x,y;
int i;
int sum=0;
int key;
while(1)
{

scanf("%c",&a);

switch(a)
{
case 50: //아스키코드로 2

printf("2번문제 \n");

printf("x:");
scanf("%d",&x);
printf("y:");
scanf("%d",&y);
for(i=x;i<=y;i++)
{
sum+=i;
}
printf("x~y까지 합은 %d 이다 \n",sum);

break;

case 51: //아스키코드로 3
printf("3번문제 \n");

printf("for문 \n");
for(i=1;i<=100;i++)
{
if(i%3==0)
{
printf("%d \n",i);
}
}
i=0;
printf("while문 \n");
while(i<=100)
{
i+=1;
if(i%3==0)
{
printf("%d \n",i);
}
}
break;

case 'a':
printf("4번문제 \n");


printf("키보드 하나 입력하기:");
key= getch();
switch(key)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 127:
printf("제어문자");
break;
case 9:
case 10:
case 11:
case 12:
case 13:
case 32:
printf("공백문자");
break;
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 58:
case 59:
case 60:
case 61:
case 62:
case 63:
case 64:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 123:
case 124:
case 125:
case 126:
printf("구두점문자");
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
printf("숫자");
break;
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
printf("알파벳");
break;
}



break;

case 57:
break;

case 'q':
break;
}
if (a==57)
{
break;
}
else if(a=='q')
{
break;
}
}

printf("\n");
return 0;
}

 

솔직히 마지막 4번문제는 미련하게 작성해 보았다

switch문의 default를 사용하거나 

if문으로 몇번부터를 지정하여 하는것이 좋을것이다.

 

이건 그냥다 해본 무식한 예제이다.

 

 

 

 

이전에 c언어는 함수기반임을 말한적이 있을것이다

 

위의 내용을 함수로 하여 좀더 보기 쉽게 다음과 같이 만들어 보자.

함수를 사용하면

int p2()
{
코드내용
}

이런 식으로 작성한다.

함수를 사용할때 함수를 나중에쓰는경우
앞에 함수의 자료형 이름 반환형을 쓰면 된다.
함수를 메인에서 사용할때는
변수에 할당하여 사용하는 경우도 있다.

줄맞춤은 쉬프트 탭을 통해 쉽게 가능함

다음은 함수를 사용하여 만든 코드이다.

#include 
#include 

void p1();
void p2();
void p3();

int main()
{
char a;
int i;
int key;
while(1)
{

scanf("%c",&a);

switch(a)
{
case 50: //아스키코드로 2

printf("2번문제 \n");
    p1();
break;

case 51: //아스키코드로 3
printf("3번문제 \n");
p2();
break;

case 'a':
printf("4번문제 \n");
p3();
break;

case 57:
break;

case 'q':
break;
}
if (a==57)
{
break;
}
else if(a=='q')
{
break;
}
}

printf("\n");
return 0;
}

void p1()
{
int x,y;
int i;
int sum=0;
printf("x:");
scanf("%d",&x);
printf("y:");
scanf("%d",&y);
for(i=x;i<=y;i++)
{
sum+=i;
}
printf("x~y까지 합은 %d 이다 \n",sum);
}

void p2()
{
int i;
printf("for문 \n");
for(i=1;i<=100;i++)
{
if(i%3==0)
{
printf("%d \n",i);
}
}
i=0;
printf("while문 \n");
while(i<=100)
{
i+=1;
if(i%3==0)
{
printf("%d \n",i);
}
}
}


void p3()
{
int key;
key= getch();
switch(key)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 127:
printf("제어문자");
break;
case 9:
case 10:
case 11:
case 12:
case 13:
case 32:
printf("공백문자");
break;
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 58:
case 59:
case 60:
case 61:
case 62:
case 63:
case 64:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 123:
case 124:
case 125:
case 126:
printf("구두점문자");
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
printf("숫자");
break;
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
printf("알파벳");
break;
}
}

 

여러분들은 if문을 사용하였기를 바란다.

' > 솔직한 c 언어 공부' 카테고리의 다른 글

c언어 기초 공부 09.(배열)  (0) 2019.11.12
c언어 기초 공부 08.  (0) 2019.11.09
c언어 기초 공부 06.  (0) 2019.11.06
c언어 기초 공부 05.  (0) 2019.11.05
c언어 기초 공부 04.  (0) 2019.11.04

댓글