如何根据我的需求结束do while循环?

时间:2013-12-28 18:30:54

标签: c fibonacci do-while

以下代码使用Do While函数生成Fibonacci数,而不是指定退出条件的确切数,而(b <144)我想要不那么精确,只是让它不显示更大的数字一个特定的值(比方说150)。 我该怎么做? 请注意,我只知道基本功能。

        int main()
{
    int a;
    int b = 0;
    int c = 1;
    printf("the fibonacci numbers up to 144 are:\n");
    printf("%i", b);
    do
    {
        a = c+b;
        printf("\n%i", a);
        c = a+b;
        printf("\n%i", c);
        b = c+a;
        printf("\n%i", b);
    }
    while (b < 144);
    return 0;
}

4 个答案:

答案 0 :(得分:1)

我不确定您打算“按需”。如果您的意思是按需代码,则可以使用内部if,如果条件为true,则使用break命令退出循环。链接URL提取的示例:

for (i = 0; i < 5; i++) {
   if (string[i] == '\0')
      break;
   length++;
}

如果 on demand 表示“一旦你想要停止它”,那么使用你在控制台应用程序中的CTRL+C个。

编辑:由于您的功能已经退出命令,您可能想知道“如何在控制台应用程序中读取标准输入?” 答:使用scanf函数(这里是一个例子):

#include <stdio.h>   

int main() {
    int n;
    printf("Insert the value of N: ");
    scanf ("%d",&n);
    printf("N*N is equal to: %d\n", n*n);
    getch();    
}

答案 1 :(得分:0)

你可能想要使用类似的东西:

while (a < MAX_VALUE && b < MAX_VALUE && c < MAX_VALUE)

其中MAX_VALUE是包含(http://gcc.gnu.org/onlinedocs/cpp/Macros.html#Macros)之后程序开头的预处理器宏,例如:

#define MAX_VALUE 100000

答案 2 :(得分:0)

您可以输入您希望系列的编号的限制。

int n;
printf("Enter the limit: ");
scanf("%d", &n);
printf("\nthe fibonacci numbers up to %d are:\n", n);
printf("%i", b);
do
{
   ...
   n--;
}
while (n);

答案 3 :(得分:0)

解决它:在每次添加后添加用户指定的限制和if语句进行检查: 谢谢你的帮助!

float lim;
int a;
int b = 0;
int c = 1;
printf("The following program generates Fibonacci numbers up to a specified value\n");
printf("Please enter a value of your choise:");
scanf("%f4", &lim);
printf("the fibonacci numbers up to %.2f are:\n", lim);
printf("%i", b);
do
{
    a = c+b;
    c = a+b;
    b = c+a;
    if ( a >= lim) break;
    printf("\n%i", a);
    if ( c >= lim) break;
    printf("\n%i", c);
    if ( b >= lim) break;
    printf("\n%i", b);
}
while(b <= lim);