C++ 计数范围内的数字算法(C+;+;)
我想打印两个数字范围内的数字量(包括这两个数字) 我创建了以下简单代码:C++ 计数范围内的数字算法(C+;+;),c++,algorithm,count,range,C++,Algorithm,Count,Range,我想打印两个数字范围内的数字量(包括这两个数字) 我创建了以下简单代码: #include <iostream> int main(int argc, char *argv[]) { int one = -5; int two = 5; unsigned int count = 0; int min = std::min(one, two); int max = std::max(one, two); while (min <= max) {
#include <iostream>
int main(int argc, char *argv[]) {
int one = -5;
int two = 5;
unsigned int count = 0;
int min = std::min(one, two);
int max = std::max(one, two);
while (min <= max) {
count++;
min++;
}
std::cout << count << std::endl;
return 0;
}
#包括
int main(int argc,char*argv[]){
int one=-5;
int 2=5;
无符号整数计数=0;
int min=std::min(一,二);
int max=std::max(一,二);
而(min该范围内的数字数量仅为其差值+1:
count = max - min + 1;
或者,在不计算最大值和最小值的情况下,使用差值的绝对值
count = std::abs(one - two) + 1;
也许我错过了什么,但是
#include <iostream>
int main(int argc, char *argv[]) {
int one = -5;
int two = 5;
unsigned int count = std::abs(one-two)+1;
std::cout << count << std::endl;
return 0;
}
#包括
int main(int argc,char*argv[]){
int one=-5;
int 2=5;
无符号整数计数=std::abs(一二)+1;
STD::CUT< P>需要使用一个包含这样的数字范围的整数类型。目前C++中最基本的符号整数类型是“代码>长long int /代码>。
std::numeric\u limits::min()
和std::numeric\u limits::max()
结构std::数字\u限制
在标题
比如说
#include <iostream>
#include <limits>
int main()
{
std::cout << std::numeric_limits<long long int>::min() << " - "
<< std::numeric_limits<long long int>::max() << std::endl;
}
#包括
#包括
int main()
{
std::coutcount=2-1
有什么问题吗?(你的“算法”的运行时复杂性已经达到极限)10不正确:-5,-4,-3,-2,-1,0,1,2,3,4,5~11个数字。实际公式应该是max-min+1
,因为你想包括max/min。@Zeta你是对的,我更正了我的代码。^std::abs(2-1)?
你如何断言long long int
足够长?你在这里的思路是正确的,但是…你说了所有这些,但解释得很少。我想说的是,准确地说,当数字被输入时,它远不止“最好使用表达式[…]而不是使用循环”-循环将是一次彻底的DOS攻击vector@sehe我演示了如何获得long-long-int的可接受数字范围。因此,它是否足够长,您可以自己决定。足够长或不够长,请注意不要让GCC的数字范围太长。