比较数组内部的数字

时间:2014-04-16 00:16:17

标签: c arrays compare

用户将值输入到数组中,然后我将此For循环用于比较数字输入后的数字。我想要做的是找到数组中第一个更大的数字。

i = 0;
next = a[++i];
for (i = 0; i < len; i++)
{
    if (a[i] > a[next])
    {
        ++next;

        if (a[i] < a[next])
        {
          printf("%d is the first larger number.", a[i]);
        }
    }

}

当我调试我的程序时,我发现当&#34; i&#34;正在被比作一个[未接受]它没有取得该位置内的数字的值&#34; i&#34;数组。我曾试图使用&#34;我&#34;在启动我的If语句时,而不是[i],但似乎没有解决问题。

这是我的更正代码。为练习做了一些小改动

#include <stdio.h>

int main(int argc, const char * argv[])
{
const int len = 4;
int a[len];
int i;
int j = a[i-1];

for (i = 0; i < len; i++) {
    printf("Enter a number:");
    scanf("%d", &a[i]);
}

i = 0;
for (i = 1; i < len; i++) {
    if (a[i] > a[j])
    {
          printf("%d is the first larger number.", a[i]);
        break;
    }

}

}

3 个答案:

答案 0 :(得分:0)

假设您正在寻找第一个局部最大值,一个解决方案是声明一个名为best的变量来跟踪到目前为止看到的最大数量。将best设置为数组a[0]的第一个元素。然后检查数组的第一个元素是否小于best

best = a[0]; 
for ( i = 1; i < len; i++ )
{
    if ( a[i] > best ) 
        best = a[i];
    else if ( a[i] < best )
        break;
}
printf( "%d is the first larger number.\n", best );

答案 1 :(得分:0)

我认为你正在寻找阵列没有减少的第一个地方;即,第一个元素i的索引,使a[i] > a[i-1]

for (i = 1; i < len; i++) {
    if (a[i] > a[i-1]) {
        printf("%d is the first larger number", a[i]);
        break;
    }
}

新版本,打印出序列的第一部分:

for (i = 1; i < len; i++) {
    if (a[i] > a[i-1]) {
        printf("\n%d is the first larger number", a[i]);
        break;
    }
    printf("%d ", a[i]);
}

答案 2 :(得分:0)

无论你想要实现什么!你永远不会说: next = a[++i];a[i] > a[next] !! a[next]可能超出数组的大小

EX:

A[] = {0, 7, 2, 3, 1}

next = A[1] = 7

A[next] = A[7] = !! //what u think it is?