c语言怎样计算x的n次方?
区分x和n的类型,以及对结果的要求,可以有如下两种方式。
1 使用pow函数。
在C语言的标准头文件math.h中,有库函数pow,声明为
double pow(double x, double n);
其功能为计算x的n次方并返回结果。
所以可以用pow计算x的n次方。
该函数适用于以下几种情况:
a. 当n为浮点数类型时,必须使用pow。
b. 当x为浮点数或对结果值精度要求不高时,可以使用pow。
2 当x和n均为整型,且对结果要求绝对准确值,而不能是近似值时,可以自行编写整型乘方函数。
如
int pow_int(int x, int y)
{
int r = 1;
while(y--) r*=x;
return r;
}
其原理为,将x自乘y次,并将结果累计到r上,最终返回。
需要注意的是,使用该种方法时虽然可以得到准确值,但由于int可以表示的范围比double小很多,所以出现溢出的概率要比pow函数更大。
绛旓細include "stdio.h"void main(){...//鍦╩ain鍑芥暟閲屽紩鐢ㄤ笅闈㈢殑鍑芥暟}//寰幆姹X鐨凬娆℃柟鐨勫嚱鏁癲ouble power(double x, int n){ double val=1.0; //锛堝垵濮嬪寲杩斿洖鍊硷級while(n--) //锛堝惊鐜疦娆★紝N娆℃柟锛塿al=val*x; //锛堟瘡娆′箻浠锛岀浉褰撲簬涔樹互1娆℃柟锛塺eturn(val); //锛堣繑鍥炵粨鏋滐級}...
绛旓細鎬濊矾锛氬畾涔変竴涓嚱鏁癴un(x,n)姹x鐨刵娆℃柟锛屽嵆杩涜n娆or寰幆鎵цx鐨勭疮鎴愶紝涓诲嚱鏁拌皟鐢╢un鍑芥暟銆傚弬鑰冧唬鐮侊細include <stdio.h>int fun(int x,int n){int s=1;while(n--){s*=x;}return s;} int main(){int x=2,y=10;printf("%d\n",fun(2,10));return 0;}/*杩愯缁撴灉锛氭眰2鐨10...
绛旓細include<stdio.h> main(){ int n,x;int i;int mul=1;printf("璇疯緭鍏鐨勫硷細");scanf("%d",&n);printf("璇疯緭鍏鐨勫硷細");scanf("%d",&x);for(i=0;i<n;i++)mul=mul*x;printf("x鐨刵娆℃柟涓%d\n",mul);}
绛旓細C璇█涓绠涓涓暟鐨凬娆℃柟鍙互鐢ㄥ簱鍑芥暟pow鏉ュ疄鐜般傚嚱鏁板師鍨嬶細double pow(double x, double y)銆備妇渚嬪涓嬶細double a = pow(3.14, 2); // 璁$畻3.14鐨勫钩鏂广傛敞锛氫娇鐢╬ow鍑芥暟鏃讹紝闇瑕佸皢澶存枃浠#include<math.h>鍖呭惈杩涙簮鏂囦欢涓
绛旓細include<stdio.h> int power(int x,int n){ if(n==0)return 1;elseif(n%2==1)return x*power(x,n-1);else{ int y=power(x,n/2);return y*y;} } int main(){ int a,b,c;printf("enter x and n:");setvbuf(stdout,NULL,_IONBF,0);scanf("%d%d",&a,&b);c=power(a...
绛旓細include "stdio.h"void main(){...//鍦╩ain鍑芥暟閲屽紩鐢ㄤ笅闈㈢殑鍑芥暟}//寰幆姹X鐨凬娆℃柟鐨勫嚱鏁癲ouble power(double x,int n){ double val=1.0;//锛堝垵濮嬪寲杩斿洖鍊硷級while(n--)//锛堝惊鐜疦娆★紝N娆℃柟锛塿al=val*x;//锛堟瘡娆′箻浠锛岀浉褰撲簬涔樹互1娆℃柟锛塺eturn(val);//锛堣繑鍥炵粨鏋滐級} ...
绛旓細/ 杈撳叆1涓疄鏁 x锛岃绠楀苟杈撳嚭涓嬪紡鐨勫硷紝鐩村埌鏈鍚庝竴椤圭殑缁濆鍊煎皬浜10-5锛堜繚鐣2浣嶅皬鏁帮級銆傝姹傚畾涔夊拰璋冪敤鍑芥暟fact(n)璁$畻n鐨勯樁涔橈紝浠ュ強瀹氫箟鍜岃皟鐢ㄥ嚱鏁癿ypow(x, n)璁$畻x鐨刵娆℃柟銆傛渶鍚庨渶瑕佽绠楀嚭鏉ョ殑寮忓瓙濡備笅鍥炬墍绀猴細x+x^2/2!+x^3/3!+...+ / include <stdio.h> float mypow(float x,int ...
绛旓細1銆佸钩鏂规牴 C璇█涓sqrt鍑芥暟鏄寚鐨勫紑鏂硅繍绠楀嚱鏁帮紝寰楀埌鐨勭粨鏋滄槸鍑芥暟鍙橀噺锛堝彲浠ユ槸鏁板硷紝涔熷彲浠ユ槸鍙橀噺鍚嶏級鐨勭畻鏈钩鏂规牴銆2銆丯娆℃柟鏍 double pow(double x,double n)鏄痬ath.h閲屼竴鍑芥暟锛屾眰x鐨刵娆″箓 x蹇呴』>0,绔嬫柟鏍瑰氨鏄1/3娆″箓浜 浣嗚繖閲岃鐢3.0鎴1.0/3锛屽惁鍒欐垚浜嗘暣闄ょ粨鏋滀负1 ...
绛旓細printf("%s\n", "璇疯緭鍏ュ簳鏁 x锛"); scanf("%d", &x); printf("%s\n", "璇疯緭鍏ユ寚鏁 n锛"); scanf("%d", &n); for(i=0; i<n; i++) iResult *= x; printf("%d 鐨 %d 娆℃柟涓猴細%d\n", x, n, iResult); return 0;} ...
绛旓細include <stdio.h> include <math.h> int main(){ double x;int n;scanf("%lf %d",&x,&n);printf("%.1lf\n",pow(x,n));return 0;}