2008
08-06

本来以为自己可以解决的 可是研究了一天都没结果  实在没辙了 就来麻烦各位啦


 


是个求 N的x次方的问题   代码如下



#include <stdio.h>


double power(double x,int n)
{
 int i;
 double s=1.0f;
 for(i=0;i<n;i++)
 { s=s*x;}
 return s;
}
void main()
{
 double x;
 int n;
 printf(“X\n”);
 scanf(“%f”,&x);
 printf(“N\n”);
 scanf(“%d”,&n);
 double y;
 y=power(x,n);
 printf(“%f\n”,y);
}


 


这里用double 结果老是出错  ,而把double 换成int 或float 就输出正确的结果 


 


不知道是我哪里错了 ?? 请大虾们指点一下   谢谢各位


C程序问题》有 4 条评论

  1. whos 说:

    是在Turbo C中运行的吗?

    Turbo C中不能使用double型变量,不然会出错。具体原因不清楚。

    如果非要用double类型的话,不妨在VC中做。

  2. TONYAZITEN 说:

    我把你的代码复制的turbo c上运行了一下,编译器会提示“未定义的符号’y'在main函数中”,把double y;移到顶端就没有了。再运行并输入数字总会得到1.00000,不知跟你出现的情况一样不一样,不过我发现你的输入输出函数中把”%lf”都写成了”%f”,我把这些地方改过来以后输出结果就正确了,我也没把double变成int或float。不知我发现的是不是症结所在。

  3. aday23 说:

    多谢楼上的   原来就是%f  惹得祸 !!

  4. annybaby 说:

    [QUOTE=TONYAZITEN]

    我把你的代码复制的turbo c上运行了一下,编译器会提示“未定义的符号’y'在main函数中”,把double y;移到顶端就没有了。再运行并输入数字总会得到1.00000,不知跟你出现的情况一样不一样,不过我发现你的输入输出函数中把”%lf”都写成了”%f”,我把这些地方改过来以后输出结果就正确了,我也没把double变成int或float。不知我发现的是不是症结所在。

    [/QUOTE]

    对,应该将那个y放到x那里一起定义(楼主为什么要将它们分开呢?),你发现的是症结所在,主要是因为:

    你将需要读入的变量定义为double型的,但scanf()的参数却是float型的,它不能直接接收double型的变量,所以那个scanf()语句在程序中没有起作用,所以才会总是输出1.0000,实际就是直接输出了S的初值~~不信你可以改为其它的,改成什么它就会输出什么~~

     

    新手发帖,请多多指教!!~~

留下一个回复