求x的y次方c語言
『壹』 用c語言函數求x的y次方
#include<stdio.h>
int main(void)
{
double power(double x, double y);
double x, y;
printf("請輸入底數後按回車\n");
scanf("%lf", &x);
printf("請輸入指數後按回車\n");
scanf("%lf", &y);
printf("%lf的%lf次方是%lf", x, y, power(x, y));
return 0;
}
double power(double x, double y)
{
double a, b ,c=x;
for( a = 1; a < y; a++)
{
b = x;
c = c*b;
}
return c;
}
『貳』 求X的Y次方冪C語言代碼
(1)for語句後邊是不加分號的。
(2)在for循環中,結束條件如果是i<=y,前邊s的初值應該是1。
#include<stdio.h>
void main()
{
int x,y,i,s;
scanf("%d,%d",&x,&y);
s=1; // s
for(i=1;i<=y;i++) //無分號
s=s*x;
printf("%d",s);
}
運行結果:
4,5
1024Press any key to continue
『叄』 c語言 遞歸求x的y次方,
#include<stdio.h>
intfun(intx,inty)
{
if(y==1)
returnx;
else
returnx*fun(x,y-1);
}
intmain()
{
intx,y;
intsum;
scanf("%d%d",&x,&y);
sum=fun(x,y);
printf("%d ",sum);
}
『肆』 C語言中求X的Y 次方 哪裡錯了
這樣做是不對的。
C不支持程序反復的運行,即不能編譯一次而運行多次。
如果你的代碼是這樣而要輸入算多組數據,需要你運行多次。
想要一次運行完,則需定義兩個數組a[i],b[j]。i,j的值必須給出,或者你不給出但要定義的時候給出兩個數組的全部元素列出來。
說明你輸入的數據較大。修改數據類型為:long
代碼如下:
#include<stdio.h>
#include<math.h>
void main()
{
long x,y;
long s;
scanf("%f%f",&x,&y);
s=pow(x,y);
printf("%.3f\n",s);
}
『伍』 C語言 利用遞推法計算X的y次方
double p(double x, int y){
if(y==0)
return 1.0;
return x*p(x, y-1);
}
int main(){
printf("%d", p(2.5,3));
return 0;
}
『陸』 用C語言編寫一個計算用來求 x 的 y 次冪的函數:int Pow(int x,int y)。
看的出來你用的是32位的軟體(1410065408約為2的30(1073741824)次方到31次方(2 147 483 648)),那int的最大長度就是32位,即-2 147 483 648~2 147 483 647間,超出這個長度就會顯示不全導致錯誤,故可以將子函數的返回值設為double即64位,這樣就可以存更多的數據了。
『柒』 C語言中怎麼表示x的y次方急急
首先要#include<math.h>
然後pow(x,y)就可以了
『捌』 以下函數用以求x的y次方,請補充填空。c語言。
double fun (double x,int y)
{
int i;
double z;
for(i=1,z=1;i<=y;i++)
{z=z*x;}
return z;
}
『玖』 C語言編程填空題,求x的y次方
#include<stdio.h>
int fun( int x,int y)
{int i;
int z=1;
for(i=1;i<=y;i++) z=z*x;
return z;
}
int main()
{printf("%d ",fun(3,2));
return 0;
}
『拾』 c語言,計算x的y次方,結果是大整數。
#include<stdio.h>
#include<string.h>
//加法,加數與和都用字元串保存
voidadd(char*n1,char*n2,char*result)
{
inti,j,k,b=0;
i=strlen(n1)-1;
j=strlen(n2)-1;
if(i>=j)k=i;
elsek=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;
}
elseb=0;//進位標志
k--;
}
if(i>j){//n1比n2的位數多,將多出的部分加上進位標志賦給和的高位
while(i>=0){
result[k]=n1[i--]+b;
if(result[k]>'9'){
result[k]='0';
b=1;
}
elseb=0;//進位標志
k--;
}
}
elseif(i<j){
while(j>=0){
result[k]=n2[j--]+b;
if(result[k]>'9'){
result[k]='0';
b=1;
}
elseb=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';
}
}
//乘法,乘數是一個個位數,函數利用了加法運算
voidmul1(char*n1,charn2,char*result)
{
inti,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;
}
}
//乘法,函數利用了乘數為個位數的乘法運算
voidmul(char*n1,char*n2,char*result)
{
inti,j,l;
chart1[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);
}
}
//乘方運算,函數利用了乘法運算
voidpowlong(intx,inty,char*result)
{
inti;
chart1[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()
{
charr[161];
intx,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 ",x,y,r);
}while(x||y);//x=0y=0時結束
}