仅使用两个变量和一个循环添加十个数字

时间:2016-03-10 20:10:56

标签: c++

所以,我使用了以下代码,但我的朋友说这段代码不正确,因为我在for循环中使用了第三个变量。请帮助。

int x = 0;
int y = 0;
for ( int i = 0; i < 10; i++) 
{
  cin >> y;
  x = x + y;
}
cout << x;

5 个答案:

答案 0 :(得分:2)

我发现这段代码没有错。更多描述性变量可能更有帮助(例如y - &gt; userInputx - &gt; sum)。

答案 1 :(得分:1)

理由:

使用64位值作为累加器,因为用户不太可能输入大的数字。

使用累加器的前8位(可能是4位)作为计数器。

#include <iostream>

int main()
{
    using namespace std;

    int64_t accum = int64_t { 10 } << 56;
    while (accum & (int64_t{0xff} << 56))
    {
        int next;
        cin >> next;
        accum += next;
        accum -= int64_t { 1 } << 56;
    }

    cout << accum << endl;


    return 0;
}

答案 2 :(得分:1)

如果您可以限制总和的范围,您可以执行类似

的操作
const unsigned LIMIT = 1000000;

unsigned x;
for ( x = LIMIT * 10; x >= LIMIT; x -= LIMIT) 
{
  unsigned y;
  cin >> y;
  x += y;
}
cout << x;

这将是基于将两个值压缩到一个变量中的其他比特小动作的算术等价,如@Richard Hodges的答案。

但这需要限制总和的范围。

答案 3 :(得分:0)

如果我理解正确,您想使用此Array.prototype.slice.call(document.querySelectorAll("img")).forEach(function(img) { var imgsrc = img.src; // imgsrc now holds the image url, in your case "photo.jpg" }); 。这是一个循环方法中的双变量,它具有与x += y;相同的功能,他们认为循环中有三个变量。

答案 4 :(得分:0)

我看不到限制变量类型的规则,所以你可以使用一个数组并在一个变量中执行:

int arr[3] = {0};
for (; arr[0] < 10; ++arr) {
  cin >> arr[1];
  arr[2] += arr[1];
}
cout << arr[2];

但是,您也可以使用两个变量的递归函数(如果您将函数参数视为变量);这甚至不需要循环(虽然我不确定and a loop部分是否意味着你使用循环,在这种情况下你当然可以偷偷摸摸do { ... } while(0);某处。; - )

int sum(int x) {
    if (x == 0) {
        return 0;
    }

    int v;
    cin >> v;
    return v + sum(x - 1);
}

cout << sum(10);