【项目1-k次方之和】
设计程序,计算:
请在下面的程序结构基础上完成设计。
#include<stdio.h>
int power(int m,int n); //求m的n次方(m^n)
int sum_of_power(int k,int n); //从1^k到n^k的累加和
int main( )
{
int k, n;
scanf("%d %d", &k, &n);
printf("f(%d, %d)=%d\n", k, n, sum_of_power(k,n)); //m^k的累加和
return 0;
}
int power(int m,int n) //求m的n次方(m^n)
{
...
}
int sum_of_power(int k,int m) //从1^k到n^k的累加和
{
//在这个函数中调用 power函数求幂
}
[参考解答]
#include<stdio.h>
int power(int m,int n); //求m的n次方(m^n)
int sum_of_power(int k,int n); //从1^k到n^k的累加和
int main( )
{
int k, n;
scanf("%d %d", &k, &n);
printf("f(%d, %d)=%d\n", k, n, sum_of_power(k,n)); //m^k的累加和
return 0;
}
int power(int m,int n) //求m的n次方(m^n)
{
int i,product=m;
for(i=1; i<n; i++)
product=product*m;
return product;
}
int sum_of_power(int k,int m) //从1^k到n^k的累加和
{
int i,sum=0;
for(i=1; i<=m; i++)
sum+=power(i,k);
return sum;
}
说明:在标准库math.h中,提供了一个求幂的pow。但是pow函数的原型是 double pow(double x, double y)。从本题目的要求上看,是要用int型的数据进行计算,直接调用标准函数不妥。可能会引入误差,至少,效率上也不能保证(double数据运算的“开销”要高于int型数据。)