找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3113|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

怎么用C語言編寫一個(gè)求解冪函數(shù)的程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63113 發(fā)表于 2019-9-20 20:07 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
其實(shí)在絕大多數(shù)C語言編譯器內(nèi)部是有冪函數(shù)這個(gè)函數(shù)的,具體的指令是pow(a,b),這個(gè)指令實(shí)現(xiàn)的功能就是求解a^b的值,也就是求解ab次方。
例如,假如我們要求解6的7次方,并把最終的結(jié)果存入變量result,那么我們可以這樣子寫代碼:
include <math.h>       //添加數(shù)學(xué)運(yùn)算的頭文件
result= pow(6,7);        //求解6的7次方,結(jié)果存入result
但是,如果我們自己要編寫這樣的一個(gè)冪函數(shù)該怎么樣編寫呢?
首先我們需要進(jìn)行一些數(shù)學(xué)運(yùn)算方法的思考,假如要求解x^n, n>0且n為整數(shù)。那么應(yīng)當(dāng)是這樣的:
當(dāng)n=0時(shí),x^n=x^0=1;
當(dāng)n=1時(shí),x^n=x^1=x;
當(dāng)n>1時(shí),x^n=x*x…,就是把n個(gè)x相乘。這樣就可以得到本案中的冪函數(shù)的計(jì)算流程如圖 1。

在這個(gè)程序里面,我們可以使用if條件指令進(jìn)行判斷在n=0,n=1或者n>1的情況下分別進(jìn)行計(jì)算。
特別指出的是,當(dāng)n>1時(shí),用到for循環(huán)函數(shù),n有多大就利用for循環(huán)進(jìn)行(n-1)次的乘法運(yùn)算。(承接軟件開發(fā)業(yè)務(wù)-Q-Q:2531-26-3726)那么編寫的程序如下:
unsigned int pow1(unsigned int x,unsigned int n)      //求解冪函數(shù),n為正整數(shù)
{
unsigned char i=0;
if(n==0)  x=1;            //當(dāng)n=0時(shí),x=1
else
       {
       if(n==1)  x=x;     //當(dāng)n=1時(shí),x=x
       else                      //當(dāng)n>1時(shí),用for循環(huán)多次相乘
              {
              for(i=2;i<=n;i++)
                     {x=x*x;
                     }
              }
       }
return x;                            //將計(jì)算結(jié)果返回
}
在程序中其他部分調(diào)用函數(shù)pow1就能進(jìn)行冪函數(shù)運(yùn)算。例如求解9的11次方,結(jié)果存入變量result,那么可以像這樣調(diào)用指令pow1進(jìn)行計(jì)算:
result=pow1(9,11);
這樣自己編寫的一個(gè)冪函數(shù)就完成了。更多精彩內(nèi)容,盡在公號:yonkotech

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表