视觉C++入门练习 1.19,首次尝试"if"语句
visual C++ primer exercise 1.19, first attempt at the "if" statement
在前面的一个练习中,我编写了一个程序,该程序接受两个输入,并打印出两个数字之间的数字。在练习1.19中,我被要求重写程序,以便它能够处理第一个数字小于第二个数字的问题。我要问两个问题:
-
我觉得我在if语句中耍了一个卑鄙的把戏只需按正确的顺序切换数字即可。那么糟糕吗编码?
-
我所写的是有效的,它"处理"了用户输入小于秒的数字。然而,由于我对编程,并且仅在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++
,所以它只是尽可能快地打印出数字。看起来很酷,但不是我想要的。希望这能帮助到别人!
注:我的和问题要求的有点不同。把一组数字加在一起,但我相信可以使用相同的逻辑。
相关文章:
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- c++:定义if语句中的模板
- C++嵌套的 If 语句中,它无法按预期工作
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 需要有关此 if 语句的帮助
- 转换器练习:跳过 if 语句和 if 语句
- 避免在 C++ 中的 if 语句中递增
- 如果仍然不满足要求,如何使 if 语句重复?
- do while 循环中的 if 语句以 yes 或 no 结尾
- 为什么在此C++代码中触发此 if 语句?
- 如何基于平台在制作文件中制作if语句?
- 在 if 语句中使用 GetKeyState 时,它会跳过条件
- C++ If 语句,从其他语句重复