当前位置:首页 » 编程语言 » 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;
}