6. 다음 식을 참고로 섭씨 온도(C)를 화씨 온도(F)로 변환하는 프로그램을 다음과 같은 출력이 나오도록 작성하시오.
- F = (9.0 / 5.0)*C +32
- 섭씨온도가 -60부터 140까지 20씩 증가, 이 때의 화씨온도를 구하여 출력하는데, 온도는 모두 정수 형태로 출력
<소스코드>
package Chapter4_6;
public class Chapter4_6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int c=-60;c<140;c+=20) {
System.out.println("섭씨온도(C) : "+c+", 화씨온도(F) : "+(int)((9.0/5.0)*c+32));
}
}
}
7. 1부터 n까지의 합 중에서 5000을 넘지 않는 가장 큰 합과 그 때의 n을 구하는 프로그램을 작성하시오.
<소스코드>
package Chapter4_7;
public class Chapter4_7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=1;
int sum=0;
while(true) {
sum+=n;
if(sum>5000){
sum-=n;
n-=1;
break;
}else {
n++;
}
}
System.out.println("n : "+n+", sum : "+sum);
}
}
8. 다음과 같은 레기드 배열을 만든 후, 다음 배열 갑슬 출력하면서 각 행의 합과 평균도 함께 출력하는 프로그램을 작성하시오.
<소스코드>
package Chapter4_8;
public class Chapter4_8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[][] = {{78,48,78,98},{99,92},{29,64,83},{34,78,92,56}};
int sum=0;
for(int tmp[] : arr) {
for(int i : tmp) {
System.out.print(i+" ");
sum+=i;
}
System.out.println("\t 합 : "+sum+", 평균 : "+(double)sum/tmp.length);
sum=0;
}
}
}
9. 다음 [에라토스테네스의 체] 알고리즘을 이용하여 1에서 1000까지의 소수를 구해 한 행에 20개씩 출력하는 프로그램을 작성하시오.
- 2에서 n(1000)까지 수를 모두 체에 삽입
* 정수형 배열 prime을 배열 크기 1001개를 선언하여 모두 0을 대입한 후, 다시 배열 prime[2]에서 prime[1000]까지 1을 대입, 즉 prime[i]가 1이면 i는 소수
- 2의 2번째 배수부터 배수는 소수에서 제거, 3의 2번째 배수부터 배수는 소수에서 제거, sqrt(n)의 배수까지 소수에서 제거하면 나머지는 모두 소수
- 제거되지 않은 수는 소수이므로 출력
* 이제 i를 2에서 1000까지 prime[i] == 1 이면 i를 출력
<소스코드>
package Chapter4_9;
public class Chapter4_9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int prime[]= new int[1001];
prime[0]=0;
prime[1]=0;
int count=0;
for(int i=2;i<=1000;i++) {
prime[i]=1;
if(i!=2&&i%2==0) { // 2가 아닌 2의 배수는 소수에서 제외
prime[i]=0;
}
if(i!=3&&i%3==0) { // 3이 아닌 3의 배수는 소수에서 제외
prime[i]=0;
}
if(i%Math.sqrt((double)i)==0) { // n이 n의 제곱근의 배수이면 소수에서 제외
prime[i]=0;
}
if(prime[i]==1) {
System.out.print(i+"\t");
count++;
if(count%20==0&&count!=0) { // count가 0이 아니고 20으로 나누어 떨어지면
System.out.println();
}
}
}
}
}
10. 다음을 참고로 [파스칼의 삼각형]을 출력하는 프로그램을 작성하시오.
- 정수형 이차원 배열을 다음과 같이 [파스칼의 삼각형]을 저장할 수 있도록 레기드 배열로 처리
- 1행에서 10행까지 위에서 정의된 래기드 배열에 [파스칼의 삼각형]의 다음 값을 저장후 출력
* nCr = n!/(r!(n-r)!)
<소스코드>
package Chapter4_10;
public class Chapter4_10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[][] = new int[10][]; // 파스칼 삼각형을 담을 배열
int tmp1=1, tmp2=1; // tmp1는 분자, tmp2는 분모
for(int n=0;n<10;n++) {
arr[n] = new int[n+1]; // 행의 번호에 따라 레기드 배열 열 생성
for(int r=0;r<=n;r++) {
for(int a=n;a>n-r;a--) {
tmp1*=a; // 분자 n n-1 ... n-r+1
}
for(int b=r;b>=1;b--) { // 분모 r r-1 ... 1
tmp2*=b;
}
arr[n][r]= tmp1/tmp2;
System.out.print(arr[n][r]+" ");
tmp1=1;tmp2=1; // 재사용을 위한 초기화
}
System.out.println();
}
}
}
참고자료 : 인피니티북스 절대 JAVA
github 주소 :
https://github.com/ch1517/Network-programming/tree/master/Chapter4
'Programming Study > 절대JAVA' 카테고리의 다른 글
[절대JAVA]5장 프로그래밍 연습문제(2) (0) | 2018.09.23 |
---|---|
[절대JAVA]5장 프로그래밍 연습문제(1) (3) | 2018.09.22 |
[절대JAVA]4장 프로그래밍 연습문제(1) (4) | 2018.09.20 |
[절대JAVA]3장 프로그래밍 연습문제(2) (0) | 2018.09.19 |
[절대JAVA]3장 프로그래밍 연습문제(1) (0) | 2018.09.19 |
댓글