4-1. 다음의 문장들을 조건식으로 표현하라.
public class Ex4_01 {
public static void main(String[] args) {
// 1. int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식
int x = 10;
boolean b1 = x > 10 && x < 20;
// 2. char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식
char ch = ' ';
boolean b2 = ch != ' ' || ch != '\t';
// 3. char형 변수 ch가 'x' 또는 'X'잉ㄹ 때 true인 조건식
boolean b3 = ch == 'x' || ch == 'X';
// 4. char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식
boolean b4 = ch >= '0' && ch <= '0' + 9;
// 5. char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식
boolean b5 = ch >= 'A' && ch <= 90 || ch >= 'a' && ch <= 'z';
// 6. int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을 때 true인 조건식
int year = 0;
boolean b6 = year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
}
}
4-2. 1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오.
public class Ex4_02 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1 ; i <= 20 ; i++) {
if(i % 2 != 0 && i % 3 != 0) { // !(i % 2 == 0 || i % 3 == 0)
System.out.println(i);
sum += i;
}
}
System.out.println(sum);
}
}
4-3. 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.
public class Ex4_03 {
public static void main(String[] args) {
int sum1 = 0;
int sum2 = 0;
for (int i = 1 ; i <= 10 ; i++) {
sum1 += i;
sum2 += sum1;
System.out.printf("%3d, %3d, %3d%n", i, sum1, sum2);
}
}
}
4-4. 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.
public class Ex4_04 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
for (i = 1 ; sum < 100 ; i++) {
sum += i % 2 == 0 ? -i : i;
System.out.println(i + " :: " + sum);
}
System.out.printf("i값이 %d 이상이 되었을 때 100을 넘어감", i-1);
}
}
4-5. 다음의 for문을 while문으로 변경하시오.
public class Ex4_05 {
public static void main(String[] args) {
int i = 0;
while (i <= 10) {
int j = 0;
while (j <= i) {
System.out.print("*");
j++;
}
System.out.println();
i++;
}
}
}
4-6. 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하시오.
public class Ex4_06 {
public static void main(String[] args) {
for (int i = 1 ; i <= 6 ; i++) {
for (int j = 1 ; j <= 6 ; j++) {
if(i + j == 6) {
System.out.println(i + "," + j);
// System.out.printf("%d + %d = %d%n", i, j, i + j);
}
}
}
}
}
4-7. 생략
4-8. 방정식 2x+4y=10의 모든 해를 구하시오. 단, x와 y는 정수이고 각각의 범위는 0<=x<=10, 0<=y<=10 이다.
public class Ex4_08 {
public static void main(String[] args) {
for (int i = 0 ; i <= 10 ; i++) {
for (int j = 0 ; j <= 10 ; j++) {
if (i * 2 + j * 4 == 10) {
System.out.printf("x=%d, y=%d%n", i, j);
}
}
}
}
}
4-9. 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라. 만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15가 출력되어야 한다. (1)에 알맞은 코드를 넣으시오.
public class Ex4_09 {
public static void main(String[] args) {
String str = "12345";
System.out.println(str.charAt(0));
System.out.println(str.charAt(1));
System.out.println(str.charAt(2));
System.out.println(str.charAt(3));
System.out.println(str.charAt(4));
int sum = 0;
for (int i = 0 ; i < str.length() ; i++) {
sum += str.charAt(i) - '0';
}
System.out.println("sum=" + sum);
}
}
4-10. int 타입의 변수 num이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라 만일 변수 의 값이 라면 . num 12345 , ‘1+2+3+4+5’의 결과인 15를 출력하라. (1)에 알맞은 코드를 넣으시오.
public class Ex4_10 {
public static void main(String[] args) {
int num = 12345;
int sum = 0;
while (num != 0) {
sum += num % 10;
num /= 10;
System.out.println(num);
}
System.out.println("sum=" + sum);
}
}
4-11. 피보나치(Fibonnaci) 수열(數列)은 앞의 두 수를 더해서 다음 수를 만들어 나가는 수열이다. 예를 들어 앞의 두 수가 1과 1이라면 그 다음 수는 2가 되고 그 다음 수는 1과 2를 더해서 3이 되어서 1, 2, 3, 5, 6, 13, 21, ... 과 같은 식으로 진행된다. 1과 1부터 시작하는 피보나치 수열의 10번째 수는 무엇인지 계산하는 프로그램을 완성하시오.
public class Ex4_11 {
public static void main(String[] args) {
// Fibonnach 1, 1 수열의 시작의 첫 두 숫자로 한다
int num1 = 1;
int num2 = 0;
int num3 = 0; // 세번째 값
System.out.print(num3);
for (int i = 0 ; i < 10 ; i++) {
num3 = num2 + num1;
System.out.print(", " + num3);
num1 = num2;
num2 = num3;
}
}
}
4-12. 생략
4-13. 다음은 주어진 문자열(value)이 숫자인지를 판별하는 프로그램이다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오.
public class Ex4_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 = value.charAt(i);
System.out.println(ch);
if (!(ch >= '0' && ch <= '9')) {
isNumber = false;
break;
}
}
if (isNumber) {
System.out.println(value + " 는 숫자입니다");
} else {
System.out.println(value + " 는 숫자가 아닙니다");
}
}
}
4-14. 생략
4-15. 다음은 회문수를 구하는 프로그램이다. 회문수(palindrome)란 숫자를 거꾸로 읽어도 앞으로 읽는 것과 같은 수를 말한다. 예를 들면 ‘12321’이나 ‘13531’ 같은 수를 말한다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오.
public class Ex4_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;
}
if (number == result)
System.out.println(number + " 는 회문수 입니다.");
else
System.out.println(number + " 는 회문수가 아닙니다");
}
}