一个C语言求绝对值的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/06 12:17:27
我在VC++ 6.0平台上编写求一个数的绝对值程序如下:
#include <stdio.h>
double abstr(double x)
{
if(x<0.0)
x=-x;
else
x=x;
return(x);
}

main()
{
double a,abstr(double a);
printf("Enter real number a please:");
scanf("%1f",&a);
printf("abs(%1f)=%1f\n",a,abstr(a));
}

编译和运行都没有问题,可是在执行窗口界面显示结果时却与实际不符合。如下:
Enter real number a please:-98.7
abs(-92559631349317831000000000000000000000000000000000000000000000.000000)=9255
9631349317831000000000000000000000000000000000000000000000.000000
Press any key to continue

请高手帮忙解惑!!!

你的程序
#include <stdio.h>
double abstr(double x)
{
if(x<0.0)
x=-x;
else
x=x;
return(x);
}

main()
{
double a,abstr(double a);
printf("Enter real number a please:");
scanf("%1f",&a);
printf("abs(%1f)=%1f\n",a,abstr(a));
}
我的改进程序:
#include <stdio.h>
double abstr(double x)
{
if((x-0.0)<0.0)
x=-x;
else
x=x;
return(x);
}

main()
{
double a,b;
double abstr(double a);
printf("Enter real number a please:");
scanf("%lf",&a);
b=abstr(a);
printf("abs(%lf)=%lf\n",a,b);
}

scanf("%1f",&a);
printf("abs(%1f)=%1f\n",a,abstr(a));
将%1f修改为:
%lf //字母l

不要采用
double
类型

这个类型最终产生的结果不精确