C语言每日一题——第十一天

第十一天

还记得在第三天写的斐波那契数列程序吗?小明最初想用这个函数作为随机数生成器的。今天,小明决定重新拾起这个函数,用于生成随机数……

输入

程序在运行时通过getchar获取输入,当使用者输入非空白字符时,退出程序。

输出

a b c d e五个字符,每当输入一个空白字符后,根据下一个斐波那契数与5的余数,打印相应的字符。如斐波那契数1与5的余数是1,那么打印第二个字符b。此外,当斐波那契数即将溢出时,重新从头开始获取数字。

提示

由于scanf对换行符的无视处理,请使用getchar获取输入。

样例

执行:main.exe

输出:

:
b
:
c
:
d
:
a
:1

关键

函数的使用,静态变量


解答

#include <stdio.h>
#include <limits.h>


int fab_loop() {
    static int a=1, b=1;
    int temp;

    temp = b;
    b += a;
    a = temp;
    if (a < INT_MAX / 2) {
        return a;
    } else {
        temp = b;
        a = b = 1;
        return temp;
    }
}

int main() {
    int cmd;
    char strings[] = "abcde";
    while (1) {
        printf(":");
        cmd = getchar();
        if (cmd != '\n') {
            break;
        }
        printf("%c\n", strings[fab_loop() % 5]);
    }

    return 0;
}
posted @ 2022-10-08 10:13  风吹云动  阅读(172)  评论(0编辑  收藏  举报