习题4-2 求幂级数展开的部分和 (20 分)
#include <stdio.h> #include <math.h> int main(){ double x;// 5>=x>=0 int k=1; double sum=1,sum_1=1; int i; double item=11; scanf("%lf",&x); while(fabs(item)>0.00001){ for(i=1;i<=k;i++){ sum_1*=i; } item=pow(x,k)/sum_1; sum=sum+item; k++; sum_1=1.0; } printf("%.4f",sum); return 0; }
sum_1=1.0;
习题4-5 换硬币 (20 分)
#include <stdio.h> int main () { int x, cnt = 0; scanf("%d", &x); //把所有情况算过去,由于按5分、2分、1分硬币的数量从大到小,因此倒序遍历 for ( int k = x / 5; k > 0; k-- ) for ( int i = x / 2; i > 0; i-- ) for ( int j = x; j > 0; j-- ) if ( k * 5 + i * 2 + j == x) { printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", k, i, j, k + j + i); cnt++; } printf("count = %d", cnt); return 0; }
习题4-6 水仙花数 (20 分)
#include <stdio.h> int p(int a,int b); int main(void) { int n,t=0; scanf("%d",&n); int m=p(10,n-1); int v=p(10,n); for(int i=m;i<v;i++){ int k=i; int sum=0; while(k>0){ t=k%10; k=k/10; sum+=p(t,n); } if(sum==i) printf("%d\n",i); } return 0; } int p(int a,int b) { int t=a; for(int i=1;i<b;i++) a=a*t; return a; }
习题4-7 最大公约数和最小公倍数 (15 分)
#include<stdio.h> int main() { int a, b, c, m, n; scanf("%d %d", &m, &n); if(m<n){ c=m; m=n; n=c; } a=m; b=n; while(b!=0){ c=a%b; a=b; b=c; } printf("%d %d", a, m*n/a); return 0; }