如何在C中添加一系列数字的第一个数字和最后一个数字?

时间:2018-01-01 17:23:45

标签: c

我是C语言和计算机编程的初学者。我一直在努力解决小问题,以增强我的技能。最近,我试图解决一个问题,即输入将决定它将具有的系列数量,并添加一个系列的第一个和最后一个数字。我的代码无效,我已经试了几个小时。任何人都可以帮我解决吗?

这是我到目前为止所尝试的内容。

#include<stdio.h>

int main()
{
    int a[4];
    int x, y, z, num;
    scanf("%d", &num);
    for (x = 1; x <= num; x++) {
        scanf("%d", &a[x]);

        int add = a[0] + a[4];
        printf("%d\n", a[x]);
    }
    return 0;
}

2 个答案:

答案 0 :(得分:7)

从你的描述中可以清楚地看出,你应该不关心中间数字第一个和最后一个。

由于你只想添加第一个和最后一个,你应该先从输入中获取第一个,然后等待最后一个数字,然后保存第一个。这意味着您不需要数组来保存其余数字,因为您无论如何都不会使用它们。

我们甚至可以在不知道系列的长度的情况下完成这项工作,但由于提供了它,我们将使用它。

#include<stdio.h>

int main()
{
    int first, last, num, x = 0;
    scanf("%d", &num);
    scanf("%d", &first);
    last = first;    //for the case of num=1
    for (x = 1; x < num; x++) {
        scanf("%d", &last);
    }
    int add = first + last;
    printf("%d\n", add);
    return 0;
}

这里发生的是,在我们从num读取值后,我们立即扫描第一个数字。然后,我们扫描剩余的num-1数字(注意for循环如何从1运行到num-1)。

在每次迭代中,我们覆盖我们读取的“最后”数字,当for循环结束时,系列中的最后一个实际上是我们读到的最后一个。

所以这个输入:

4 1 5 5 1

我们得到输出:

2

一些注意事项:请注意我在读完第一个数字后如何添加last = first。这是因为在num为1的情况下,for循环将永远不会迭代(即使它确实没有任何东西可以读取)。因此,在num为1的情况下,合理地假设第一个数字也是最后一个。

另外,我注意到您的代码存在一些误解:

请记住,C中的数组从0开始,不是 1.因此,声明为[4]的数组的位置为[0],a [1],a [2]和[3] ]。访问[4],如果有效,将导致未定义的行为(例如,添加不在输入中的数字)。

值得注意的是(正如评论中所指出的),你从一开始就声明你的数组大小为4,所以你最终假装输入是4个数字而不管它实际是什么。只有当你已经知道输入大小为4时才有意义。既然你没有,你应该在读完大小后声明它。

此外,有些人试图在for循环中添加结果。这意味着你试图在你的结果中添加[0] + a [3] 4次,在阅读[3]之前添加3,在阅读之后添加1 [3]。这里正确的方法当然是在完成循环输入后尝试添加(正如评论中指出的那样)。

答案 1 :(得分:0)

我知道你的意思,根据要求,这是我在完成任务时所做的尝试。希望这会有所帮助:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int first, last, num, x=0;
    int add=0;
    printf("What is the num value?\n");//num value asked (basically the 
index value)
    scanf("%d", &num);//value for num is stored
    printf("What is the first number?\n");
    scanf("%d", &first);
    if (num==1)
    {
        last=first;
    }
    else
    {
        for (x=1;x<num;x++)
        {
            printf("Enter number %d in the sequence:\n", x);
            scanf("%d", &last);
        }
        add=(first+last);

        printf("Sum of numbers equals:%d\n", add);
    }
    return 0;
}