《演算法筆記》2.4小節
有種水文章數的感覺...⊙﹏⊙‖∣ 有些題沒有圖片..不能怪我...Codeup上也沒有...哈哈哈
問題 A: 例題5-1-1 連續自然數求和
題目描述
求1+2+3+...+100,即求
要求用while語句實現
輸入
無
輸出
要求的和,末尾輸出換行。
樣例輸入
無
樣例輸出
5050
#include<iostream> using namespace std; int main() { int a=0,i=1; while(i<=100){ a+=i; i++; } cout<<a<<endl; }
問題 B: 例題5-1-2 連續自然數求和
題目描述
求1+2+3+...+100,即求
要求用do...while語句實現
輸入
無
輸出
計算結果,注意末尾輸出換行。
樣例輸入
無
樣例輸出
5050
#include<iostream>
using namespace std;
int main()
{
int a=0,i=1;
do{
a+=i;
i++;
}while(i<=100);
cout<<a<<endl;
}
問題 C: 例題5-1-3 連續自然數求和
題目描述
求1+2+3+...+100,即求
要求用for語句實現
輸入
無
輸出
計算結果,末尾輸出換行。
樣例輸入
無
樣例輸出
5050
#include<iostream>
using namespace std;
int main()
{
int a=0;
for(int i=1;i<=100;i++)
a+=i;
cout<<a<<endl;
}
問題 D: 例題5-1-4 連續自然數求和
題目描述
輸入一個正整數N,求1+2+...+N,即求
要求在程式中使用break語句。
輸入
要求輸入的資料一定是一個正整數。
輸出
計算的結果,連續N個自然數的和,末尾輸出換行。
樣例輸入
100
樣例輸出
5050
#include<iostream>
using namespace std;
int main()
{
int a=0,n;
cin>>n;
for(int i=1;i<=n;i++)
a+=i;
cout<<a<<endl;
}
問題 E: 例題5-1-5 連續自然數求和
題目描述
程式設計實現求1+2+3+...和的程式,要求得到使使和數大於1000的最小正整數。
輸入
無
輸出
輸出使1+2+3+...+N>1000的最小正整數N,末尾輸出換行。
樣例輸入
無
樣例輸出
45
#include<iostream>
using namespace std;
int main()
{
int a=0,i;
for(i=1;a<=1000;i++)
a+=i;
cout<<i-1<<endl;
}
問題 F: 例題5-6 矩陣輸出
題目描述
輸出以下4*5的矩陣
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
要求使用迴圈實現,注意每行輸出5個數字,每個數字佔3個字元的寬度,右對齊。
輸入
無
輸出
每行輸出5個數字,每個數字佔3個字元的寬度,右對齊。
樣例輸入
無
樣例輸出
1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
for(int i=1;i<=4;i++)
{ for(int j=1;j<=5;j++)
{
cout<<setw(3)<<i*j;
}
cout<<endl;
}
}
問題 G: 例題5-7 求圓周率pi的近似值
題目描述
用如下公式
求圓周率PI的近似值,直到發現某一項的絕對值小於10-6為止(該項不累加)。
要求輸出的結果總寬度佔10位,其中小數部分為8位。
程式中使用浮點型資料時,請定義為雙精度double型別。
如果需要計算絕對值,可以使用C語言數學庫提供的函式fabs,如求x的絕對值,則為fabs(x).
輸入
無
輸出
PI=圓周率的近似值
輸出的結果總寬度佔10位,其中小數部分為8位。
末尾輸出換行。
樣例輸入
無
樣例輸出
PI=3.14159065
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
double p=0,a=1,b=1;
int flag=1;
while(fabs(a)>=1e-6)
{
p=p+a;
b+=2;
flag=-flag;
a=flag/b;
}
cout<<"PI="<<setw(10)<<fixed<<setprecision(8)<<p*4<<endl;
}
問題 H: 例題5-8 Fibonacci數列
題目描述
輸入一個正整數n,求Fibonacci數列的第n個數。Fibonacci數列的特點:第1,2個數為1,1。從第3個數開始,概述是前面兩個數之和。即:
要求輸入的正整數n不超過50.
輸入
一個不超過50的正整數
輸出
Fibonacci數列的第n個數,末尾輸出換行。
樣例輸入
20
樣例輸出
6765
#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main()
{
int n,a=1,b=1,c;
cin>>n;
if(n==1||n==2){
cout<<1;
}
else{
for(int i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
}
cout<<c<<endl;
}
}
問題 I: 習題5-10 分數序列求和
題目描述
有如下分數序列
求出次數列的前20項之和。
請將結果的資料型別定義為double型別。
輸入
無
輸出
小數點後保留6位小數,末尾輸出換行。
樣例輸入
無
樣例輸出
32.660261
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double sum=0,a=1,b=2,c;
for(int i=1;i<=20;i++)
{
sum=sum+b/a;
c=a;
a=b;
b=c+b;
}
cout<<fixed<<setprecision(6)<<sum<<endl;
return 0;
}