做这个题花了2个小时
主要是以下几点忽视了:
1. 结果是小数 , 所以数组和全部情况的累加器改用double
2. 每次开始循环时累加器没有初始化
3. include<iomanip>就够
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
double a[21];
a[1]=0;
a[2]=1;
for(int i=3;i<21;i++){
a[i]=(a[i-1]+a[i-2])*(i-1);
}
int n,yu;double j;
cin>>n;
while(n--){
cin>>yu;
j=1;
for(int i=1;i<=yu;i++){
j*=i;
}
double c=a[yu];
double b=j;
double r=c/b;
r*=100;
cout<<fixed<<setprecision(2)<<r<<"%"<<endl;
}return 0;
}