while语句出现多读现象

用while语句的时候出现多读现象,比如设定读取2项,但只有输出3项时它才运行

原来是这样写的

#include
#include
using namespace std;
int main ()
{
    int a,b,c=0,max=0,min=1000;
    cin>>a>>b;
    while(cif(b>max) max=b;
        if(b>b; 
        c++;
    }
    int d=max-min;
    cout<system("pause");
    return 0;
}

后来改变一小部分,因为想到当while语句括号里内容变为0时,将不执行。
所以把while后面的部分变成减的方式

#include
#include
using namespace std;
int main ()
{
    int a,b,max=0,min=1000;
    cin>>a>>b;
    while(a){
        if(b>max) max=b;
        if(b>b; 
        a=a-1;
    }
    int d=max-min;
    cout<system("pause");
    return 0;
}

img

问一下如何解决这个问题
谢谢

把代码完整的发一下吧

while(cif(b>max) max=b;
if(b>b;
c++;
}
代码不完整啊!!!这while语句半拉的
看你的输入很奇怪,第一行输入2是啥意思?表示后面有两组数据???


#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;

int n,x;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    int maxx= 0, minn = INT_MAX;
    for(int i = 0; i < n; i++) {
        cin >> x;
        maxx = max(maxx, x);
        minn = min(minn, x);
    }
    // 或者你想用while
    // while(n--){
    //     cin >> x;
    //     maxx = max(maxx, x);
    //     minn = min(minn, x);
    // }
    cout<<maxx-minn<<endl;
    return 0;
}

#include<iostream>
#include<cstdio>
using namespace std;
int main ()
{
    int a,b,c=0,max=0,min=1000;
    cin>>a>>b;
    while(c<=a){
        if(b>max) max=b;
        if(b<min) min=b;
        cin>>b; 
        c++;
    }
    int d=max-min;
    cout<<d;
    system("pause");
    return 0;
}

可能上传的时候不小心按了啥
不好意思
虽然这个程序多读,但是提交上去还是通过了,不知道为啥?
这个是题目:
描述
给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

输入
一共2行,第一行为序列的个数n(1 <= n <= 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。
输出
输出一行,表示序列的最大跨度值。
样例输入
6
3 0 8 7 5 9
样例输出
9
来源
改编自 元培-From Whf