1.8 for循環
1.8 for循環
for知識
for( 預定義條件; 判斷條件; 條件增量 ){
循環體
}
//解釋:如果滿足判斷條件就一直循環,直到不滿足判斷條件就退出
for( 1; 2; 4){ 3 }//執行順序
偽代碼:將思路表現出來,也就是邏輯通順,但是不能直接運行
//預定義條件, 判斷條件,條件增量都可以不寫,如下
for( ; ; ){
// 循環體
}
但是這樣就是一個死循環(一直循環,沒有結束)
所以我們需要另外使用一個退出:break
break 是指退出當前循環,比如
for(int i=1; i<=10; i++){
if(i==5) break;
cout<<i<<" ";
}
當 i==5 的時候,就break(退出),這樣輸出的結果就是:1 2 3 4
后面的就不會輸出了。
continue 退出本次循環,繼續下次循環
for(int i=1; i<=10; i++){
if(i==5) continue;
cout<<i<<" ";
}
當 i==5 的時候,就 continue(退出本次循環,繼續下次循環),這樣輸出的結果就是:1 2 3 4 6 7 8 9 10
會發現只有 5 沒有輸出,其余元素都輸出了。
這就是 break 和 continue 的作用和不同。
案例練習:輸入 n,輸出 1~n。
【題目描述】輸入 n,輸出 1~n。
輸入樣例:10
輸出樣例:1 2 3 4 5 6 7 8 9 10
#include<iostream>
using namespace std;
int main(){
int n; cin>>n;
// 循環 1 ~ n, 次數:n
for(int i=1; i<=n; i++){
cout<<i<<" ";
}
return 0;
}
案例練習:輸入 n,輸出 1~n 的所有偶數。
【題目描述】輸入 n,輸出 1~n 的所有偶數。
#include<iostream>
using namespace std;
int main(){
int n; cin>>n;
for(int i=1; i<=n; i++){
if(i%2==0) cout<<i<<" ";
}
return 0;
}
// 方法2
int main(){
int n; cin>>n;
for(int i=2; i<=n; i+=2){
cout<<i<<" ";
}
return 0;
}
案例練習:輸入 n,輸出 1~n 的所有奇數之和與偶數之和
【題目描述】輸入 n,輸出 1~n 的所有奇數之和與偶數之和
#include<iostream>
using namespace std;
int main(){
// 初始化為0,否則會隨機化一個值
int sum1=0,sum2=0;// 奇數和,偶數和
int n; cin>>n;
for(int i=1; i<=n; i++){
if(i%2==0) sum1 += i;
else sum2 += i;
}
cout<<sum1<<" "<<sum2<<endl;
return 0;
}
案例練習:輸入 n 個人的身高值,求出其中的最大值。
【題目描述】輸入 n 個人的身高值,求出其中的最大值。
#include<iostream>
using namespace std;
int main(){
int n,x,mx=-1; cin>>n;
for(int i=1; i<=n; i++){
cin>>x;
if(mx < x) mx = x; // 最大值被更新
}
cout<<mx<<endl;
return 0;
}
B2057 最高的分數
題目描述
孫老師講授的《計算概論》這門課期中考試剛剛結束,他想知道考試中取得的最高分數。因為人數比較多,他覺得這件事情交給計算機來做比較方便。你能幫孫老師解決這個問題嗎?
輸入格式: 輸入兩行,第一行為整數 \(n\)(\(1 \le n<100\)),表示參加這次考試的人數。第二行是這 \(n\) 個學生的成績,相鄰兩個數之間用單個空格隔開。所有成績均為 \(0\) 到 \(100\) 之間的整數。
輸出格式: 輸出一個整數,即最高的成績。
樣例輸入 #1
5
85 78 90 99 60
樣例輸出 #1
99
#include <iostream>
using namespace std;
int main() {
int n, x, mx = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
if (mx < x) mx = x;
}
cout << mx;
return 0;
}
P5724 【深基4.習5】求極差 / 最大跨度值
題目描述
給出 \(n\) 和 \(n\) 個整數 \(a_i\),求這 \(n\) 個整數中的極差是什么。極差的意思是一組數中的最大值減去最小值的差。
輸入格式:
第一行輸入一個正整數 \(n\),表示整數個數。
第二行輸入 \(n\) 個整數 \(a_1,a_2 \dots a_n\),以空格隔開。
輸出格式:
輸出一個整數,表示這 \(n\) 個整數的極差。
樣例輸入 #1
6
1 1 4 5 1 4
樣例輸出 #1
4
提示: 數據保證,\(1 \leq n\leq 100\),\(0\le a_i \le 1000\)。
#include <iostream>
using namespace std;
int main() {
int n, x, mx = 0, mn = 1000;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
if (mx < x) mx = x;
if (mn > x) mn = x;
}
cout << mx - mn;
return 0;
}
P5726 【深基4.習9】打分
題目描述
現在有 \(n(n \le 1000)\) 位評委給選手打分,分值從 \(0\) 到 \(10\)。需要去掉一個最高分,去掉一個最低分(如果有多個最高或者最低分,也只需要去掉一個),剩下的評分的平均數就是這位選手的得分。現在輸入評委人數和他們的打分,請輸出選手的最后得分,精確到 \(2\) 位小數。
輸入格式
第一行輸入一個正整數 \(n\),表示有 \(n\) 個評委。
第二行輸入 \(n\) 個正整數,第 \(i\) 個正整數表示第 \(i\) 個評委打出的分值。
輸出格式
輸出一行一個兩位小數,表示選手的最后得分。
樣例輸入 #1
5
9 5 6 8 9
樣例輸出 #1
7.67
提示: 數據保證,\(3 \leq n \leq 1000\),每個評委打出的分值為為 \(0\) 到 \(10\)(含 \(0\) 與 \(10\))之間的整數。
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
int n, x, s = 0, mx = 0, mn = 10;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> x;
s += x; // 總分
if (mx < x) mx = x;
if (mn > x) mn = x;
}
cout << fixed << setprecision(2);
cout << 1.0 * (s - mx - mn) / (n - 2);
return 0;
}

浙公網安備 33010602011771號