习题4-2 求幂级数展开的部分和 (20分)
已知函数ex可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求ex的近似值,求和一直继续到最后一项的绝对值小于0.00001。
输入格式:
输入在一行中给出一个实数x∈[0,5]。
输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。
输入样例:
1.2
输出样例:
3.3201
#include <stdio.h>
#include <math.h>
int factorial(int n);
int main(){
int i=1;
double sum=1,t,x;
scanf("%lf", &x);
do{
t=pow(x,i)/factorial(i);
sum+=t;
i++;
printf("t = %f, sum = %f\n", t, sum);
}while(t>=1E-5);
printf("%.4f\n", sum);
return 0;
}
int factorial(int n){
if(n<=1)
return 1;
return n*factorial(n-1);
}
习题4-3 求分数序列前N项和 (15分)
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。
输入样例:
20
输出样例:
32.66
#include <stdio.h>
int main(){
int i,n,fenzi=2,fenmu=1,tmp;
double sum=0;
scanf("%d", &n);
for(i=1;i<=n;i++){
sum+=1.0*fenzi/fenmu;
tmp=fenzi;
fenzi=fenzi+fenmu;
fenmu=tmp;
}
printf("%.2f\n", sum);
return 0;
}
习题4-4 特殊a串数列求和 (20分)
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。
输入样例:
2 3
输出样例:
s = 246
#include <stdio.h>
int main(){
int i,a,n,sum=0,t=0;
scanf("%d %d", &a, &n);
for(i=1;i<=n;i++){
t=t*10+a;
sum=sum+t;
printf("t = %d\n", t);
}
printf("S = %d\n", sum);
return 0;
}