在C++中按升序列印多个数字

在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; 
+0

我不知道我得到这个,生病把它一行行: 可以说m = 8和n = 2 如果(8> 2){//这将落入声明,因为它是真实的 int temp = n; //在这一个中,我们将整数temp指定为2? n = m; //我们现在将m分配给2? m = temp; //现在温度是2? –

+1

@RostamMahabadi在你的例子中,结果是m = 2和n = 8,所以它将按升序打印。 – hahahakebab

+0

它终于点击了,感谢帮助! @hahahakebab –

这是我被卡住,因为我需要两秒[原文] 报表按升序组织如上图所示

您标记此职位为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相等,程序应该输出什么? (或者这是一个诡计的问题?) –