반복문,조건문을 이용한 대소문자 변환


ASCII CODE를 이용한 대소문자 변환입니다.


 public class AsciiReverse {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int i=0;
        
        while(true){
        System.out.print("문자열을 입력하세요 : ");
        String input= s.nextLine();
// 한글자씩 담을 char[]형 배열선언
        char change[] = new char[input.length()]; 
        
        if(input.equals("stop")) // stop을 입력할 때까지 반복
        {
            System.out.println("이용해주셔서 감사합니다.");
            break;
        }
        
        else{
        for(i=0; i<input.length(); i++)
        {
                change[i]=input.charAt(i);
                if(change[i]>=65 && change[i]<=90) // 대문자이면
                    change[i]+=32; // 소문자로 변환
                else if(change[i]>=97 && change[i]<=122) // 소문자이면
                    change[i]-=32; // 대문자로 변환
                    System.out.print(change[i]);
        }
            System.out.println();
        
        }// close else{}
        
        }//close while()
        
    }
}

(실행 결과)

문자열을 입력하세요 : Have A Nice Day!!

hAVE a nICE dAY!!
문자열을 입력하세요 : stop
이용해주셔서 감사합니다.



반복문,조건문을 이용한 Fizz-Buzz 게임


 Fizz-Buzz 게임 규칙 : 3,6,9게임과 유사한 게임으로 특정 숫자 2개를정하고, 첫번째 수의 배수이면 Fizz 두번째 수의 배수이면 Buzz 두 수의 공배수이면 fizzbuzz를 외치는 게임


 for문과 while문을 이용해서 메소드로 구현하고 호출해서 사용하는 코드입니다.



import java.util.Scanner;
public class FizzBuzz {
        void FizzFor() // for문을 이용한 메소드
        {
            for(int i=1; i<101; i++)
            {
                if(i%3==0 && i%5==0)
                {
                    System.out.print("FizzBuzz ");
                }
                else if(i%3==0)
                {
                    System.out.print("Fizz ");
                }
                else if(i%5==0)
                {
                    System.out.print("Buzz ");
                }
                else
                {
                    System.out.print(i+" ");
                }
            }
    
        }
        
        void FizzWhile() // While문을 이용한 메소드
        {
                int i=1;
                while(i<101)
            {
                if(i%3==0 && i%5==0)
                {
                    System.out.print("FizzBuzz ");
                }
                else if(i%3==0)
                {
                    System.out.print("Fizz ");
                }
                else if(i%5==0)
                {
                    System.out.print("Buzz ");
                }
                else
                {
                    System.out.print(i+" ");
                }
                i++;
            }
    
        }
    public static void main(String[] args) {
        // 5의 배수가 fizz 7의배수가 buzz
        while(true){
            Scanner s=new Scanner(System.in);
            System.out.print("원하시는 숫자를 선택하세요. \n 1]FizzFor() 2]FizzWhile() 0]종료 \n입력> ");
            int input=s.nextInt();
            FizzBuzz Fb= new FizzBuzz();
        if(input==1)
        {
            Fb.FizzFor();
        }
        else if(input==2)
        {
            Fb.FizzWhile();
        }
        else if(input ==0)
        {
            System.out.println("이용해주셔서 감사합니다.");
            break; // 0 을입력하면 종료
        }
        else{
            System.out.println("잘못된 값을 입력하셨습니다. 다시 입력하세요");
        }
        
        }//close while()
    }
}

(실행 결과)

원하시는 숫자를 선택하세요.
 1]FizzFor() 2]FizzWhile() 0]종료
입력> 1
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz 원하시는 숫자를 선택하세요.
 1]FizzFor() 2]FizzWhile() 0]종료
입력> 2
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz 원하시는 숫자를 선택하세요.
 1]FizzFor() 2]FizzWhile() 0]종료
입력> 5
잘못된 값을 입력하셨습니다. 다시 입력하세요
원하시는 숫자를 선택하세요.
 1]FizzFor() 2]FizzWhile() 0]종료
입력> 0
이용해주셔서 감사합니다.


출처 : [위키백과] https://en.wikipedia.org/wiki/Fizz_buzz




조건문

 조건문은 조건에 따라서 동작이 달라지는 문장으로, if-else문과 switch-case문이 있습니다. 상황에 따라서 두 조건문을 이용하면 여러가지를 구현할 수 있습니다.


- if-else문

 if의 뜻은 만일에,만약에 라는 뜻이잖아요? 그 "만일,만약"이라는 조건에 맞으면 실행하는 조건문입니다. if문은 if절과 else절, else if절로 구성됩니다. else if절은 다른 조건의 if라고 보시면 됩니다. 그리고 if절만 사용할 수 있고, else절과 else if절은 무조건 사용해야만 하는건 아닙니다. if괄호안에 조건이 참일 때 if문을 수행하고, else 절은 조건이 거짓일때 수행합니다.

-------------------------------------------------------------------------------------------

if(조건){
조건이 참일 때 할 동작들
}

else if(if와는 다른 조건){

조건이 참일 때 할 동작들

}
else{
if의 조건도 else if들의 조건이 모두 거짓일 때 할 동작들
}

