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


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




반복문을 이용한 별찍기



- 순차적으로 찍기


          int count=0;

          for(int i=1; i<6; i++){
                   for(int j=0; j<i; j++)
                   {
                   System.out.print("*");
                   }
                   
                   System.out.println("");

          }

(실행 결과)

*
**
***
****

*****


- 거꾸로 찍기

          for(int i=5; i>0; i--)
          {
              for(int j=1; j<=i; j++)
              {
                   System.out.print("*");
              }
          System.out.println("");

          }


(실행 결과)

*****
****
***
**
*


- 삼각형 모양으로 찍기


for(int i=0; i<5; i++){
              int x=4;
              for(int j=0; j<x-i; j++){ // 별 앞에 공백을 찍는 for문
                   System.out.print(" ");
              }
              for(int k=0; k<=i; k++){ // 별을 찍는 for문
                   if(k == 0){ // *을 홀수개 찍기위해서 하나와
                        System.out.print("*");
              }
                  else{ // 두개를 나눠서 찍는다.
                   System.out.print("**");
                  }
              }// close for()
                   System.out.println("");

              }//close for()

(실행 결과)

    *
   ***
  *****
 *******
*********





반복문


 반복문은 쉽게 말해 반복을 하기위해 사용하는 문장입니다. 예를들어 printf 함수로 같은문장 또는 1씩 증가하는 문장 10줄을 출력하고싶을 때 일일이 10번을 다 입력해줘야 하지만, 반복문을 이용하면 반복문안에 한번만 입력하면 됩니다. 반복문은 문자열 출력 뿐만아니라, 사용에 따라 다양하게 활용할 수 있습니다. C에서 사용하는 반복문은 for문 while문 do-while문 세 가지가 있습니다.


- for문

 for문은 일정 횟수를 반복하는 경우에 많이 사용합니다. 사용 형태는 다음과 같습니다.

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

for(초기화; 반복조건; 증감연산)
{
반복하면서 처리할 내용
}

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

사용 예)
int i; // for문에서 초기화를 하기때문에 변수 선언만 해줍니다.
for(i=0; i<9; i++)
{
printf("%d의 값 \n",i);
}

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


- while문

 while문은 어떤 조건이 만족하는 동안 반복하는 반복문입니다. while문은 증감연산을 while문 안에 써줘야하고, 반복할 상수를 선언과 동시에 초기화를 해줘야합니다.  사용 형태는 다음과 같습니다.

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

while(조건식)

{
반복하면서 처리할 내용

}

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

사용 예)

int i=0; // for문과 다르게 반복에 이용할 변수 선언과 동시에 초기화

while ( i<10 ) // 조건

{

printf(“Hello World! \n”);

i++; // while문 내부에 써주는 증감연산자

}

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


- do-while문

  do-while문은 실행 후 while문을 실행하는 형태라고 생각하시면 됩니다. 조건에 상관없이 do에 있는 문장을 무조건 실행 한 뒤, 뒤에 있는 while문의 조건에 따라 반복합니다. 사용 형태는 다음과 같습니다. 이때, 주의할점은 while문 뒤에 세미콜론(;)이 붙는다는 겁니다. 세미콜론을 쓰지않을경우 구문 오류가 발생합니다.
------------------------------------------------------------------------------------------
do{
반복하면서 처리하거나 한번만 실행할 내용

}while(조건식);
------------------------------------------------------------------------------------------
사용 예)
int input;
do
{
printf(“Hello World!\n”);
printf(“종료를 원하시면 0을 입력하세요 : ”);
scanf(“%d”, &input);
}while(input!=0); // 0이 아닌경우만 반복
------------------------------------------------------------------------------------------

 지금까지 공부한 내용들을 바탕으로 원하는 구구단을 출력하는 코드를 간단하게 작성해보았습니다. scanf로 원하는 단을 입력받고, 0을 입력했을때 종료하는 코드입니다.
------------------------------------------------------------------------------------------
#include <stdio.h>
#pragma warning(disable:4996)

int main()
{
int num=1; // 구구단은 1단부터 시작해서 1로 초기화
int i;         // for문에서 사용할 변수
while (num != 0) // 0이 아닐경우 반복
{
printf("출력하고싶은 단을 입력하세요(0은 종료) : ");
scanf("%d", &num);
if (num == 0){ // 0을 입력했을경우 실행
printf("0을 입력하셔서 종료됩니다. \n");
break; // 종료
// close if
else{
printf("*****%d단*****\n", num);
for (i = 1; i < 10; i++){ // 1부터 1씩 증가하면서 9까지 반복
printf("%d * %d = %d\n", num, i, num*i);
} // close for
// close else
// close while
} // close main
------------------------------------------------------------------------------------------
 추가로 함수나 반복문 뒤에 주석으로 // close를 일일이 써준 이유는 코드가 복잡해지면 어디가 끝인 지, 어디가 무슨 함수까지인지 등등 헷갈릴 수 있기 때문입니다. 프로그래밍을 처음 시작하시는분들은 추천하는 방법입니다. 주석으로 끝을 표시해주는 게 코드를 보기도 좋고, 괄호를 빼먹는 실수도 줄어들 것입니다.

 아래 그림은 위 코드를 실행 했을때의 결과입니다. 0을 입력하기 전까지는 계속 입력하는 단을 출력하다가, 0을 입력하면 0을 입력했다는 문자열을 출력하고 종료됩니다.


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

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




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

[C] 함수(1)  (0) 2016.12.20
[C] 기타 제어문  (0) 2016.12.19
[C] 조건문  (0) 2016.12.17
[C] 연산자  (0) 2016.12.16
[C] 입출력함수, 기본자료형, 형변환  (0) 2016.12.15

+ Recent posts