c语言函数求x的y次方,c语言函数求X的y次方

c语言,计算x的y次方,结果是大整数。

#include stdio.h

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、合江网站维护、网站推广。

#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时结束

}

用C语言编程,求X的Y次方(不用POW,用指针)

#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);

}

用c语言函数求x的y次方

int pow(int x,int y)

{

int sum=1;

for (int i=0;iy;i++)

sum*=x;

return sum;

}

c语言 递归求x的y次方,

#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);

}

c语言中的pow()函数怎么用

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”实例与参数列表相匹配的情况。

其中较容易发生重载的是使用形如:

int X,Y;

int num=pow(X,Y);

这是一个比较常用的函数,但是编译器会提醒有多个“pow”实例与参数列表相匹配。

可以使用强制类型转换解决这个问题:num=pow((float)X,Y)。

参考资料来源:百度百科-POW


当前名称:c语言函数求x的y次方,c语言函数求X的y次方
标题来源:http://pwwzsj.com/article/dsigcih.html