2011-02-16 1 views
2

이 프로그램은, 입력/출력 부간단한 C 프로그램

#include <stdio.h> 


main(){ 

double sum, v; 

sum = 0; 

while (scanf("%1f",&v)==1) 
    printf("\t%.2f\n",sum+=v); 
return 0; 
} 

괜찮다고 컴파일에 & K R의 프로그램에 기초한다. 그러나 어떤 입력에서든 실행을 시도 할 때 출력은 "-NAN"이며 아마도 숫자가 아닙니다. 나는 이유를 모른다. 어떤 조언을 주시면 감사하겠습니다.

+0

double을 float로 변경하면 문제가 해결 된 것 같습니다. 입력과 출력이 실수하기 때문에 의미가 있습니다. 그러나 K & R에서는 두 배를 사용합니다. –

답변

6

scanf에서 형식 코드가 잘못되었습니다. %lf (소문자 L)이어야하며 %1f이 아님.

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

이 더블에 대한 %lf 때문에 스캔 및 부동 소수점에 대한 %f 스캔입니다. 자세한 내용은 scanf format codes을 참조하십시오.

+0

+1 잡기가 좋습니다. 내 답변이 작동하는 동안, 당신의 "더 정확합니다" – corsiKa

+0

텍스트에서 "1"과 "1"이 얼마나 가깝게 보이는지에 따라 잘못된 읽기라고 확신합니다. –

+0

감사합니다. 그것은 당신이 어리석게 코드를 복사 할 때 일어납니다. 그러나 "lf"를 사용하면 sum과 v가 실수로 -NAN이됩니다. 그들이 두 배인 경우에만 작동합니다. 왜 그런지 알아? –

0

double을 float로 변경해보십시오.

0
scanf("%1f",&v) 

변수는 float이지만 변수는 double입니다. 시도해보십시오 :

scanf("%lf",&v)