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

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)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证