C ++初级练习1.19,首次尝试" if"声明

时间:2013-12-17 03:22:52

标签: c++ visual-c++

在之前的练习中,我编写了一个程序,它接受了两个输入并打印出两个数字之间的数字。在练习1.19中,我被要求重写程序,以便它可以处理小于第二个数字的第一个数字的问题。我问了两个问题:

  1. 我觉得好像我用if语句玩了一个肮脏的把戏 只需按正确的顺序切换数字。那不好吗 编码

  2. 我写的作品,它“处理”用户输入的问题 小于第二个的数字。但是因为我很新 编程,仅在C ++入门的第1章中。我错过了 这里重要的东西会让我编写代码 “更好”(EX:如果我理解X概念那么我会写“if” 声明更好/不同)

  3. int main()
    {
        int v1 = 0, v2 = 0, e1 = 0, e2 = 0, sum = 0;
    
        std::cout << "Input first integer: ";
        std::cin >> v1; std::cout << std::endl;
        e1 = v1;
    
        std::cout << "Input secound integer: ";
        std::cin >> v2; std::cout << std:: endl;
    
        if (v1 > v2)
        {
            e1 = v1;
            e2 = v2;
            v1 = e2;
            v2 = e1;
            e1 = v1;    
        }
        while (v1 <= v2)
        {
            sum += v1;
            ++v1;
        }
        std::cout << "The inclusive sum of " << e1 << " and " << v2 << " is "
            << sum;
    
        return 0;
    }
    

3 个答案:

答案 0 :(得分:0)

要回答您的第二个问题(间接是第一个问题),我建议您使用C ++标准库中的swap函数。你可以查看here。通常,使用STL代码比自己编写函数更好(出于显而易见的原因)。

因此,要在代码中实现它,首先需要:

#include <algorithm>

然后在第一个if语句的正文中,只说:

std::swap(v1, v2);

答案 1 :(得分:0)

您只能使用一个额外的变量,并大大简化您的if

int v1 = 0, v2 = 0, sum = 0;

std::cout << "Input first integer: ";
std::cin >> v1; std::cout << std::endl;

std::cout << "Input secound integer: ";
std::cin >> v2; std::cout << std:: endl;

if (v1 > v2)
{
   int tmp = v1;    // Store v1 in a temp variable
   v1 = v2;         // Move v2's value into v1
   v2 = tmp;        // Move temp variable into v2
}

答案 2 :(得分:0)

我为此所做的是if else

int main() 
{
    int val1 = 0, val2 = 0, sum = 0;
    std::cout << "Enter in 2 numbers " << std::endl;

    std::cin >> val1;
    std::cin >> val2;

    // if the first value is smaller than the second then do below

    if(val1<val2)
    {

        sum = val1; // setting sum equal to the first value entered


        while(val1<=val2) // run while val1 is less than or equal to val2
        {
            std::cout << sum << std::endl; // printing sum
            sum++; // adding +1 to sum
            val1++; // adding +1 to val1 otherwise it will print sum to infinity
        }
    }
    else // If the second value is smaller than the first entered do below
    {

        sum = val2; // setting sum equal to the second value entered

        while(val2<=val1)
        {
           std::cout << sum << std::endl;
            sum++;  // adding +1 to sum
            val2++; // adding +1 to val2 otherwise it will print sum to infinity
        }
    }

    std::cout << "woot!" << std::endl;
    return 0;

}

摆脱了交换。花了一点时间才得到它。我认为我不需要添加val1++val2++,所以它只是尽快打印出数字。很酷看,但不是我想要的。希望这有助于某人!

注意:我的问题与问题有点不同。添加一组数字,但我相信可以使用相同的逻辑。