我需要创建一个程序,用户将输入整数,程序将输出斐波纳契序列号,该序列号的下一个数字大于用户输入的数字。
斐波那契数列如下:

0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765


例:

用户输入:[1, 9, 22]
输出应为:2, 13, 34

我似乎无法使if循环一旦获得值就停止,因为输出将始终显示4181、4181、4181。
我的代码如下:

#include <stdio.h>
#include <conio.h>

void main()
{
    int i, n, a[100];
    int inputarray[3], j;
    int outputarray[3];

    a[0] = 0;
    a[1] = 1;
    for (i = 2; i < 20; i++) {
        a[i] = a[i-1] + a[i-2];
    }

    for (i = 0; i < 20; i++) {
        printf("%5d",a[i]);
    }

    for (j = 0; j < 3; j++) {
        printf ("\nEnter numbers of input array:");
        scanf ("%d", &inputarray[j]);
    }

    for (i = 0; i < 3; i++) {
        for (j = 0; j < 20; j++) {
            if (a[j] > inputarray[i])
                outputarray[i] = a[j];
        }
    }

    for (i = 0; i < 3; i++) {
        printf("%5d", outputarray[i]);
    }
    getch();
}

最佳答案

添加break语句,因为一旦找到所需的值,就不必继续循环j

for (i=0; i<3; i++)
{
  for (j=0; j<20; j++)
  {
    if(a[j] > inputarray[i])
    {
        outputarray[i] = a[j];
        break;
    }
  }
}

关于c - 如果数组一旦有循环就如何停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49893357/

10-10 11:26