我需要创建一个程序,用户将输入一些整数,程序将输出下一个比用户输入更大的数字的斐波那契序列号。 斐波那契序列如下:
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();
}
答案 0 :(得分:2)
添加break
语句,因为一旦找到了所需的值,就不必为j
for (i=0; i<3; i++)
{
for (j=0; j<20; j++)
{
if(a[j] > inputarray[i])
{
outputarray[i] = a[j];
break;
}
}
}
答案 1 :(得分:1)
如果你没有使用for
循环(因为你不想迭代给定数量的值),我会容易得多。如果您的循环取决于条件,请使用do-while
/ while
循环。
for (i = 0; i < 3; i++) {
while (a[j] <= inputarray[i])
{
j++;
}
outputarray[i] = a[j];
}