到底怎么用C语言实现x的n次方? 用C语言程序设计:求x的n次方的函数。

c\u8bed\u8a00\u4e2d\u7f16\u5199x\u7684n\u6b21\u65b9\u600e\u4e48\u5f04\u554a\uff1f

C\u8bed\u8a00\u4e2d\u8ba1\u7b97x\u7684n\u6b21\u65b9\u53ef\u4ee5\u7528\u5e93\u51fd\u6570pow\u6765\u5b9e\u73b0\u3002\u51fd\u6570\u539f\u578b\uff1adouble pow(double x, double n)\u3002
\u5177\u4f53\u7684\u4ee3\u7801\u5982\u4e0b\uff1a
#include
#include
int main( )
{
printf("%f",pow\uff08x\uff0cn)\uff09\uff1b
return 0\uff1b
}
\u6ce8\uff1a\u4f7f\u7528pow\u51fd\u6570\u65f6\uff0c\u9700\u8981\u5c06\u5934\u6587\u4ef6#include\u5305\u542b\u8fdb\u6e90\u6587\u4ef6\u4e2d\u3002

\u6269\u5c55\u8d44\u6599\uff1a
\u4f7f\u7528\u5176\u4ed6\u7684\u65b9\u6cd5\u5f97\u5230x\u7684n\u6b21\u65b9\uff1a
#include
double power(double x,int n)\uff1b
main( )
{
double x\uff1b
int n\uff1b
printf("Input x,n:")\uff1b
scanf("%lf,%d",&x,&n)\uff1b
printf("%.2lf",power(x,n))\uff1b
}
double power(double x,int n)
{
double a=1.0\uff1b
int i\uff1b
for(i=1;i<=n;i++)
a*=x\uff1b
return a\uff1b
}

double pow(double x, double y);
pow()\u7528\u6765\u8ba1\u7b97\u4ee5x \u4e3a\u5e95\u7684 y \u6b21\u65b9\u503c\uff0c\u7136\u540e\u5c06\u7ed3\u679c\u8fd4\u56de
\u53ef\u80fd\u5bfc\u81f4\u9519\u8bef\u7684\u60c5\u51b5\uff1a
\u5982\u679c\u5e95\u6570 x \u4e3a\u8d1f\u6570\u5e76\u4e14\u6307\u6570 y \u4e0d\u662f\u6574\u6570\uff0c\u5c06\u4f1a\u5bfc\u81f4 domain error \u9519\u8bef\u3002
\u5982\u679c\u5e95\u6570 x \u548c\u6307\u6570 y \u90fd\u662f 0\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4 domain error \u9519\u8bef\uff0c\u4e5f\u53ef\u80fd\u6ca1\u6709\uff1b\u8fd9\u8ddf\u5e93\u7684\u5b9e\u73b0\u6709\u5173\u3002
\u5982\u679c\u5e95\u6570 x \u662f 0\uff0c\u6307\u6570 y \u662f\u8d1f\u6570\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4 domain error \u6216 pole error \u9519\u8bef\uff0c\u4e5f\u53ef\u80fd\u6ca1\u6709\uff1b\u8fd9\u8ddf\u5e93\u7684\u5b9e\u73b0\u6709\u5173\u3002
\u5982\u679c\u8fd4\u56de\u503c ret \u592a\u5927\u6216\u8005\u592a\u5c0f\uff0c\u5c06\u4f1a\u5bfc\u81f4 range error \u9519\u8bef\u3002
\u9519\u8bef\u4ee3\u7801\uff1a
\u5982\u679c\u53d1\u751f domain error \u9519\u8bef\uff0c\u90a3\u4e48\u5168\u5c40\u53d8\u91cf errno \u5c06\u88ab\u8bbe\u7f6e\u4e3a EDOM\uff1b
\u5982\u679c\u53d1\u751f pole error \u6216 range error \u9519\u8bef\uff0c\u90a3\u4e48\u5168\u5c40\u53d8\u91cf errno \u5c06\u88ab\u8bbe\u7f6e\u4e3a ERANGE\u3002
\u6ce8\u610f\uff0c\u4f7f\u7528 GCC \u7f16\u8bd1\u65f6\u8bf7\u52a0\u5165-lm\u3002
#include
#include
intmain()
{ printf("7 ^ 3 = %f\n",pow(7.0,3.0));
printf("4.73 ^ 12 = %f\n",pow(4.73,12.0));
printf("32.01 ^ 1.54 = %f\n",pow(32.01,1.54));
return0;}
\u8f93\u51fa\u7ed3\u679c\uff1a
7 ^ 3 = 343.000000
4.73 ^ 12 = 125410439.217423
32.01 ^ 1.54 = 208.036691

