C语言问题 这段代码哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/04/28 20:32:56
#include "stdio.h"
double mypow(double x, int y)
{ int i;
double z;
z=1.0;
for(i=1;i<=y;i++)
z=z*x;
return z;
}
main()
{
double x,z;
int y;
scanf("%lf%lf", &x,&y);
z=mypow(x,y);
printf("%lf的%lf次方是%lf",x,y,z);
system("pause");
}
==============
每次运行结果都是x.000000的0.000000次方是-1.#QNAN0
无论Y输入什么值 都是这样
代码没有错 但是编译运行后为什么出现这种情况?

下面是我对你的代码的修改
#include "stdio.h"
#include"windows.h"//用system()函数时用到

double mypow(double x, int y)
{ int i;
double z;
z=1.0;
for(i=1;i<=y;i++)
z=z*x;
return z;
}

void main()
{
double x,z;
int y;
scanf("%lf,%d", &x,&y);//y应当为整形数据
z=mypow(x,y);
printf("%lf的%d次方是%lf",x,y,z);//y应当为整形数据
system("pause");
}

main 函数中,y是int型的,所以在scanf和printf中应该用%d,而不能用%lf

1、2楼正解!