用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;
}
问一下如何解决这个问题
谢谢
把代码完整的发一下吧
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