天天看点

展开式求和

1.输入一个实数x,计算并输出下式的和,直到最后一项的绝对值小于0.00001,计算并保留4位小数。要求定义和调用函数fact(n)计算n的阶乘,可以调用pow函数求幂。

输入一个实数x和计算阶乘的fact(n)函数

double fact(int n){
  double pro=1;
  int i;
  for(i=1;i<=n;i++){
    pro*=i;
}
    return pro;
}
int main(){
  double x;
  scanf("%lf",&x);
  return 0;
}      

调用fact(n)函数和pow函数求出和

double fact(int n){
  double pro=1;
  int i;
  for(i=1;i<=n;i++){
    pro*=i;
}
    return pro;
}
int main(){
  double x;
  double sum=0;
  double eps=0.00001;
  double t=1;
  scanf("%lf",&x);
  int n=1;
  while(fabs(t)>eps){
    sum+=t;
    t=pow(x,n)/fact(n);
    n++;
    }
    sum+=t;
    printf("%.4lf",sum);
  return 0;
}      

2.输出水仙花数。输入一个正整数n(3<=n<=7),输出所有的n位水仙花数。

输入一个正整数并算出n位数的初始值

int main(){
int n;
scanf("%d",&n);
//求初始值
int in_value=1;
int i=1;
while(i<n){
  in_value=in_value*10;
  i++;
  }
return 0;
}      

再来算n位数的各个数,求出水仙花数

int main(){
int n;
scanf("%d",&n);
//求初始值
int in_value=1;
int i=1;
while(i<n){
  in_value=in_value*10;
  i++;
  }
  int j=1;
  //
  printf("%d\n",in_value);
  for(j=in_value;j<in_value*10;j++){
    int sum=0;
    int t=j;
    do{
      int d=t%10;
        t=t/10;
        int p=d;
        int j=1;
        while(j<n){
            p=p*d;
            j++;
        }
        sum+=p;
    }while(t>0);
    if(sum==j){
      printf("%d\n",j);
    }
  }
return 0;
}