天天看點

展開式求和

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;
}