-------------------------------------------------------------------------------------------


 저번에 했던 알파벳 출력을 if-else문을 이용 해 구성해보았습니다. 아래코드는 if문은 대문자를 소문자로 변환, else if문은 소문자를 대문자로 변환, else는 영문이 아닌 문자를 입력했다고 출력해주는 코드입니다.

-------------------------------------------------------------------------------------------

#include <stdio.h>

#pragma warning(disable:4996) // viusal studio에서 scanf 함수를 사용하기위해 사용


int main()

{

char ch; //입력받을 변수선언

printf("영문 대문자는 소문자로, 소문자로는 대문자로 변환합니다.\n문자를 입력하세요 : ");

scanf("%c", &ch); // 입력받는 함수 

if (ch >= 65 && ch <= 90) // 대문자를 입력했을 때

{

printf("소문자로 변환 : %c\n", ch + 32); 

}

else if (ch >= 97 && ch <= 122) // 소문자를 입력했을 때

{

printf("대문자로 변환 : %c\n", ch - 32);

}

else{ // 대문자도 소문자도 아닌 문자를 입력했을 때

printf("영문이 아닌 기타 문자를 입력하셨습니다. \n");

}

}

-------------------------------------------------------------------------------------------

각각 문자를 입력했을 때, 출력되는 결과는 다음과 같습니다.


- switch-case문
switch문은 다중선택구조라고 불리는 조건문입니다. if-else문으로 여러 조건을 부여할 경우 코드가 복잡해지는데, switch문을 이용하면 보다 쉽게 구현할 수 있습니다. 정수식을 입력받아 동작하며, case문의 숫자에따라 실행이됩니다. default는 case문으로 정한 조건을 모두 벗어나는 경우 실행됩니다. 
-------------------------------------------------------------------------------------------
switch(정수식)
{
case <정수값1>:
  할일1;
  break;
case <정수값2>:
  할일2;
  break;
   …
default:
  할일n;
}

-------------------------------------------------------------------------------------------


 break를 쓰지않으면 case를 여러개 묶어서 사용할 수 있습니다.

-------------------------------------------------------------------------------------------
switch(정수식)
{
case 1 :
  할일1;
case 2 : // case 2까지 실행
  할일2;
  break;
   …
default:
  할일n;
}

-------------------------------------------------------------------------------------------


switch문을 활용해 두 수를 계산하는 간단한 계산기를 만들어봤습니다. 소수점 계산을 위해 계산할 두 수를 double형으로 선언하고 소수점 두자리까지만 출력되게 설정하였습니다. 마지막 default절에 main으로 return한 이유는 잘못입력했을 때 다시 처음으로 되돌아가기 위합입니다. 
-------------------------------------------------------------------------------------------
#include <stdio.h>

#pragma warning(disable:4996) // viusal studio에서 scanf 함수를 사용하기위해 사용


int main()

{

int num; // switch문에 사용할 정수값 변수선언

double x, y; // 계산에 사용할 dobule형 변수선언


printf("1)'+' 2)'-' 3)'*' 4)'/' \n계산하고싶은 항목의 번호를 입력해주세요 : ");

scanf("%d", &num); // switch문에 사용할 정수값을 입력받음


switch (num)

{

case 1:

printf("계산할 x,y를 입력하세요 : ");

scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음

printf("%.2lf + %.2lf = %.2lf \n", x, y, x + y); // 입력받은 x,y와 계산된 결과값 출력

break;

case 2:

printf("계산할 x,y를 입력하세요 : ");

scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음

printf("%.2lf - %.2lf = %.2lf. \n", x, y, x - y); // 입력받은 x,y와 계산된 결과값 출력

break;

case 3:

printf("계산할 x,y를 입력하세요 : ");

scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음

printf("%.2lf * %.2lf = %.2lf. \n", x, y, x*y); // 입력받은 x,y와 계산된 결과값 출력

break;

case 4:

printf("계산할 x,y를 입력하세요 : ");

scanf("%lf %lf", &x, &y); //계산할 x,y를 입력받음

printf("%.2lf / %.2lf = %.2lf \n", x, y, x / y); // 입력받은 x,y와 계산된 결과값 출력

break;

default:

printf("잘못된 값을 입력하셨습니다. 1~4번 항목을 선택해주세요. \n");

return main(); // main 함수로 return

}

-------------------------------------------------------------------------------------------

아래 그림은 실행결과입니다 처음에 항목의 번호를 입력하면 switch문의 case 4가 실행이됩니다. x,y를 입력받고 계산을 마친뒤에 break에 의해 프로그램이 종료가 됩니다.

아래그림은 1~4가 아닌 다른값을 입력했을 때 default절이 실행이되고, 메인함수를 리턴해서 다시 처음부터 실행되는걸 확인할 수 있습니다.


* 출처 : 한국기술교육대학교 온라인평생교육원 C 프로그래밍_1 

          스타일 C프로그래밍 저.김종훈,김종진 출.WellBook




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

[C] 기타 제어문  (0) 2016.12.19
[C] 반복문  (0) 2016.12.18
[C] 연산자  (0) 2016.12.16
[C] 입출력함수, 기본자료형, 형변환  (0) 2016.12.15
[C] C 기본개념(2) 라이브러리와 변수  (0) 2016.12.12

+ Recent posts