2일차에 배운 내용의 과제풀이 이다.
1. 여러가지 조건식 표현법
//int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식
int x;
if(x>10&&x<20){
//code
}
//char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식
char ch;
if(ch != " "&&ch!= " ")
{
//code
}
//char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식
char ch;
if(ch == 88||ch == 120){
//code
}
//char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식
char ch;
if(ch>=0&&ch<=9){
//code
}
//char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식
char ch;
if((ch > 64&&ch< 91)||(ch>96&&ch<123)){
//code
}
//int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을때 true인 조건식
int year;
if((year%400 == 0&&year%4 == 0)&&year%100 != 0){
//code
}
//boolean형 변수 powerOn이 false일 때 true인 조건식
boolean powerOn;
if(!powerOn){
//code
}
//문자열 참조변수 str이 "yes"일 때 true인 조건식
String str;
if(str.equals("yes")){
//code
}
2. 1부터 20까지의 정수중에서 2 또는 3의 배수가 아닌 수의 총합을 구하세요.
int sum =0;
for (int x = 1; x<=20 ; x++){
if(!(x%2==0)&&!(x%3==0)){
sum = sum + x;
}
}
System.out.println("전체합은 = "+sum);
3. 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하세요.
int sum = 0;
int totalSum = 0;
for(int i = 1;i<11;i++){
sum +=i;
totalSum += sum;
}
System.out.println("totalSum="+totalSum);
4. 1+(-2)+3+(-4)+...과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100 이상이 되는지 구하세요.
int i = -1;
int sum = 0;
while(sum <= 100){
i = -i;
sum +=i;
if(sum < 100) {
if (i < 0) {
i -= 1;
} else {
i += 1;
}
}
}
System.out.println("i="+i);
5.다음의 for문을 while문으로 변경하세요.
for(int i=0; i<=10; i++) { //문제
for(int j=0; j<=i; j++)
System.out.print("*");
System.out.println();
}
int i =0;
while(i<=10){ //해답
int j =0;
while(j<=i){
System.out.print("*");
j++;
}
System.out.println();
i++;
}
6. 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프로그램을 작성하세요.
for(int i = 1;i<7;i++){
for(int j =1;j<7;j++){
if(i+j == 6){
System.out.println("천번째 수 : "+i+", 두번재 수 : "+j);
}
}
}
7. 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하세요.
만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되어야 합니다.
String str = "12345";
int sum = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
System.out.println(ch-'0');
sum += (ch-'0');
}
System.out.println("sum=" + sum);
//예상 결과 값 15
8. Math.random()을 이용해서 1부터 6 사이의 임의의 정수를 변수 value에 저장하는 코드를 완성하세요.
int value = (int)((Math.random() * 6 - 1 + 1) + 1);
System.out.println("value:"+value);
9.int 타입의 변수 num이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하세요.
만일 변수 num의 값이 12345라면, ‘1+2+3+4+5’의 결과인 15를 출력하세요.
문자열로 변환하지 말고 숫자로만 처리하세요.
int num = 12345;
int sum = 0;
int unitNum = Integer.toString(num).length();
int unit =1;
for(int i =1; i<=unitNum;i++){
unit =1;
int j =i;
while(j<unitNum){
unit *=10;
j++;
}
System.out.println("unit = "+unit);
System.out.println(num/unit);
sum +=(num/unit);
num-=(unit*(num/unit));
}
System.out.println("sum="+sum);
10.다음은 숫자맞추기 게임을 작성한 것이다. 1과 100사이의 값을 반복적으로 입력해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다.
사용자가 값을 입력하면, 컴퓨터는 자신이 생각한 값과 비교해서 결과를 알려준다.
사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다.
// 1~100사이의 임의의 값을 얻어서 answer에 저장한다.
int answer = (int)(Math.random()* 100-1+1)+1;
int input = 0; //사용자입력을 저장할 공간
int count = 0; //시도횟수를 세기위한 변수
// 화면으로 부터 사용자입력을 받기 위해서 Scanner클래스 사용
java.util.Scanner s = new java.util.Scanner(System.in);
do {
count++;
System.out.print("1과 100사이의 값을 입력하세요 : ");
input = s.nextInt(); //입력받은 값을 변수 input에 저장한다.
if(input == answer){
System.out.println("정답입니다!");
break;
}
else if(input<answer){
System.out.println("더 높은 숫자 입니다.");
}
else {
System.out.println("더 낮은 숫자 입니다.");
}
System.out.println("시도횟수 : "+count);
} while(true); //무한반복문
System.out.println("총 시도횟수 : " +count);