當前位置:首頁 » 編程語言 » c語言xy次方填空
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言xy次方填空

發布時間: 2022-05-30 15:48:29

⑴ 求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次方

可以直接調用數學函數

pow(x,y);

如果y是整數的話, 可以自己寫

doublemy_pow(doublex,inty)
{
intsign=0;
doubler=1;
if(y==0)return1;
if(y<0)
{
y=-y;
sign=1;
}
while(x--)r*=x;
if(sign)r=1/r;
returnr;
}

⑶ 以下函數用以求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的x次方 用2種以上方法

方法1:
遞歸、循環、樓上的說的很詳細了
方法2:
高精度+二分
下附法2的程序,大概在x=5000時可以1s跑出(我的7年老電腦上。。。)
你的機子肯定能跑更大的。。。
結果的位數如果不夠在maxn那裡改,不過誰也算不出1000w位吧,應該夠了。。。
在文件"hello.in"中輸入,輸出在"hello.out"
#include<stdio.h>
#define
maxn
10000000
#define
max(a,b)
a>b?a:b
int
x,a[maxn],b[maxn],o;
int
ans[maxn],p;
int
s3[maxn];
void
Mult(int
s1[],int
*l1,int
s2[],int
l2)
{
int
i,j;
for(i=1;
i<=*l1+l2+2;
i++)
s3[i]=0;
for(i=1;
i<=*l1;
i++)
for(j=1;
j<=l2;
j++)
s3[i+j-1]+=s1[i]*s2[j];
j=*l1+l2-1;
for(i=1;
i<=j;
i++)
if(s3[i]>9)s3[i+1]+=s3[i]/10,s3[i]%=10,j=max(j,i+1);
for(i=1;
i<=j;
i++)
s1[i]=s3[i];
*l1=j;
}
void
Init(void)
{
int
i,j=0,k;
i=x;
p=1;
ans[1]=1;
for(;i;i=i>>1)
a[++j]=i&1;
while(x)
b[++o]=x%10,x/=10;
for(i=j;
i;
i--)
{
Mult(ans,&p,ans,p);
if(a[i])
Mult(ans,&p,b,o);
}
for(i=p;
i>=1;
i--)
printf("%ld",ans[i]);
printf("\n");
}
int
main(void)
{
freopen("hello.in","r",stdin);
freopen("hello.out","w",stdout);
scanf("%ld",&x);
Init();
return
0;
}

⑸ 請問各位大佬不用循環c語言x的y次方怎麼表示求完整程序

pow(x,y)

⑹ 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時結束
}

⑺ 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次方

1、新建一個c語言的工程文件,引入頭文件,這里先定義一個poewer函數處理x的y次方的計算,定義兩個參數n和k,分別表示輸入的數和要求的次方數:

⑼ C語言求X的Y次方

把橫線刪除,填寫一個x就可以了。在主函數的return 0;前寫一句printf("%f\n",fun(2.5,2));,運行就可以驗證2.5^2=6.25。

⑽ C語言,假設x,y是整數,編寫程序求X的y次方的最後三位數,要求x、y從鍵盤輸入。

數字太大會溢出,結果肯定會錯了。

這道題是演算法題,不能蠻算的,它有規律:

乘積的最後三位值只與乘數和被乘數的後三位有關,與乘數和被乘數的高位無關。

從這入手寫就沒問題了。

#include<stdio.h>				//n次方的後三位數

intmain()
{
intx,y,i,last;
last=1; //記得初始化

scanf("%d%d",&x,&y);
for(i=1;i<=y;i++)
{
last=last*x%1000;
}
if(last==0)
printf("%d%d%d ",last,last,last); //以三個零結尾
else
printf("%d ",last);

return0;
}