区分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 <math.h>
int main()
{
double x, n;
double jieguo=pow(x,n); /*事实上就是这一句,调用标准库函数*/
}

//pow()就是math。h里面求几次方的函数,调用即可。

pow 函数

#include "stdio.h"
#include "math.h"

int main(void)
{
printf("%f", pow(2, 3));/* 2的3次方 */
}

用pow函数,要加个头文件“math。h”

用循环语句就行。例如:
s=1;
for(i=1;i<=n;i++)s=s*n;
再例:
i=0;s=1;
while(i<n)
{
s=s*n;
i++;
}

  • 鎬庝箞鍦c璇█涓啓涓涓柟绋嬫潵璁$畻涓涓暟鐨刵娆℃柟
    绛旓細鎬濊矾锛氬畾涔変竴涓嚱鏁癴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...
  • c璇█寰幆缁撴瀯姹X鐨凬娆℃柟
    绛旓細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);//锛堣繑鍥炵粨鏋滐級} ...
  • C璇█ 鐢ㄩ掑綊鏂规硶姹X鐨刵娆℃柟
    绛旓細{ if
  • C璇█,鈥娆℃柟鈥鎬庝箞鐢?
    绛旓細闇瑕佸噯澶囩殑鏉愭枡鍒嗗埆鏈夛細鐢佃剳銆C璇█缂栬瘧鍣ㄣ1銆侀鍏堬紝鎵撳紑C璇█缂栬瘧鍣紝鏂板缓涓涓垵濮.cpp鏂囦欢锛屼緥濡傦細test.cpp銆2銆佸湪test.cpp鏂囦欢涓紝杈撳叆C璇█浠g爜锛歱rintf("%lf", pow(11, 3)); 銆3銆佺紪璇戝櫒杩愯test.cpp鏂囦欢锛屾鏃惰绠楀嚭浜11鐨3娆℃柟鐨勫艰鎵撳嵃銆
  • 姹傝В鍐C璇█闂:瀹氫箟涓涓眰x鐨刵娆℃柟鍑芥暟,鐢ㄦ鍑芥暟姹2鐨0娆℃柟+2鐨1娆...
    绛旓細double pow(int x,int n){ double s=1;int i;for(i=1;i<=n;i++)s=s*x;return s;} int main(){ int i;double s=0;for(i=0;i<=63;i++)s+=pow(2,i);printf("%lf",s);return 0;}
  • c璇█ 鍒╃敤fact瀹炵幇姹x鐨刵娆℃柟
    绛旓細double calc(int x,int n){ return pow(x,n);}
  • c璇█涓x鐨刵娆℃柟 鐢╢or 璇彞 鎬庝箞鍐?
    绛旓細double num=x;double num1=1;for(int i=0;i<n;i++){ num1=num1*x }
  • C璇█杈撳叆涓涓鏁存暟n鍜屼竴涓疄鏁皒,璁$畻x鐨刵娆℃柟鐨勫笺
    绛旓細include<stdio.h> float x;int n,i;float s=1.0;void main(){ printf("Please Input x:");scanf("%f",&x);printf("Please Input num:");scanf("%d",&n);if(n<0)printf("n must greater than 0.");else if(n==0)s=1;else { for(i=1;i<=n;i++){ s=s*x;} } pri...
  • c璇█ 鐢ㄨ凯浠 姹x鐨刵娆℃柟
    绛旓細b^n = (b ^ (n / 2) ^ 2) (n涓哄伓鏁)b^n = b * b ^ (n - 1) (n涓哄鏁)缁欎綘鍑芥暟锛屼紶鍏锛宯锛岃繑鍥瀖鐨刵娆℃柟 int fun(m, n){ if(n == 0)return 1;if(n%2==0)return pow(fun(m, n/2), 2);else return m*fun(n-1);} (-_-!杩欑涓滆タ绔熺劧涓嶈鐢ㄩ掑綊锛燂紒鍏稿瀷...
  • C璇█缂栫▼搴廎(X)=XN娆℃柟
    绛旓細{ int i=0;int j=a;//鍦ㄨ繖寰幆锛岃繘琛宐-1娆★紝鍥犱负j=a锛屾墍浠ュ湪绗竴娆$殑鏃跺欏氨宸茬粡杩涜浜哸鐨勫钩鏂逛簡锛屾墍浠ラ渶瑕佸噺涓涓俧or(i=0;i
  • 扩展阅读:c语言计算x的n次幂 ... c语言如何表达x的n次 ... c好学吗要学多久 ... 正常人音域几个八度 ... 为什么不建议孩子学编程 ... 求x的n次幂程序c语言 ... c语言简单实现x的n次方 ... c语言求n的阶乘 ... c语言编程求x的n次幂 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网