【项目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型数据。)