用户将值输入到数组中,然后我将此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;
}
}
}
答案 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?