JAVA/연습장!

while문, if, for문 연습장

john_ 2022. 12. 9. 10:04
728x90

문제1.

한 도시의 시장을 뽑기 위한 지방 선거가 다가오고 있다.

도시 선거관리위원회는 선거 결과를 알려주는 프로그램을 원한다. 

시장에 입후보한 두 명의 후보가 있다. 

도시에는 여러개의 구가 있다. 

프로그램은 각 구에서 각 후보가 얻은 득표 수를 입력 받아 각 후보의 총 득표수와 득표율을 구해서 출력해야 한다. 

또한 당선자를 출력해야 한다. 

프로그램은 먼저 보고할 구가 있는지를 사용자에게 물어 보아야 한다.

사용자는 보고할 구가 있으면 'Yes'를 입력하고 없으면 'No'를 입력해야 한다.

사용자가 'Yes'를 입력하면 각 후보가 한 구로부터 얻은 득표 수를 읽어 들이고 총 득표수를 갱신해야 한다.

그 다음에 다시 보고할 구가 있는지를 사용자에게 물어보고 같은 과정을 반복해야 한다.

사용자가 'No'를 입력하면 결과를 출력해야 한다.

프로그램을 작성하기 전에 설계를 하라.

 

다음은 모범 출력이다.

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): Yes
첫번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 35382
두번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 53287

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): Yes
첫번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 39019
두번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 29040

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): Yes
첫번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 78569
두번째 후보가 그 구에서 얻은 득표 수를 입력하세요: 95209

보고할 구가 있나요(있으면 Yes 없으면 No를 입력하세요): No

첫번째 후보가 얻은 총 투표수는 152970이고 득표율은 46.3%이다.
두번째 후보가 얻은 총 투표수는 177536이고 득표율은 53.7%이다.

두번째 후보가 시장으로 당선되었습니다.

해당 코드는 다음과 같습니다

 

package java2022;

import java.util.Scanner;

public class array1 {

	public static void main(String[] args) {
		
		int dueck1 = 0;
		int dueck2 = 0;
		int sum1=0;
		int sum2=0;
		
		String boGo;
		float dueckPer1;
		float dueckPer2;
		Scanner sc = new Scanner(System.in);
		
		System.out.print("보고할 구가 있나요(있으면 yes 없으면 No) :" );
		boGo = sc.next();
		
		while(boGo.equals("yes")) {
			
			System.out.print("첫번째 후보가 그 구에서 얻은 득표수를 입력하세요");
			dueck1 = sc.nextInt();
			sum1 += dueck1;
			
			System.out.print("첫번째 후보가 그 구에서 얻은 득표수를 입력하세요");
			dueck2 = sc.nextInt();
			sum2 += dueck2;
			
			System.out.print("보고할 구가 있나요(있으면 yes 없으면 no): ");
			boGo = sc.next();
		}
		
		dueckPer1 = (float)sum1 / (sum1 + sum2) * 100;
		dueckPer2 = (float)sum2 / (sum1 + sum2) * 100;
		
		
		
		if (boGo.equals("no")) {
			
			System.out.println("첫번째 후보가 얻은 총 득표수는 " + sum1 + ":이고 득표율은 " + dueckPer1 + "이다." );
			System.out.println("두번째 후보가 얻은 총 득표수는 " + sum2 + ":이고 득표율은 " + dueckPer2 + "이다." );
		
			
			if(sum1 > sum2) {
			System.out.println("첫번째 후보가 시장으로 당선되었습니다.");
			}
			else {
				System.out.println("두번째 후보가 시장으로 당선되었습니다.");
			}
			sc.close();
		}
	}
}

 

아직은 조금 번잡한가..?!

 


문제2.

은행에서 정기예금을 복리로 돌려고 한다. 

원금과 연이율을 키보드를 통해 입력 받아 원리금이 원금의 두 배를 초과할 때까지 필요한 연도 수를 출력하는 프로그램을 설계한 후 작성하라. 

또한 매년 원금과 이자를 합한 원리금을 출력해야 한다. 

1년 정보예금을 복리로 신규로 든다면 원리금을 구하는 공식은 다음과 같다.

 원리금 = 원금 * (1+연이율/100)

 

예를 들면 다음은 1,000,000원을 연이율 15%로 정기예금을 원리금이 원금의 두 배를 초과할 때까지 매년 복리로 계속 드는 경우의 출력 결과이다.

