题目描述
输入若干个整数对 M,N,对于每个数对,输出以这两个数为最大值和最小值的公差为 1
的等差数列。
注意,当输入整数对中,任意一个数为 0
或负整数时,立即停止输入,且该组数对无需作任何处理。
输入格式
输入共若干行,每行包含两个整数。
最后一行的两个整数中,至少有一个是非正整数。
输出格式
对于每组需作处理的数对,输出一个结果,每个结果占一行。
结果包含从最小值到最大值的数字序列以及数字序列各数字之和。
具体格式请参照输出样例。
数据范围
M,N≤100
#include <iostream>
#include <cmath>
using namespace std;
//本题做法应分为两层循环,一层是收到输入则激发循环,但while无法对负值输入产生响应
//二层是通过对不同的M,N输入状态进行分析与输出
//存在的特殊情况为,如果M == N,只能输出一个值,并且sum值不能累加M,N
int main(){
int M,N,max,min,i,sum,t;
while(cin >> M >> N && M > 0 && N > 0){
if(M == N){
sum = M;
cout << M <<" ";
}
else {
if(M < N){
max = N;
min = M;
}
else{
max = M;
min = N;
}
cout << min << " ";
//for循环中不知道如何将最小值单独输出,因此将输出放在这
for(i = 1,sum = min;i <= max - min;i++){
cout << min+i << " ";
sum += min+i;
}
}
cout << "Sum=" <<sum << endl;
}
return 0;
}
加一条如果没有输入次数限制,循环条件我认为应该是输入