c언어 백준 10871 런타임에러
-
게시물 수정 , 삭제는 로그인 필요
개발환경은 visual stdio 2022이고요
이해가 안가는 점이 있어서 질문드립니다.
제가 봤을때는 코드에 아무문제가 없는데 자꾸 아래와 같은 버그가 생깁니다.
보니까 a에서 이상한 값을 읽는 중이라고하는데 이해가 안갑니다
일단 이 아래 있는게 제가 오류가 생긴 코드입니다.
int main()
{
int n, x, i;
int a[]={0,};
scanf_s("%d %d", &n, &x);
for (i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
if (a[i] < x)
printf("%d ", a[i]);
}
return 0;
}
한가지 더 궁금한게 있는데
백준 10871문제입니다.
문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
위와 같은 결과값이 나오려면 먼저 입력한 값을 배열에 저장하고 그 뒤에 비교한 후 출력하는게 맞는거 아닌가요?
아래가 정답코드인데 아래와 같이 작성하면 수열에 값을 입력하는 도중에 조건을 판별해서
조건이 맞으면 출력하게 되지않나요?
그러면 위와같은 그림이 안나올거 같은데 이게 정답인게 이해가 안갑니다.
그리고 scanf시 스페이스바로 입력값 구분하는 것과 엔터로 구분하는것에 차이가 있나요?
정답코드
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main()
{
int n, x, i, a;
scanf("%d %d", &n, &x);
for (i = 0; i < n; i++)
{
scanf("%d", &a);
if (a < x)
printf("%d ", a);
}
return 0;
}
개발환경은 visual stdio 2022이고요
![](https://img-api.cboard.net/img_n.php?image_url=https://kin-phinf.pstatic.net/20221010_282/1665374962445xjzeF_PNG/%C8%AD%B8%E9_%C4%B8%C3%B3_2022-10-10_130827.png)
문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
![](https://img-api.cboard.net/img_n.php?image_url=https://kin-phinf.pstatic.net/20221010_17/1665375180377TCGlk_PNG/%C8%AD%B8%E9_%C4%B8%C3%B3_2022-10-10_131220.png)
#c언어 백준 #c언어 백준 문제 #c언어 백준 1008 #c언어 백준 5597 #백준 10818 c언어 #백준 10926 c언어 #백준 10951 c언어 #백준 10950 c언어 #백준 2562 c언어 #백준 2439 c언어