티스토리 뷰

jungol > 문제 > Langauge_Corder > 반복제어문1 - 자가진단 1~3

자가진단 1

 

문제



드이어 반복제어문 이다.
반복제어문은 말 그대로 특정 부분을 반복시키고 제어하는 것을 의미한다.


  • 문제 조건

1부터 15까지 출력


코드



a를 정수형 및 1로 초기화 했다.


7) while(a <=15) {
8) printf("%d\n", a);
9) a++;
10) }

그다음 while() 안에서 a를 출력 후, a값을 1 늘렸다.
이를 a <=15까지, 즉 a가 16이 되면 반복문이 종료되도록 만들었다.



1부터 15까지 잘 출력됐다.




 

자가진단 2

 

 

  • 문제 조건

입력된 수에서 1까지의 정수의 합 출력


코드


푸는 방식은 매우 다양하나, 나는 코딩 왕초보이므로,
무식하게 했다!


a로 입력값을 받고, 자연수들의 합은 sum에다가 넣었다.


8) while(a>0) {
9) sum += a;
10) a--;
11) }

while에서 sum = sum + a로, 값을 누적하되 (sum += a) a의 값을 1씩 줄여서 입력 값 이하의 수를 하나하나씩 누적시켰다.

ex) a = 5

(a>0)을 만족 (5>0) -> true
while 작동

sum = sum + a;
-> sum = 0 + 5;
-> sum = 5

a--;
-> a=4

(a>0) -> a=4 -> true
while 작동

sum = sum+a;
-> sum = 5+4;
-> sum = 9

a--;
-> a=3

…… 반복!

a--;
-> a=0

(a>0)
-> false
while 작동 안 함!

sum 출력!
15

이런 식으로 작동한다!

 

결과


여러 번 실행했을 때의 결과다!



 

자가진단 3

 

 

  • 문제 조건

조건 1 : 입력받은 수가 양수면
positive integer을 출력

조건 2 : 입력받은 수가 음수면
negative number을 출력

조건 3 : 0일 경우 while 종료



코드


5) int a = 1;
//입력값을 받을 a을 1로 초기화했다.
a를 1로 초기화 한 이유는
while의 조건이 a가 0이 아닐 경우가 참이기 때문에
1로 초기화를 하여 while문 실행이 불가함을 방지했다.

7) while(a!=0) {
//조건 3 입력값이 0 이면 a!=0의 값은 false가 되므로
while문은 종료된다!

10) if(a>0) printf("positive integer\n");
//조건 1

11) else if(a <0) printf("negative number\n");
//조건 2


결과


잘 나온다. (0 입력 시 바로 프로그램이 종료됐다)




코드

자가진단 1
#include <stdio.h>

int main(void)
{
int a = 1;

while(a <=15) {
printf("%d\n", a);
a++;
}
return 0;
}
자가진단 2
#include <stdio.h>

int main(void)
{
int a = 0; int sum = 0;
scanf("%d", &a);

while(a>0) {
sum += a;
a--;
}
printf("%d", sum);
return 0;
}
자가진단 3
#include <stdio.h>

int main(void)
{
int a = 1;

while(a!=0) {
printf("number");
scanf("%d", &a);
if(a>0) printf("positive integer\n");
else if(a <0) printf("negative number");
}
return 0;
}
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함