视觉C++入门练习 1.19,首次尝试"if"语句

visual C++ primer exercise 1.19, first attempt at the "if" statement

本文关键字:if 语句 C++ 练习 视觉      更新时间:2023-10-16

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

  1. 我觉得我在if语句中耍了一个卑鄙的把戏只需按正确的顺序切换数字即可。那么糟糕吗编码?

  2. 我所写的是有效的,它"处理"了用户输入小于秒的数字。然而,由于我对编程,并且仅在C++入门的第一章中介绍。我失踪了吗这里有一些重要的东西会让我写代码"更好"(例如:如果我理解X的概念,那么我会写"如果"语句更好/不同)

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;
}

为了回答您的第二个问题(以及间接回答您的第一个问题),我建议您使用C++标准库中的swap函数。你可以在这里查看。一般来说,使用STL代码比自己编写函数要好(原因很明显)。

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

#include <algorithm>

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

std::swap(v1, v2);

您只能使用一个额外的变量,从而大大简化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
}

我为此所做的是使用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++,所以它只是尽可能快地打印出数字。看起来很酷,但不是我想要的。希望这能帮助到别人!

注:我的和问题要求的有点不同。把一组数字加在一起,但我相信可以使用相同的逻辑。