本来以为自己可以解决的 可是研究了一天都没结果 实在没辙了 就来麻烦各位啦
是个求 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 就输出正确的结果
不知道是我哪里错了 ?? 请大虾们指点一下 谢谢各位
>> 本文固定链接: http://www.vcgood.com/archives/2598
是在Turbo C中运行的吗?
Turbo C中不能使用double型变量,不然会出错。具体原因不清楚。
如果非要用double类型的话,不妨在VC中做。
我把你的代码复制的turbo c上运行了一下,编译器会提示“未定义的符号’y'在main函数中”,把double y;移到顶端就没有了。再运行并输入数字总会得到1.00000,不知跟你出现的情况一样不一样,不过我发现你的输入输出函数中把”%lf”都写成了”%f”,我把这些地方改过来以后输出结果就正确了,我也没把double变成int或float。不知我发现的是不是症结所在。
多谢楼上的 原来就是%f 惹得祸 !!
[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的初值~~不信你可以改为其它的,改成什么它就会输出什么~~
新手发帖,请多多指教!!~~