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