이론문제
실습문제
1. 다음 프로그램에 대해 물음에 답하라.
int sum=0, i=0;
while(i<100){
sum=sum+i;
i+=2;
}
System.out.println(sum);
1) 무엇을 계산한느 코드이며 실행 결과 출력되는 내용은?
2) 위의 코드를 main()메소드로 만들고 whlieTest클래스로 완성하라
3) for문을 이용하여 동일하게 생성되는 ForTest 클래스를 작성하라
4) do-while문을 이용하여 동일하게 실행되는 DoWhileTest클래스를 작성하라.
2. 다음 2차원 배열 n을 출력하는 프로그램을 작성하라.
int n[][]={{1},{1,2,3},{1},{1,2,3,4},{1,2}};
>>
public class EX02 {
public static void main(String[]args) {
int n[][]= {{1},{1,2,3},{1},{1,2,3,4},{1,2}};
for(int i=0;i<n.length;i++) {
for(int j=0;j<n[i].length;j++) {
System.out.print(n[i][j]+" ");
}
System.out.println();
}
}
}
3. Scanner를 이용하여 정수를 입력받고 다음과 같이 *를 출력하는 프로그램을 작성하라.
>>
import java.util.Scanner;
public class EX03 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("정수를 입력하시오>>");
int num=scan.nextInt();
for(int i=num;i>0;i--) {
for(int j=0;j<i;j++)
System.out.print("*");
System.out.println();
}
}
}
4. Scanner를 이용하여 소문자 알파벳을 하나 입력받고 다음과 같이 출력하는 프로그램을 작성하라.
>>
import java.util.Scanner;
public class EX04 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("소문자 알파벳 하나를 입력하시오>>");
char ch=scan.next().charAt(0);//scanner를 이용해 char형 입력받는 방법. next는 String형.
for(char i=ch;i>='a';i--) {
for(char j='a';j<=i;j++)
System.out.print(j);
System.out.println();
}
}
}
5. 양의 정수를 10개 입력받아 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력하는 프로그램을 작성하라.
>>
import java.util.Scanner;
public class EX05 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("양의 정수 10개를 입력하시오>>");
int arr[]=new int[10];
for(int i=0;i<10;i++) {
arr[i]=scan.nextInt();
}
System.out.print("3의 배수는 ");
for(int i=0;i<arr.length;i++) {
if(arr[i]%3==0)
System.out.print(arr[i]+" ");
}
}
}
6. 배열과 반복문을 이용하여 프로그램을 작성해보자. 키보드에서 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전이 각 몇개로 변환되는지 예시와 같이 출력하라. 이때 반드시 다음 배열을 이용하고 반복문으로 작성하라.
int []unit={50000,10000,5000,1000,500,100,50,10,1};//환산할 돈의 종류
>>
import java.util.Scanner;
public class EX06 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
int []unit= {50000,10000,1000,500,100,50,10,1};
System.out.print("금액을 입력하시오>>");
int money=scan.nextInt();
int i=0;
int num;
while(money>0) {
num=money/unit[i];
if(num==0) {
i++;
continue;
}
System.out.println(unit[i]+"원 짜리: "+num+"개");
money=money-num*unit[i];
i++;
}
}
}
7. 정수를 10개 저장하는 배열을 만들고 1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 그리고 배열에 든 숫자들과 평균을 출력하라.
>>
public class EX07 {
public static void main(String[]args) {
int arr[]=new int[10];
System.out.print("랜덤한 정수들: ");
int sum=0;
for(int i=0;i<10;i++) {
arr[i]=(int)(Math.random()*10+1);
sum+=arr[i];
System.out.print(arr[i]+" ");
}
System.out.println();
double avg=(double)sum/arr.length;
System.out.println("평균은 "+avg);
}
}
8. 정수를 몇 개 저장할지 키보드로부터 개수를 입력받아(100보다 작은 개수) 정수 배열을 생성하고, 이 곳에 1에서 100까지 범위의 정수를 랜덤하게 삽입하라 .배열에는 같은 수가 없도록 하고 배열을 출력하라.
>>
import java.util.Scanner;
public class EX08 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("정수 몇 개?");
int num=scan.nextInt();
int arr[]=new int[num];
int i=0;
int sameNum=0;//같은 수가 있는지 판별하는 변수
while(i<num) {
int randNum=(int)(Math.random()*100+1);
for(int j=0;j<arr.length;j++)
if(arr[j]==randNum) {
sameNum=1;
break;
}
if(sameNum==1) {//배열에서 같은 수가 발견되었다면
sameNum=0;//다시 sameNum을 초기화하고
continue;//반복문 다시 시작
}
arr[i++]=randNum;
}
for(int n=0;n<arr.length;n++)
System.out.print(arr[n]+" ");
}
}
9. 4x4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고 2차원 배열을 화면에 출력하라.
>>
public class EX09 {
public static void main(String[]args) {
int arr[][]=new int[4][4];
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
arr[i][j]=(int)(Math.random()*10+1);
for(int i=0;i<4;i++) {
for(int j=0;j<4;j++)
System.out.print(arr[i][j]+" ");
System.out.println();
}
}
}
10. 4x4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 10개만 랜덤하게 생성하여 임의의 위치에 삽입하라. 동일한 정수가 있어도 상관없다. 나머지 6개의 숫자는 모두 0이다. 만들어진 2차원 배열을 화면에 출력하라.
>>
public class EX10 {
public static void main(String[]args) {
int arr[][]=new int[4][4];//숫자 저장할 배열
int isFull[]=new int[6];//[i][j]번째에 0인지 확인할 배열
int cnt=0;
int sameNum=0;
while(cnt<6) {
int i=(int)(Math.random()*3);//0~3의 랜덤한 수 생성
int j=(int)(Math.random()*3);//0~3
int num=i*10+j;
for(int n=0;n<isFull.length;n++)//이미 같은 수가 있는지 확인
if(isFull[n]==num) {
sameNum=1;
break;
}
if(sameNum==1) {//확인되면
sameNum=0;//바꾸고
continue;//for문 다시 시작
}
arr[i][j]=1;//배열에 1삽입하고->기본적으로 0 들어가기 때문에 0 들어갈 자리를 1로 표시
isFull[cnt++]=num;//건너뛴다.
}
for(int i=0;i<4;i++) {
for(int j=0;j<4;j++) {
if(arr[i][j]==1) {//1이 있는 자리를
arr[i][j]=0;//0으로 바꾸고
continue;
}
arr[i][j]=(int)(Math.random()*10+1);
}
}
for(int i=0;i<4;i++) {
for(int j=0;j<4;j++)
System.out.print(arr[i][j]+" ");
System.out.println();
}
}
}
11. 다음과 같이 작동하는 Avarage.java를 작성하라. 명령행 인자는 모두 정수만 사용되며 정수들의 평균을 출력한다. 다음 화면은 컴파일된 Average.class파일을 c:\Temp디렉터리에 복사한 뒤 실행한 경우이다. 원본 Average.class파일은 이클립스의 프로젝트 폴더 밑에 bin폴더에 있다.
>>
public class EX11 {
public static void main(String[]args) {
int num[]=new int[args.length];
for(int i=0;i<args.length;i++) {
num[i]=Integer.parseInt(args[i]);
}
int sum=0;
for(int i=0;i<num.length;i++) {
sum+=num[i];
}
double avg=(double)sum/num.length;
System.out.println(avg);
}
}
12. 다음과 같이 작동하는 Add.java를 작성하라. 명령행 인자 중에서 정수만을 골라 합을 구하라. 다음 화면은 Add.class파일을 c:\Temp 디렉터리에 복사한 뒤 실행한 경우이다. 원본 Add.class 파일은 이클립스 프로젝트 폴더 밑에 bin폴더에 있다.
>>
public class EX12 {
public static void main(String[]args) {
int num[]=new int[args.length];
for(int i=0;i<args.length;i++) {
try {
num[i]=Integer.parseInt(args[i]);
}catch(NumberFormatException e) {
}
}
int sum=0;
for(int i=0;i<num.length;i++)
sum+=num[i];
System.out.println(sum);
}
}
13. 반복문을 이용하여 369게임에서 박수를 쳐야 하는 경우를 순서대로 화면에 추력해보자. 1부터 시작하며 99까지만 한다. 실행 사례는 다음과 같다.
>>
public class EX13 {
public static void main(String[]args) {
int cnt=0;
for(int i=1;i<100;i++) {
cnt=0;
if(i%10==3 || i%10==6 || i%10==9)
cnt++;
if(i/10==3 || i/10==6 || i/10==9)
cnt++;
if(cnt==1)
System.out.println(i+"박수 짝");
else if(cnt==2)
System.out.println(i+"박수 짝짝");
}
}
}
14.다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.
Stirng course[]={"Java","C++","HTML5","컴퓨터구조","안드로이드"};
int score[]={95,88,76,62,55};
그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다.
>>
import java.util.Scanner;
public class EX14 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
String course[]= {"Java","C++","HTML5","컴퓨터구조","안드로이드"};
int score[]= {95,88,76,62,55};
String str;
int i;
do {
System.out.print("과목 이름>>");
str=scan.next();
if(str.equals("그만"))
break;
for(i=0;i<course.length;i++) {
if(course[i].equals(str)) {
System.out.println(str+"의 점수는 "+score[i]);
break;
}
}
if(i==course.length)
System.out.println("없는 과목입니다.");
}while(str!="그만");
}
}
16. 컴퓨터와 독자 사이의 가위 바위 보 게임을 만들어보자. 예시는 다음 그림과 같다. 독자부터 먼저 시작한다. 독자가 가위 바위 보 중 하나를 입력하고 <Enter>키를 치면, 프로그램은 가위 바위 보 중에서 랜덤하게 하나를 선택하고 컴퓨터가 낸 것으로 한다. 독자가 입력한 값과 랜덤하게 선택한 값을 비교햐여 누가 이겼는지 판단한다. 독자가 가위 바위 보 대신 "그만"을 입력하면 게임을 끝낸다.
>>
import java.util.Scanner;
public class EX16 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.println("컴퓨터와 가위 바위 보 게임을 합니다.");
String str[]= {"가위","바위","보"};
String user;
do {
System.out.print("가위 바위 보!>>");
user=scan.next();
if(user.equals("그만")) {
System.out.println("게임을 종료합니다...");
break;
}
int n=(int)(Math.random()*3);
int user_num=3;
for(int i=0;i<str.length;i++)
if(str[i].equals(user))
user_num=i;
if(user_num==0) {
if(n==0)
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 비겼습니다.");
else if(n==1)
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 컴퓨터가 이겼습니다.");
else
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 사용자가 이겼습니다.");
}else if(user_num==1) {
if(n==0)
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 사용자가 이겼습니다.");
else if(n==1)
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 비겼습니다.");
else
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 컴퓨터가 이겼습니다.");
}else if(user_num==2) {
if(n==0)
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 컴퓨터가 이겼습니다.");
else if(n==1)
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 사용자가 이겼습니다.");
else
System.out.println("사용자="+str[user_num]+", 컴퓨터="+str[n]+" 비겼습니다.");
}else {
System.out.println("다시 입력해주세요.");
}
}while(user!="그만");
}
}
'Language > Java' 카테고리의 다른 글
[명품 Java Programming]4장 연습문제 (0) | 2020.07.11 |
---|---|
[명품 Java Programming]4장 클래스와 객체 (0) | 2020.07.11 |
[명품 Java Programming]3장 반복문과 배열 그리고 예외 처리 (0) | 2020.07.11 |
[명품 JAVA Programming]2장 연습문제 (0) | 2020.07.08 |
[명품 JAVA Programming] 2장 자바 기본 프로그래밍 (0) | 2020.07.08 |
댓글