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;
}