C++ C++;如何在给定范围内的数组中添加数字?

C++ C++;如何在给定范围内的数组中添加数字?,c++,arrays,C++,Arrays,我正在做一个课堂作业,在整理作业时有点困难。我刚刚开始学习数组,不知道如何在数组中获得用户输入 下面是赋值提示:创建一个程序,输入最多100个整数(空格分隔!)并输出它们的和。例如: 12345678910 五十五 这就是我到目前为止所做的(编辑,因为我忘记更改注释): #包括 使用名称空间std; intaddnum(intn); int main(){ int n; //提示用户输入数字 cout>n; cout由于这是一个学习练习,我不会纠正您的代码,但会解释您到目前为止遗漏了什么: 赋

我正在做一个课堂作业,在整理作业时有点困难。我刚刚开始学习数组,不知道如何在数组中获得用户输入

下面是赋值提示:创建一个程序,输入最多100个整数(空格分隔!)并输出它们的和。例如:

12345678910 五十五

这就是我到目前为止所做的(编辑,因为我忘记更改注释):

#包括
使用名称空间std;
intaddnum(intn);
int main(){
int n;
//提示用户输入数字
cout>n;

cout由于这是一个学习练习,我不会纠正您的代码,但会解释您到目前为止遗漏了什么:

  • 赋值要求读取整数,直到没有更多的输入;您的代码提示用户预先计数,这应该被删除
  • 您不需要数组来存储单个数字,因为分配只要求总数。这可以动态计算:读取一个数字,将其添加到
    sum
    ,然后忘记该数字
  • 您可以使用下面使用
    >
    运算符的简单循环读取数字,直到输入结束
以下示例将输入限制为100个数字,或在输入流结束时停止:

int limit = 0;
int nextNumber;
while ((limit++ != 100) && (cin >> nextNumber)) {
    ... // Process the next number
}

如果您正在从控制台输入程序(而不是向其输入带有数字的文件),并且需要结束输入序列,请在Windows上按Ctrl+z或在UNIX上按Ctrl+d。

由于这是一个学习练习,我不会更正您的代码,但请解释您迄今为止错过的内容:

  • 赋值要求读取整数,直到没有更多的输入;您的代码提示用户预先计数,这应该被删除
  • 您不需要数组来存储单个数字,因为分配只要求总数。这可以动态计算:读取一个数字,将其添加到
    sum
    ,然后忘记该数字
  • 您可以使用下面使用
    >
    运算符的简单循环读取数字,直到输入结束
以下示例将输入限制为100个数字,或在输入流结束时停止:

int limit = 0;
int nextNumber;
while ((limit++ != 100) && (cin >> nextNumber)) {
    ... // Process the next number
}

如果您要从控制台输入程序(而不是向其输入带有数字的文件),并且需要结束输入序列,请在Windows上按Ctrl+z或在UNIX上按Ctrl+d。

为了提供多种答案,
std::acculate
非常酷

还是你的情况

int sum = std::accumulate(arr, arr + 99, 0);
另一种功能方法是使用C++17中引入的
std::reduce


为了提供各种各样的答案,
std::acculate
非常酷

还是你的情况

int sum = std::accumulate(arr, arr + 99, 0);
另一种功能方法是使用C++17中引入的
std::reduce


在与教授讨论后,我们获得了一个工作代码!以下是工作代码:

#include <iostream>
using namespace std;

int main() {
    // variable declarations
    int sum = 0, count = 0;
    int c;

    // array declaration
    int arr[100] = { 0 };

    // prompt user to input numbers & add
    cout << "Please enter in values to add together: ";
    for (int i = 0; i < 100; i++) {
        cin >> arr[i];
        c = cin.peek();
        sum = sum + arr[i];

        // if user presses enter, skip to outputting sum without waiting for 100 values
        if (c == '\n'){
            break;
        }
    }

    // output the sum of input
    cout << sum;

    // pause and exit
    getchar();
    getchar();
    return 0;
}
#包括
使用名称空间std;
int main(){
//变量声明
整数和=0,计数=0;
INTC;
//数组声明
int-arr[100]={0};
//提示用户输入数字并添加
cout>arr[i];
c=cin.peek();
总和=总和+arr[i];
//如果用户按enter键,则跳到输出总和而不等待100个值
如果(c=='\n'){
打破
}
}
//输出输入的总和

cout在与教授讨论后,获得了一个工作代码!以下是工作代码:

#include <iostream>
using namespace std;

int main() {
    // variable declarations
    int sum = 0, count = 0;
    int c;

    // array declaration
    int arr[100] = { 0 };

    // prompt user to input numbers & add
    cout << "Please enter in values to add together: ";
    for (int i = 0; i < 100; i++) {
        cin >> arr[i];
        c = cin.peek();
        sum = sum + arr[i];

        // if user presses enter, skip to outputting sum without waiting for 100 values
        if (c == '\n'){
            break;
        }
    }

    // output the sum of input
    cout << sum;

    // pause and exit
    getchar();
    getchar();
    return 0;
}
#包括
使用名称空间std;
int main(){
//变量声明
整数和=0,计数=0;
INTC;
//数组声明
int-arr[100]={0};
//提示用户输入数字并添加
cout>arr[i];
c=cin.peek();
总和=总和+arr[i];
//如果用户按enter键,则跳到输出总和而不等待100个值
如果(c=='\n'){
打破
}
}
//输出输入的总和

cout如果数组最多需要存储100个元素,为什么要将大小设置为99(
int-arr[99]={};
)?
//声明一个新数组
会显示您的注释,但您根本没有在那里声明任何数组。另外,用户应该在哪里向数组中输入任何内容?我想既然数组从0开始,那么到99将是100个元素?声明数组时括号中的数字是大小,而不是最后的有效值d index.听起来您可以使用
arr[]
是在
addNum()
中创建的,这意味着函数返回时将删除该索引,所有以前的值都将丢失。请将其声明在funct之外。如果数组需要存储多达100个元素,为什么要将大小设置为99(
int arr[99]={};
)?
//声明一个新数组
会显示您的注释,但您根本没有在那里声明任何数组。另外,用户应该在哪里向数组中输入任何内容?我想既然数组从0开始,那么到99将是100个元素?声明数组时括号中的数字是大小,而不是最后的有效值d索引。听起来您可以使用一个索引。在
addNum()
中创建了
arr[]
,这意味着当函数返回时它将被删除,所有以前的值都将丢失。在函数外部声明它。