• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

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

22.10.02 07:30 작성 조회수 115

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

상현님의 프로필

상현

질문자

2022.10.02


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

상현님의 프로필

상현

질문자

2022.10.02

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

상현님의 프로필

상현

질문자

2022.10.02

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

상현님의 프로필

상현

질문자

2022.10.02

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