下面的解答已被3103人点赞
没有乘方这一运算符,因为在basic中用的乘方运算符“^”在C语言中用作为位运算符。最后一次编辑时间 2017-01-15
但C语言中仍有乘方这一功能。惯用的乘方运算符被一个乘方函数取而代之。
这个函数是pow( double a , double b),其所在的头文件为<math.h>。
没有乘方这一运算符,因为在basic中用的乘方运算符“^”在C语言中用作为位运算符。最后一次编辑时间 2017-01-15
但C语言中仍有乘方这一功能。惯用的乘方运算符被一个乘方函数取而代之。
这个函数是pow( double a , double b),其所在的头文件为<math.h>。
在C语言中,乘方也是一种运算
C语言在库函数中提供了一个计算乘方的函数
函数名为pow
函数头文件为 math.h
函数的原型为double pow (double x,double y)
函数的功能为计算 x^y的值,并返回结果
在C语言的头文件 math.h中定义了pow(x,y),返回结果是x的y次方。其中,x、y及函数值都是double型;具体使用时要先添加#include<math.h>。最后一次编辑时间 推荐于2017-09-13 03:48:27
在C++以及其他高级编程语言中都定义了此操作函数。C++中,乘方函数被定义在了头文cmath头文件下。具体使用时,需先引用头文件#include <cmath>。
对于64位长整型数据进行乘方计算,pow函数已无法满足其精度需要,这里需要通过长整型数的四则运算来实现。
乘方函数名称:pow(double,double), 具体参数中至少一方为float、double、long double类型。如计算5³;时, 直接使用 pow(5,3);返回结果即记为125。
C语言的乘方运算可以利用库函数pow。
pow函数原型:double pow( double x, double y );
头文件:math.h/cmath(C++中)
功能:计算x的y次幂。
参考代码:
#include <stdio.h>最后一次编辑时间 推荐于2018-01-25 17:59:09
#include <math.h>
int main()
{
int a=3,b=2;
double t = pow(a,b);//计算3的平方并输出
printf("%.0lf\n",t);
return 0;
}
/*
输出:
9
*/
在说些什么东东啊,有函数pow(x,y)意思是x的y次方,要加函数头<math.h>最后一次编辑时间 推荐于2018-04-12 20:36:30
大虾们啊,看清楚点,阁下的算法都是基于系统类型的,即使是double也只能在小数点后14位,远远不够,要自己编写算法,用字符串实现的,帮帮忙
输入格式为:a.xxx空格b回车 就是前面的数中要带小数点的,如果是整数,就打a.0空格b回车。可以实现2.1的5000次方的操作最后一次编辑时间 推荐于2017-09-17 13:28:38
#include<stdio.h>
#include<math.h>
int qq(int n)
{ int i, sum=1;
for(i=1;i<=n;i++)
sum=10*sum;
return(sum);
}
int main()
{
float r;
int n;
while(1)
{
char a[10000];
long int b[10000];
int k,h,m,i,j,z,g,t,q,e;
long int c=0;
if(scanf("%s%d",a,&n)==EOF)break;
for(i=0;a[i];i++)
if(a[i]=='.')k=i;
m=i-k-1;
for(i=k;i<k+m;i++)
a[i]=a[i+1];
h=i;
for(i=0;i<h;i++)
b[i]=a[i]-48;
for(i=0;i<h;i++)c=c*10+b[i];
for(i=0;i<h/2;i++){ t=b[i];b[i]=b[h-1-i];b[h-1-i]=t;}
for(e=1;e<n;e++)
{
for(i=0;i<h;i++)b[i]=b[i]*c;
for(j=0;j<h-1;j++)
if(b[j]>=10){t=b[j];b[j]=t%10;b[j+1]+=t/10; }
if(b[h-1]>=10)
{
t=b[h-1];
q=b[h-1];
z=1;
while(t>=10)
{
t=t/10;
z++;
}
g=z;
while(z>=1)
{
b[h+g-z-1]=q/qq(g-z)%10;
z--;
}
h=h+g-1;
}
}
if(h<m*n)
{
printf(".");
for(j=m*n-1;j>h-1;j--)printf("0");
for(j=0; ;j++)if(b[j]!=0)break;
for(i=h-1;i>=j;i--)
printf("%d",b[i]);
}
if(h==m*n)
{ for(j=0; ;j++)if(b[j]!=0)break;
printf(".");
for(i=h-1;i>=j;i--)
printf("%d",b[i]);
}
if(h>m*n)
{
for(j=0; ;j++)if(b[j]!=0)break;
if(j<m*n-1&&b[h-1]==0)
{
printf(".");
for(i=m*n-1;i>=j;i--)printf("%d",b[i]);
}
if(j<=m*n-1&&b[h-1]!=0)
{ for(i=h-1;i>=m*n;i--)
printf("%d",b[i]);
printf(".");
for(i=m*n-1;i>=j;i--)printf("%d",b[i]);
}
if(j>=m*n)
{
for(i=h-1;i>=m*n;i--)
printf("%d",b[i]);
}
} printf("\n");
}
return 0;
}
pow函数的y是int型的最后一次编辑时间 推荐于2016-07-31 18:59:24
另外,虽然没什么影响,但是不得不说你的anser写错了,是answer;还有就是你定义的函数完全没有意义了,定义的函数只是纯粹地调用了另一个已有函数
#include<stdio.h>最后一次编辑时间 推荐于2016-07-31 20:53:07
int ChengFang(int x,int n)
{
int tmp;
if(n==1)
return x;
if(n==0)
return 1;
if(n%2==0){
tmp=ChengFang(x,n/2);
return tmp*tmp;
}
tmp=ChengFang(x,(n-1)/2);
return tmp*tmp*x;
}
int main()
{
int x,y;
x=ChengFang(3,4);
y=ChengFang(2,5);
printf("3^4=%d 2^5=%d \n",x,y);
}
你的C语言乘方程序,我帮你改完了,你看看吧(改动的地方见注释)
#include <stdio.h>最后一次编辑时间 2017-10-14
#include <math.h>
//double pow(double x, double y);//去掉这句,因为和math.h中的pow函数重名,而且math.h中的函数不需要声明,就可以用.
double times, year = 10, year_rate = 1.09;
int main(void)
{
times = pow(year_rate, year);
printf("10年后我国国民生产总值于现在相比增长了%d倍。", (int)times); //这里times强转成int型,以符合输出格式符%d输出整数的要求.
return 0;
}
运行结果
10年后我国国民生产总值于现在相比增长了2倍。
C语言里 ^ 只能是异或运算符。最后一次编辑时间 推荐于2016-04-08 12:17:09
C语言没有乘方运算符,但有乘方运算函数pow。