1、1,3. 读入整数in,再输入一个数字digit(0digit10),统计并输出整数in中数字digit 的个数。要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数,函数形参number和digit的类型是int,函数类型是int。 例如,countdigit(10090,0)的返回值是3。,#include “stdio.h“ int main(void) int count, digit, in; int repeat, ri;int countdigit(int number,int digit);scanf(“%d“
2、, ,int countdigit(int number, int digit) int i=0;if(number0)number=-number;while(number)if(number%10=digit)i+;number=number/10;return i;,2,5.输入两个正整数m和n(1=m,n=10000),输出m到n之间所有的Fibonacci数。Fibonacci 序列(第一项起):1 1 2 3 5 8 13 21 要求定义并调用函数fib(n),它的功能是返回第 n 项Fibonacci数,函数形参n的类型是int,函数类型是long。 例如,fib(7)的返回值是
3、13。,例4-10 求Fibonacci(斐波那契)数列的前10个数1, 1, 2, 3, 5, 8, 13, 数之间的关系 F1=1 n=1F2=1 n=2Fn =Fn-1+Fn-2 n3,分析,前2项之和等于后项值 f3=f1+f2,3,流程图,f1=1 f2=1,i10,i=3,i=i+1,1,0,输出f1,f2,f3=f1+f2 f1=f2 f2=f3,输出f3,程序,#include “stdio.h“ void main() int i,f1,f2,f3;f1=1;f2=1;printf(“%d %d “,f1,f2);for(i=3;i=10;i+)f3=f1+f2; f1=f2
4、;f2=f3;printf(“%d “,f3);if(i%5=0) printf(“n“); ,终,表达式1,表达式2,表达式3,4,long fib(int n) int i,f1,f2,f3;return f3; ,#include “stdio.h“ void main() int i,f1,f2,f3;f1=1;f2=1;printf(“%d %d “,f1,f2);for(i=3;i=10;i+)f3=f1+f2; f1=f2;f2=f3;printf(“%d “,f3);if(i%5=0) printf(“n“); ,f1=1;f2=1; for(i=3;i=n;i+) f3=f1
5、+f2; f1=f2;f2=f3;,if(n=2)f3=1; else ,5,#include “stdio.h“ #include “math.h“ int main(void) int i, m, n;int repeat, ri;long f;long fib(int n);scanf(“%d“, ,long fib(int n) int i,f1,f2,f3;if(n=2)f3=1;elsef1=1;f2=1;for(i=3;i=n;i+)f3=f1+f2; f1=f2;f2=f3;return f3; ,6,6.输入整数in,输出其逆序数.要求定义并调用函数reverse(numbe
6、r),它的功能是返回number的逆序数,函数形参number的类型是int,函数类型是int。例如,reverse(12345)的返回值是54321。,12345 54321,5104 +4103+3102+2101+1100,(510+4)10+3)10+3)10+1,程序为: s=0; while(number) t=number%10;s=s*10+t;number=number/10; ,#include int reverse(int number) int t,s=0;while(number)t=number%10;s=s*10+t;number=number/10;return s; void main() int number,s;scanf(“%ld“,通项 s=s*10+t s初值=0,