코드업 C언어 기초 100제에서 [기초-반복실행구조] 풀기
(단, 개수를 알 수 없는 정수가 순서대로 입력되며, 입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0은 출력되지 않도록 한다.)
조건1: while(), for(), do~while() 등의 반복문 사용 불가능.
#include <stdio.h>
int main() {
int i;
reload:
scanf("%d", &i);
if (i != 0) {
printf("%d\n", i);
goto reload;
}
return 0;
}
(단, 첫 줄에 정수의 개수 n이 입력되며, 두 번째 줄에 n개의 정수가 공백을 두고 입력된다. n개의 정수는 한 개씩 줄을 바꿔 출력한다.)
조건1: while(), for(), do~while() 등의 반복문 사용 불가능.
#include <stdio.h>
int main() {
int n, i;
scanf("%d", &n);
reload:
if(n-- != 0) {
scanf("%d", &i);
printf("%d\n", i);
goto reload;
}
return 0;
}
정답은 맞긴 했는데 scanf가 왜 1 2 3 4 5
를 다 담는게 아니라 1
2
이렇게 따로 담는지 이해가 안갔음.
반복문 안에 scanf를 넣고 안에 1 2 3 4 5
를 입력한다고 할 때, 첫 번째 반복에서는 첫번째 공백 앞부분에 있는 1만을 출력함.
그 다음의 반복에서는 두 번째 공백 앞부분에 있는 2를 출력하는데, 그 앞에 있는 1의 경우는 첫번째 반복에서의 scanf로 인해 잘리게 되므로 2만 출력함. → 그런식으로 한글자씩 출력됨.
사실 아직 이해 안감
(단, 정수가 순서대로 입력되지만 개수는 알 수 없고, 입력된 정수가 줄을 바꿔 하나씩 출력되도록 함.)
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
while(n != 0) {
printf("%d\n", n);
scanf("%d", &n);
}
return 0;
}
(단, 1씩 줄이면서 한 줄에 하나씩 1이 될 때까지 출력한다.)
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
while(n != 0) {
printf("%d\n", n);
n -= 1;
}
return 0;
}
(단, 1씩 줄이면서 한 줄에 하나씩 0이 될 때까지 출력하며, 입력한 수를 제외하고 출력한다.)
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
while(n > 0) {
n -= 1;
printf("%d\n", n);
}
return 0;
}
(단, a부터 입력한 문자까지 순서대로 공백을 두고 출력한다.)
#include <stdio.h>
int main() {
char n;
char i='a';
scanf("%c", &n);
while (i < n + 1) {
printf("%c ", i);
i++;
}
return 0;
}
(단, 0부터 그 수까지 줄을 바꿔 한 개씩 출력한다.)
#include <stdio.h>
int main() {
int n;
int i = 0;
scanf("%d", &n);
while(i <= n) {
printf("%d\n", i);
i += 1;
}
return 0;
}
1) 코드업이 다 좋은데 문제 설명에 답이 써져있는 경우가 많아서.. 저런건 토글로 가려주는 기능이 있으면 좋을텐데..