在C++中按升序列印多个数字
问题描述:
所以我正在研究这个项目,我必须从用户那里收集2个整数(循环),每次我必须按升序打印这两个整数。限制是你的循环中只能有两个cout语句(一个是要求输入,另一个是输出升序)。在C++中按升序列印多个数字
我与唯一的问题是,当我想到升序排列,我不喜欢它(其中有两个计数语句):
if (m<n) {
cout << m << n << endl;
if (m>n){
cout << n << m << endl;
到目前为止,这是我所:
#include <iostream>
using namespace std;
int main(int,char**) {
int n, m, z;
for (n=0;n<3;n++){
cout << "Give me two numbers: ";
cin >> m;
cin >> z;
//if (m>z);
//cout << m << z << "sorted is: " << m << z << endl;
// This is where I'm getting stuck because I need two count statements to organize in ascending order as shown above
}
}
答
那么你有没有考虑过改变哪个变量保存较低的数字?例如
if(m > n){
int temp = n;
n = m;
m = temp;
}
然后,你可以只使用一个打印
cout << m << " " << n << endl;
答
这是我被卡住,因为我需要两秒[原文] 报表按升序组织如上图所示
您标记此职位为C++:
其他选项考虑:
使用算法LIB:
#include <algorithm>
std::cout << std::min(m,n) << " " << std::max(m,n) << std::endl;
或在您的COUT使用条件/三元运算符:
std::cout << ((m<n) ? m : n) << " " << ((n<m) ? m : n) << std::endl;
引用有时乐趣......但也许这个挑战太大不重要的。
// guess m < n
int& first = m;
int& second = n;
if(!(m<n)) { first = n; second = m; }
std::cout << first << " " << second << std::endl;
指针可以做同样的:
// guess m < n
int& first = &m;
int& second = &n;
if(!(m<n)) { first = &n; second = &m; }
std::cout << *first << " " << *second << std::endl;
,或者您可以使用
lambda表达式,或者
C++函数,或
C++类方法
但我认为其中的每一个都可以直接与第一种方法相提并论。
+0
也许这是一个适用于研究项目的应用程序:“当请求2个数字时,受试者以非递减顺序输入它们的时间百分比是多少?”哦,这让我想起:如果m和n相等,程序应该输出什么? (或者这是一个诡计的问题?) –
我不知道我得到这个,生病把它一行行: 可以说m = 8和n = 2 如果(8> 2){//这将落入声明,因为它是真实的 int temp = n; //在这一个中,我们将整数temp指定为2? n = m; //我们现在将m分配给2? m = temp; //现在温度是2? –
@RostamMahabadi在你的例子中,结果是m = 2和n = 8,所以它将按升序打印。 – hahahakebab
它终于点击了,感谢帮助! @hahahakebab –