如何获取数组的最后一个元素的值?

时间:2017-01-25 17:46:58

标签: c arrays

请注意以下代码。我想将金额除以数组中最后一个元素的值。我已经尝试过以下方式,但它无法正常工作。任何人都可以告诉我这样做的正确方法是什么?

#include<stdio.h>
int main()
{
    int i, j, k, noteNumber, array[100], amount, result;

    printf("Enter the number of the notes: \n");
    scanf("%d", &noteNumber);

    printf("Enter the value of %d notes: \n", noteNumber);
    for(i = 0; i < noteNumber; i++){
        scanf("%d", &array[i]);
    }

    printf("Enter the amount: \n");
    scanf("%d", &amount);

    i = j;

        if(amount / array[j] == 0){
        printf("Minimum %d number of is needed", (amount/array[j]));
        printf("The value of each note is %d", array[j]);
    }

}

3 个答案:

答案 0 :(得分:3)

我可以看到

  i = j;

错误,因为您正在使用未初始化变量的值来分配给另一个。这没有任何意义,可以导致undefined behavior

C数组使用基于0的索引,因此对于大小为n的数组,最后一个索引为n-1

也就是说,永远不要对静态定义的数组使用未绑定索引,在使用索引之前总是执行绑定检查。

答案 1 :(得分:2)

如果noteNumber是数组的大小,那么最后一个元素将是

array[noteNumber - 1]

据我所知,j甚至没有初始化?

答案 2 :(得分:1)

你有一条线

 i = j;

j甚至没有初始化,所以你在这里犯了一个错误,也许是什么  你想要的是

 j = i - 1   

由于i循环中noteNumber会增加到for,而元素数量n的数组的最后一个元素索引n-1因为索引从0而非1。

如此正确的代码将

#include<stdio.h>
int main(){

int i, j, k, noteNumber, array[100], amount, result;

printf("Enter the number of the notes: \n");
scanf("%d", &noteNumber);

printf("Enter the value of %d notes: \n", noteNumber);
for(i = 0; i < noteNumber; i++){
    scanf("%d", &array[i]);
}

printf("Enter the amount: \n");
scanf("%d", &amount);

j = i - 1; // Line Changed

    if(amount / array[j] == 0){
    printf("Minimum %d number of is needed", (amount/array[j]));
    printf("The value of each note is %d", array[j]);
}

}