A+B - 4
1 초 | 256 MB | 186047 | 64953 | 55228 | 35.446% |
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1 복사
1 1
2 3
3 4
9 8
5 2
예제 출력 1 복사
2
5
7
17
7
//////////////////////////////////////////////////////
EOF가 뭐시여?
End of File 이라고 해서 입출력할때 끝을 표시하는 마커라나
지금처럼 입출력을 아예 안하면서 함수를 끝내는 경우나
나중에 스트링 입출력할때도 요긴하게 쓰인다.
////////////////////////////////////////////////////
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int a=1, b=1;
while (1) {
scanf("%d %d", &a, &b);
if (a == EOF && b == EOF)
break;
printf("%d\n", a + b);
}
return 0;
}
// 이렇게 짜면 안된다.
이런식으로 EOF가 a,b에 배정될까? 해서 시도해봤지만 에러난다.
애초에 scanf단계에서 변수의 포인터에 값을 할당 받지도 못했다.
/////////////////////////////
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF); {
printf("%d\n", a + b);
}
return 0;
}
///////////////////////////////////
이렇게 된다면 scanf에서 2개의 값을 입력받은 경우에는 scanf가 반환하는 값이 2가 되어 EOF(-1)이 아니므로 계속 진행
이외에 에러값이나 문장의 끝을 읽으면 scanf가 반환하는 값이 -1이 된다나
VS에서 코드 실행한 후 키보드로 아무것도 안치고 엔터누르면 끝날줄 알았는데 안끝나지더라
근데 백준에서는 맞은걸로 처리됨 뭐냐 이거
//////////////////////////////////
(220225) 첨가해설
설명을 하자면 scanf라는 함수는 반환값이 존재하기 때문에
기본적인 역할은 공백문자' '나 줄바꿈문자'\n'를 기준으로 숫자나 문자를 포인터에 저장하는 함수이지만
int a,b;
int return = scanf("%d %d",&a,&b); 이런식으로 함수가 반환하는 리턴값을 받아낼 수도 있다.
a,b에 둘다 성공적으로 scanf로 정보가 들어갔으면 2를,
하나만 들어갔다면 1을, 둘다 들어가지 않았다면 EOF를 반환하도록 하는 구조이다.
프로그래밍 언어마다 EOF는 다르고, c의 경우는 -1이 EOF이다.
여튼
while (scanf("%d %d", &a, &b) != EOF); {
printf("%d\n", a + b);
}
while (scanf("%d %d", &a, &b) != -1); {
printf("%d\n", a + b);
}
이렇게 쓰는것은 c에서는 같은 코드라고 봐도 무방하고
3. while (~scanf("%d", &n))
https://donggod.tistory.com/55
요기서는 EOF가 -1이니 비트연산으로 ~EOF = ~(1111....1111)=0000....0000
이되는 것을 이용하는 법도 소개하고 있다.
'강의 정리 > 씨언어 백준' 카테고리의 다른 글
(오답노트) 백준(BOJ) 1152번, scanf("%[^\n]",ptr) - c언어 (0) | 2022.02.05 |
---|---|
(오답노트) 백준(BOJ) 10809번, '\0'와 NULL은 다르다 - c언어 (0) | 2021.12.28 |
(오답노트) 백준(BOJ) 11720 번, 문자를 숫자로, char to integer = atoi, 이외에 atof도 배워놔라 - c언어 (0) | 2021.12.27 |
(오답노트) 백준(BOJ) 4673번, 셀프넘버 - c언어 (0) | 2021.12.19 |
(오답노트) 백준(BOJ) 8958 번, 문자열의 끝, '\0' - C언어 (0) | 2021.12.16 |