scanf函数用%f读取double类型时,为什么会出现错误?

问题一:
#include

double power (double n,int p);
int main (void)
{
double x,xpow;
int exp;
printf("Enter a number and the positive integer power");
printf("to which will be raised . enter q");
printf("to quit.\n");
while (scanf("%1f%d",&x,&exp)==2)
{
xpow=power(x,exp);
printf("%.3g to the power %d is %.5g\n",x,exp,xpow);
printf("enter next pair of numbers or q to quit. \n");

}
printf("HOPE you enjoy this power trip --bye!\n");
return 0;

}
double power (double n,int p)
{

double pow=1;
int  i;
for (i=1;i<=p;i++)
    pow*=n;

return pow;

}
1)这个程序是《c primer plus》书上的一个例子,但是并不能计算出浮点数的整数次方,想了一天也没有看出是哪里的问题,若把double 换成float ,可以计算整数的整数次幂,还是计算不了浮点数的整数次方,这是为什么啊?
2)声明一下,用的是visual studio 编译器。
问题二:
#include
int main(void)
{
double num;
printf("please enter the number:\n");
scanf("%f",&num);
printf("your enter number is %f",num);
return 0;
}
这个程序输入num=1.2时,为什么不能打印出1.2,而是与之完全不想关的很大的数?

查看全部
kb920811
kb920811
2015/09/20 11:42
  • c
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

3个回复