#include?stdio.h

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、網絡空間、營銷軟件、網站建設、合江網站維護、網站推廣。
#include?string.h
//?加法,加數與和都用字符串保存
void?add(char?*n1,?char*?n2,?char?*result)
{
int?i,?j,?k,?b=0;
i?=?strlen(n1)?-?1;
j?=?strlen(n2)?-?1;
if(i?=?j)?k?=?i;
else?k?=?j;
result[k+1]?=?0;?//?先假定最高位加法沒有進位,加法結果仍然是k位數字
while(i?=?0??j?=?0)?{?//?從個位(最右側)開始按位相加
result[k]?=?n1[i--]?+?n2[j--]?+?b?-?'0';
if(result[k]??'9')?{?//?有進位
result[k]?-=?10;
b?=?1;
}
else?b?=?0;?//?進位標志?
k--;?
}
if(i??j)?{?//?n1比n2的位數多,將多出的部分加上進位標志賦給和的高位
while(i?=?0)?{
result[k]?=?n1[i--]?+?b;
if(result[k]??'9')?{
result[k]?=?'0';
b?=?1;
}
else?b?=?0;?//?進位標志?
k--;
}
}
else?if(i??j)?{
while(j?=?0)?{
result[k]?=?n2[j--]?+?b;
if(result[k]??'9')?{
result[k]?=?'0';
b?=?1;
}
else?b?=?0;?//?進位標志?
k--;
}
}
if(b?==?1)?{?//?還有進位,所有數向右移一位,給空出來的最左側的最高位置為一
k?=?strlen(result);
result[k+1]?=?0;
for(i?=?k;?i??0;?i?--)
result[i]?=?result[i-1];
result[0]?=?'1';
}
}
//?乘法,乘數是一個個位數,函數利用了加法運算
void?mul1(char?*n1,?char?n2,?char?*result)
{
int?i,?n,?k,?b=0;
k?=?strlen(n1);
result[k+1]?=?0;
for(i=k-1;?i?=?0;?i--)?{
n?=?(n1[i]-'0')*(n2-'0')+b;
if(n??9)?{
b?=?n?/?10;
result[k--]?=?(n%10)?+?'0';
}
else?{
b?=?0;
result[k--]?=?n?+?'0';
}
}
if(b??0)
result[0]?=?b+'0';
else?{
for(i?=?1;?result[i]?!=?0;?i++)
result[i-1]?=?result[i];
result[i-1]?=?0;
}
}
//?乘法,函數利用了乘數為個位數的乘法運算
void?mul(char?*n1,?char?*n2,?char?*result)
{
int?i,?j,?l;
char?t1[161],?t2[161];
strcpy(result,?"0");
l?=?strlen(n2);
for(j?=?l-1;?j?=?0;?j--)?{
mul1(n1,?n2[j],?t1);
for(i?=?0;?i??l-j-1;?i++)
strcat(t1,?"0");
strcpy(t2,?result);
add(t1,?t2,?result);
}
}
//?乘方運算,函數利用了乘法運算
void?powlong(int?x,?int?y,?char?*result)
{
int?i;
char?t1[81],?t2[3];
sprintf(result,?"%d",?x);
for(i?=?1;?i??y;?i++)?{
strcpy(t1,?result);
sprintf(t2,?"%d",?x);
mul(t1,?t2,?result);
}
}
main()
{
char?r[161];
int?x,?y;
do?{
printf("輸入X(1-10之間)和Y(1-20之間):?");
scanf("%d?%d",?x,?y);
if(x??10?||?x??1?||?y??20?||?y??1)
continue;
powlong(x,?y,?r);
printf("%d的%d次方=%s\n",?x,?y,?r);
}?while(x?||?y);?//?x=0?y=0時結束
}
#includestdio.h
int main(){
int x,y,i,fac=1;
int *p;
scanf("%d%d",x,y);
p=x;
for(i=1;i=y;i++)
{
fac*=*p;//計算X的Y次方
if(y==0)
fac=1;
}
printf("%d",fac);
}
int pow(int x,int y)
{
int sum=1;
for (int i=0;iy;i++)
sum*=x;
return sum;
}
#include?stdio.h
int?fun(int?x,?int?y)
{
if?(y?==?1)
return?x;
else
return?x*fun(x,?y?-?1);
}
int?main()
{
int?x,?y;
int?sum;
scanf("%d?%d",?x,?y);
sum?=?fun(x,?y);
printf("%d\n",?sum);
}
pow()函數用來求x的y次冪,x、y及函數值都是double型 ,其原型為:double pow(double x, double y)。
實例代碼如下:
#includestdio.h
#includemath.h
void main()
{
double x = 2, y = 10;
printf("%f\n",pow(x, y));
return 0;
}
擴展資料:
C++提供以下幾種pow函數的重載形式:
double pow(double X,int Y);
float pow(float X,float Y);
float pow(float X,int Y);
long double pow(long double X,long double Y);
long double pow(long double X,int Y);
使用的時候應合理設置參數類型,避免有多個“pow”實例與參數列表相匹配的情況。
其中較容易發(fā)生重載的是使用形如:
int X,Y;
int num=pow(X,Y);
這是一個比較常用的函數,但是編譯器會提醒有多個“pow”實例與參數列表相匹配。
可以使用強制類型轉換解決這個問題:num=pow((float)X,Y)。
參考資料來源:百度百科-POW
當前文章:c語言函數求x的y次方,c語言函數求X的y次方
鏈接分享:http://chinadenli.net/article9/dsigcih.html
成都網站建設公司_創(chuàng)新互聯,為您提供動態(tài)網站、網站制作、微信公眾號、標簽優(yōu)化、移動網站建設、品牌網站制作
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