这个我觉得都是对的啊。编译了一下实验了一下也是对的。可是交作业得0分。
备注:粗体是我的编程,其他的都是题有的。
#include <stdio.h>
float fun ( float h )
{
int t1,t2,A;
h=h*1000;
A=h;
t1=A%10;
if(t1>=5)
{
t2=10-t1;
h=h+t2;
}
h=h/1000.0;
(float)h;
return h;
}
main( )
{ float a;void NONO ();
printf ("Enter a: "); scanf ( "%f", &a );
printf ( "The original data is : " );
printf ( "%f \n\n", a );
printf ( "The result : %f\n", fun ( a ) );
NONO( );
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
int i ;
float a ;
FILE *rf, *wf ;
rf = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 20 ; i++) {
fscanf(rf, "%f", &a) ;
fprintf(wf, "%f\n", fun(a)) ;
}
fclose(rf) ;
fclose(wf) ;
}
你打开文件直接用vc++6.0,编译成功之后会出现out.dat这个文件。你提交的是这个吗?而且你写的好长,可以短一些
int a=(int)(h*100+0.5);
return a/100.0;
我是这个
回复 ゞ*Boy.Racer.:可以保留两位。我X1000.就相当于把小数点向左移3位,然后把第三位四舍五入为0,在除1000.这就只剩下两位小数了。我用A代替h,A是整形数
回复 吃茫茫:误区就在这里,末位是0不代表除以1000的时候就会省略,电脑可不会给你把最后一位0给省略。按你的思路下来,1234.567执行到最后一步前就是1234570,除以1000就是1234.570,最后以为是0。好好地一步一步手算一下答案给的程序,比较一下每步执行之后的结果,体会一下思路。