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;
}
posted @ 2021-08-13 17:06  HelloHeBin  阅读(475)  评论(0编辑  收藏  举报