연도수 원리금
1
2
3
4
5
1150000.0
1322500.0
1520874.9999999998
1749006.2499999995
2011357.1874999993
필요한 연도수 = 5

해당 코드는 다음과 같았습니다!

import java.util.Scanner;

public class java1215_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc = new Scanner(System.in);
		int firstMoney;
		int yearBoc;
		double prinIter = 0;
		int counter = 0;
		
		System.out.print("원금을 입력하세요 : ");
		firstMoney = sc.nextInt();
		prinIter=firstMoney;
		System.out.print("연이율을 입력하세요: ");
		yearBoc = sc.nextInt();
		
		do {
			System.out.println("연도수\t\t"+"원리금");
			counter++;
			prinIter = (prinIter*(1+(double)yearBoc/100));
			
			System.out.println(counter + "\t" + prinIter);
			
		}while(prinIter < (firstMoney * 2));
		
		System.out.println("필요한 연도수 = " + counter);
	}
}

 

 


문제3.

양의 정수를 키보드로부터 입력 받아 역순으로 출력하는 프로그램을 설계한 후 작성하라. 

예를 들면 사용자가 키보드를 통해 1234를 입력하면 4321을 출력해야 한다.

 다음은 모범 출력이다.

 

출력
양의 정수를 입력하세요: 1234
역순으로 표시한 입력 정수 = 4321

입력 받은 양의 정수와 역순으로 변환한 정수를 각각 정수형 변수에 저장해야 한다. 

반복문을 사용하라. 

또한 프로그램은 위의 모범 출력과 같은 결과를 출력해야 한다.

 

해당 코드는 다음과 같습니당!

public class java1215_2 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int num;
		int reverse=0;
		
		System.out.print("양의 정수를 입력하세요: ");
		num = sc.nextInt();
		
		while(num>0) {
			reverse *= 10;
			reverse += num%10;
			num /= 10;
		}
		System.out.println("역순으로 표시한 입력 정수 = " + reverse);
	}
}

 


문제4.

사용자로부터 0보다 큰 정수 n을 입력 받아

 다음과 같은 조건을 만족하는 1과 n 사이에 있는 정수들의 쌍(i, j)을 출력하는 프로그램을 설계하고 작성하라.
(1) i는 j로 나누어 떨어져야 한다.
(2)   i와 j는 같지 않다.

다음은 표준 출력이다.

 

출력
한 정수를 입력하세요: 6
모든 나누어 떨어지는 정수들의 쌍은 다음과 같다.
(2, 1)
(3, 1)
(4, 1)
(4, 2)
(5, 1)
(6, 1)
(6, 2)
(6, 3)

 

import java.util.Scanner;

public class java1215_3 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int n;
		
		System.out.print("한 정수를 입력하세요 : ");
		n = sc.nextInt();
		if(n>0) {
			for(int i = 1; i<=n; i++) {
				for(int j = 1; j<=i; j++) {
					if(i % j == 0 && i != j) {
							System.out.println("( " + i + ", " + j + " )");
					}
				}
			}
		}else {
			System.err.print("0보다 작은 값이 입력됐습니다.");
		}
	}
}

 


문제5.

사용자로부터 입력 받은 정수 값에 있는 홀수 숫자들의 수와 짝수 숫자들의 수를 계산하여 출력하는 프로그램을 설계하고 작성하라. 

입력받은 정수는 정수형 변수에 저장해야 한다.

 

 

해당코드는 다음과 같습니다!

public class java1215_4 {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int n;
		int pair=0;
		int odd =0;
		
		System.out.print("정수를 입력하세용:");
		n = sc.nextInt();
		
		while(n>0) {
			if(n % 2 ==0) {
				pair++;
				n/=10;
			}else {
				odd++;
				n/=10;
			}
		}
		System.out.println("짝수의 개수는 " + pair + ", 홀수의 개수는 " + odd);
	}
}
728x90

'JAVA > 연습장!' 카테고리의 다른 글

클래스 , class 연습문제!  (0) 2022.12.13
메소드, 연습 - java  (0) 2022.12.12
Array, 배열 문제  (0) 2022.12.09
while문 연습장!  (2) 2022.12.08
조건문 - 연습문제  (0) 2022.12.07