3-13
#include <iostream>
#include <iomanip>
using namespace std;
float Fibonacci(int a);
int main()
{
int n;
while(cin>>n)
{
cout<<fixed<<setprecision(6)<<Fibonacci(n)<<endl;
}
return 0;
}
float Fibonacci(int a)
{
double b[a],c[a],d[a];
double sum=0;
b[1]=2;
d[1]=1;
for (int i=1;i<=a;i++)
{
c[i]=b[i]/d[i];
d[i+1]=b[i];
b[i+1]=b[i]+d[i];
sum=sum+c[i];
}
return sum;
}
使用了float精度不够
改成double
#include <iostream>
#include <iomanip>
using namespace std;
double Fibonacci(int a);
int main()
{
int n;
while(cin>>n)
{
cout<<fixed<<setprecision(6)<<Fibonacci(n)<<endl;
}
return 0;
}
double Fibonacci(int a)
{
double b[a],c[a],d[a];
double sum=0;
b[1]=2;
d[1]=1;
for (int i=1;i<=a;++i)
{
c[i]=b[i]/d[i];
d[i+1]=b[i];
b[i+1]=b[i]+d[i];
sum=sum+c[i];
}
return sum;
}
3-15
第一次写模仿了现成的c模板
设置了数组然后数组下标越界
经过学长指导说直接在循环中输出不要使用数组
然后进行了改进
不知道如何实现第一个不输出*
之后使用了一个外部的a来实现
a初始是0之后把j赋值给a就非零了
使得只有第一次不输出星号了
#include <iostream>
using namespace std;
bool sushu(int n);
int main()
{
int T,n;
cin>>T;
for(int i=0;i<T;i++)
{
int a=0;
cin>>n;
for(int j=2;j<=n;j++)
{
while((n%j==0)&&sushu(j))
{
if(a==0) cout<<j;
else cout<<"*"<<j;
a=j;
n=n/j;
}
}
cout<<endl;
}
return 0;
}
bool sushu(int n)
{
bool flag=true;
for (int i=2;i<n-1;i++)
{
if (n/i==0)
flag=false;
}
return flag;
}
AC