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的话,结果就是一堆数字,为什么啊,谢谢啦^_^ 展开
#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的话,结果就是一堆数字,为什么啊,谢谢啦^_^ 展开
5个回答
展开全部
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;
}
展开全部
你在定义变量时给x定义的为双精度浮点数double,而输入时如果用%f的话,类型不匹配。
追问
哦,意思是如果double的话得%lf输出,float的话是%f输出,是这个意思么?
追答
是这样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应为你要输出的数字比较长,lf可以输出来,换成f的话就溢出了
追问
我计算2的3次方,难道也溢出么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你上面定义用的是double所以输入时要用%lf,如果用float定义,输入时可以用%f,采纳我把
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
双精度类型用%d 你把double s,x;改成float s,x; 或者scanf("%lf%d",&x,&n);改成scanf("%d%d",&x,&n);就行了,主要是类型不匹配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询