C语言编程的一个小小问题,谢谢啦

//x的n次方#include"stdio.h"intmain(){intn;doubles,x;doublepower(double,int);//声明时不要忘了;pr... //x的n次方
#include "stdio.h"
int main()
{
int n;
double s,x;
double power(double,int); //声明时不要忘了;
printf("please enter 'x' and 'n'\n");
scanf("%lf%d",&x,&n);
s=power(x,n);
printf("x^n=%.2f\n",s);
return 0;
}
double power(double x,int n)
{
double all=1.0;
int k=n;
while (k!=0)
{
all=all*x;
k--;
}
return all;
}

程序如上,问题在scanf("%lf%d",&x,&n);,如果我把lf变成f的话,结果就是一堆数字,为什么啊,谢谢啦^_^
展开
 我来答
仙戈雅3n
2013-07-29 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:903万
展开全部

int和double都是用%d修饰,float才是用%f修饰.

下面我把你的代码改用了float型,代码如下:

#include<stdio.h>
int main()
{
int n;
float s,x=0.0f;            // 注意:float型需要进行初始化,否则将出现乱码
float power(float,int);   // 声明时不要忘了;
printf("please enter 'x' and 'n'\n");
scanf("%f%d",&x,&n);
s=power(x,n);
printf("x^n=%.2f\n",s);

return 0;
}
float power(float x,int n)
{
float all=1.0f;
int k=n;
while (k!=0)
{
all=all*x;
k--;
}

 return all;
}
wsnowolf
2013-07-29 · TA获得超过1835个赞
知道小有建树答主
回答量:481
采纳率:90%
帮助的人:218万
展开全部
你在定义变量时给x定义的为双精度浮点数double,而输入时如果用%f的话,类型不匹配。
追问
哦,意思是如果double的话得%lf输出,float的话是%f输出,是这个意思么?
追答
是这样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风逝zty
2013-07-29
知道答主
回答量:34
采纳率:0%
帮助的人:18.1万
展开全部
应为你要输出的数字比较长,lf可以输出来,换成f的话就溢出了
追问
我计算2的3次方,难道也溢出么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b520329
2013-08-13 · TA获得超过322个赞
知道答主
回答量:21
采纳率:0%
帮助的人:10.1万
展开全部
因为你上面定义用的是double所以输入时要用%lf,如果用float定义,输入时可以用%f,采纳我把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1498049593
2013-07-29
知道答主
回答量:11
采纳率:0%
帮助的人:5.8万
展开全部
双精度类型用%d 你把double s,x;改成float s,x; 或者scanf("%lf%d",&x,&n);改成scanf("%d%d",&x,&n);就行了,主要是类型不匹配
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式