[Java]자바의 정석 4장 제어문 연습문제 풀이

jh5959·2025년 5월 15일

Java

목록 보기
4/9

4-3 1+(1+2)+(1+2+3)+...+(1+2+3+...+10)의 결과를 계산하시오

int sum=0; //더할 변수
        int totalsum=0;//sum을 더할 변수
        for(int i=1; i<=10; i++){
            sum+=i;//1~10까지 더함, i=1 일 때, sum=1, i=2 일 때, sum=3, i=3 일 때, sum=6
            totalsum+=sum;//sum을 더함, sum=1 -> total=1, sum=3 -> total=4, sum=6 ->total=10
        }
        System.out.println(totalsum);//220

4-4 1+(-2)+3+(-4)+...과 같은 식으로 계속 더해나갔을 떄 몇까지 더해야 총합이 100이상이 되는지 구하시오

int sum=0;//총합 변수
        int s=1; //부호바꾸는 변수
        int num=0; //더할 값

        for(int i=1; true; i++,s=-s){
            num=s*i;//부호 정함
            sum+=num;
            
            if(sum>=50)
                break;
        }
        //더 간단히 쓰는 법 true대신 sum<100 쓰고 if문 지우기
        System.out.println("num="+num);
        System.out.println("sum="+sum);

        //while문으로 쓰기
        System.out.println();
        int sum1=0;
        int s1 =1;
        int num1=0;
        int j=1;
        while (true){
            num1=s1*j;
            sum1+=num1;
            j++;
            s1=-s1;

            if (sum1>=100)
                break;
        }
        System.out.println("num1="+num1);
        System.out.println("sum1="+sum1);

답:199

4-11 피보나치(Fibonnaci) 수열(數列)은 앞을 두 수를 더해서 다음 수를 만들어 나가는 수열이다. 예를 들어 앞의 두 수가 1과 1이라면 그 다음 수는 2가 되고 그 다음 수는 1과 2를 더해서 3이 되어서 1,1,2,3,5,8,13,21,... 과 같은 식으로 진행된다. 1과 1부터 시작하는 피보나치수열의 10번째 수는 무엇인지 계산하는 프로그램을 완성하시오.

public class Exercise4_11 {
	public static void main(String[] args) {
		// Fibonnaci 수열의 시작의 첫 두 숫자를 1, 1로 한다. int num1 = 1;
		int num2 = 1;
		int num3 = 0; // 세번째 값
		System.out.print(num1+","+num2);
		
		for (int i = 0 ; i < 8 ; i++ ) {
			num3=num1+num2;
            System.out.print(","+num3);
            num1=num2;
            num2=num3;

            /*
                num1 num2 num3
                 1    1    2
                 1    2    3
                 2    3    5
                 3    5    8
                 5    8    13
             */
		}		
	} // end of main
} // end of class

실행결과: 1,1,2,3,5,8,13,21,34,55

4-12 구구단의 일부분을 다음과 같이 출력하시오.

2*1=2	3*1=3	4*1=4
2*2=4	3*2=6	4*2=8
2*3=6	3*3=9	4*3=12

5*1=5	6*1=6	7*1=7
5*2=10	6*2=12	7*2=14
5*3=15	6*3=18	7*3=21

8*1=8	9*1=9	
8*2=16	9*2=18	
8*3=24	9*3=27	

답:

for(int i=1; i<=9; i++){
            for(int j=1; j<=3; j++){
                int x=j+i+(i-1)/3*3;
                int y=i%3==0? 3 : i%3;

                if(x>9)//9단까지만 출력, 이 코드 없으면 10단까지 출력
                    break;
                System.out.print(x+"*"+y+"="+x*y+"\t");
            }
            System.out.println();
            if(i%3==0) System.out.println();

4-13 다음은 주어진 문자열(value)이 숫자인지를 판별하는 프로그램이다. (1)에 알맞 은 코드를 넣어서 프로그램을 완성하시오.

class Exercise4_13
{
	public static void main(String[] args)
	{
		String value = "12o34"; char ch = ' ';
		boolean isNumber = true;

		// 반복문과 charAt(int i)를 이용해서 문자열의 문자를
		// 하나씩 읽어서 검사한다.
		for(int i=0; i < value.length() ;i++) {
			ch=v.charAt(i);
            if( !('0'<=ch && ch<='9'))//ch가 0~9가 아니면)
                {
                isNumber=false;
                break;
            }
		}

		if (isNumber) {
			System.out.println(value+"는 숫자입니다.");
		} else {
			System.out.println(value+"는 숫자가 아닙니다.");
		}
	} // end of main
} // end of class

실행결과:12o34는 숫자가 아닙니다

4-15 다음은 회문수를 구하는 프로그램이다. 회문수(palindrome)란, 숫자를 거꾸로 읽 어도 앞으로 읽는 것과 같은 수를 말한다. 예를 들면 ‘12321’이나 ‘13531’같은 수를 말한 다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오. [Hint ] 나머지 연산자를 이용하시오.

class Exercise4_15
{
	public static void main(String[] args)
	{
    
		int number = 12321; 
        int tmp = number;
		int result =0; // 변수 number를 거꾸로 변환해서 담을 변수

		while(tmp !=0) {
			result=result*10+tmp%10;//tmp%10=끝자리 수 얻기
            tmp=tmp/10; //tmp가 0이면 빠져나옴
		}

		if(number == result)
			System.out.println( number + "는 회문수 입니다.");
		else
			System.out.println( number + "는 회문수가 아닙니다.");
		} // main
}

실행결과: 12321는 회문수 입니다

0개의 댓글