***************************************************************************
程序为计算 x^n, 示例中,x不大于 10000
Copyright (C) 2007 jixingzhong. The Institue of Computer System
****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
...{
long i, j, c, len, temp = 0;
long x=1, n=1;
printf("input x [from 1 to 10000] please! x = ");
while(scanf("%ld", &x) && x != 0) // x=0 时退出循环
...{
long *a = new long[4 * n]; //动态分配空间, 为粗略估计值
a[0] = 1, len = 1;
printf("n = ");
scanf("%ld", &n);
for(i = 1; i <= n; i++)
...{
c = 0;
for(j = 0; j < len; j++)
...{
temp = a[j] * x + c;
c = temp / 100000; // 10万 进制 , 控制进位
a[j] = temp % 100000;
}
while(c > 0) //处理进位
...{
len = len + 1;
a[len - 1] = c;
c /= 100000;
a[len - 1] %= 100000;
}
}
printf("x^n = %ld", a[len - 1]);
for(i = len - 2; i >= 0; i--) //输出结果, 从高位开始输出
printf("%05ld", a[i]);
printf(" %ld", len);
printf(" if you want to quit ,please input x=0! x = ");
delete a; //释放数组空间
}
system("pause");
return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jixingzhong/archive/2007/10/29/1852931.aspx