int s;

s=0;

for (int n=0; n<100; n++) {

s+=n;

}

n은 0이고 (시작) n이 100미만이면 n을 +1하고, s에 n을 더한다.

이것을 while로 쓰면

int s, n;

s=n=0;

while (n<100) {

n++;

s+=n;

}

이렇게 된다.

while은 처음조건이 false면 한도 while안을 실행하지 않는다.

do while은 적어도 한번은 실행한다!

int n, s;

n=s=0;

 

while (s<100) {

n++;

s+=n;

}

System.out.printf("n = %d, s = %d\n", n, s);

===============================================

do{

n++;

s+=n;

} while(s<100);

System.out.printf("n = %d, s = %d\n", n, s);

===============================================

 

입력받은 값이 

예를 들어 

100라면 3자리 정수이다.

10으로 3번 나눗셈을 하게되면

0.100 이것은 int에 저장하지 못해 0이 된다.

따라서 입력받은 값이 0이 아니면 계속 나누기 10을 해주고

나누기를 한번 해줄 때마다 n에 1을 더해준다.

 

합이 100이상이되는 최소의 수를 구하기 위해서 s<100

s<=100이면 100이상이 되는 두번째 수이다. 

최소의 수는 n으로 카운팅을 하고

합의 경우

홀수면 더하기 짝수면 빼기 이므로 

if (n%2==0) {

s+=-n;

} else {

s+=n;

}

으로 준다.

++

1부터 시작이고 2는 빼고 3는 더하고를 반복해야하므로. 

 

5! 구하기 

 

10 ! = 10*9*7*6*5*4*3*2*1 을 의미한다.

 

int n, s, input;

 

System.put,print("양수 ? ");

input=sc.nextInt();

 

n=1;

s=0;

while(n<=input){

s+=n;

n+=2;

} System.out.println("결과 : " +s);

== 

while(n<=input){

n+=2;

s+=n;

} System.out.println("결과 : " +(s+1));

n 에 먼저 2를 해주게 되면 1의 값은 더하지 않고 3부터 입력한 수까지의 홀수를 더하므로 마지막에 (s+1)을 해줘야함.

 

 

밑에 주석은 처음 풀어보라고 했을 때 

적어 놨던 건데 while 뒤를이상하게 했음. 뭔 생각으로 저렇게했는지 감이안잡히는군..

n=s=0;
while(n++ <10) { // 10번 반복
s+=n; 
}

n을 먼저 사용한 후에 n+1 이므로 즉 0~9까지 10번

n=s=0;
while(++n < 10) { // 9번반복
s+=n;
}

n+1을 한 후에 그 값을 사용하므로 1~9까지 9번

n=s=0;
while(++n <= 10) { // 10번반복
s+=n;
}

n+1을 한 후에  1~10까지 10번

 

따라서 헷갈리는 경우가 많으므로 while 조건문에는 ++ 연산은 주의하자!

+ Recent posts