인프런 커뮤니티 질문&답변

픽린님의 프로필 이미지
픽린

작성한 질문수

홍정모의 따라하며 배우는 C언어

7.11 최대, 최소, 평균 구하기 예제

5:30 콘솔창 실행 후 입력 시, 디버그 에러가 나타납니다.

해결된 질문

작성

·

169

0

#define CRTSECURE_NO_WARNINGS

#include <stdio.h>

#include <float.h>

int main()

{

float num = 0.0f;

float max = -FLT_MAX;

float min = +FLT_MAX;

float ave = 0.0f;

int n = 0;

float sum = 0.0f;

scanf("%lf", &num);

while ((scanf("%lf", &num) == 1))

{

max = (num > max) ? num : max;

min = (num < min) ? num : min;

/*if (num > max)

max = num;

if (num < min)

min = num;*/

sum += num;

n += 1;

}

printf("min = %f, max = %f, ave = %f\n", min, max, sum / num);

return 0;

}

를 입력했고, 빌드 실행 시 에러가 발견되지 않았습니다. 하지만 콘솔창에 입력했을 때, 디버그 에러가 나타났습니다.
그렇다면 문법 문제는 아니라는 것인데... 무엇이 문제인지, 모르겠습니다.

답변 1

0

픽린님의 프로필 이미지
픽린
질문자


다시한번 코드를 살펴보니, 제가 num을 2번 입력받도록 코드를 짠 것을 확인했습니다.

픽린님의 프로필 이미지
픽린
질문자

엇... 코드를 수정하고 다시 실행했는데도, 똑같이 런타임 에러가 발생했습니다.

픽린님의 프로필 이미지
픽린
질문자

밑에 작성했던 평균을 출력하기 위한 수식에서 나누는 수를 n이 아니라, num으로 잘못 입력했다는 것을 발견하여 수정하였지만, 런타임 에러는 그대로 나타납니다.. 도대체 무엇이 문제인지 모르겠습니다.

픽린님의 프로필 이미지
픽린
질문자

드디어 해결했습니다...!
런타임 에러 메시지를 살펴보니 '입력받는 변수'가 손상이 되었다는 이야기가 계속 뜨길래 고민을 해보았습니다. float으로 선언한 변수를 scanf( )로 입력받을 때는 형식 지정자로 %lf가 아닌, %f를 입력해줬어야하는데, [double형일때 %lf] 그것을 제가 간과하고 있었습니다.

픽린님의 프로필 이미지
픽린

작성한 질문수

질문하기