kb920811
2015-09-20 11:42
采纳率: 33.3%
浏览 3.6k
已采纳

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,而是与之完全不想关的很大的数?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • threenewbee 2015-09-20 11:56
    已采纳

    第一个程序,应该是你的输入有问题,调试下。%lf(不是1f,是lf,才是double)

    已采纳该答案
    打赏 评论
  • threenewbee 2015-09-20 11:54

    第二个程序,num没有加上取地址。&num

    打赏 评论
  • 蚂蚁de臂膀 2015-09-20 12:06

    %f 单精度
    double 双精度

    打赏 评论

相关推荐 更多相似问题