作业1 将例2写成多函数程序,要求 定义一个函数,求 Fibonacci数列的前n项。 求某门课程的最高分并输出,要求: 定义一个函数,求数组中的最大值,然后 在主函数中调用这个函数求课程的最高分。 16
16 作业1 ▪ 将例2写成多函数程序,要求: ▪ 定义一个函数,求Fibonacci数列的前n项。 ▪ 求某门课程的最高分并输出,要求: ▪ 定义一个函数,求数组中的最大值,然后 在主函数中调用这个函数求课程的最高分
求 Fibonacci数列的前n项 include <stdio. h *define N 100 void Fibonacci( float a囗ntn)://函数声明 /函数功能:求 Fibonacci数列的前m项,存入数组a中 void Fibonacci(float aD, int n) int i. a[o]=a[1]=1: for(i=2 i<n; i++) a[]=a[i-1]a[i-2] //数列已经写到a中,其实就已经写到主函数的fb数组中。所以不用返回。 void main no float fib[N]://数组长度可以定义得大一些。 printf" how many terms do you want to count? (0<term<=100)): scanf("‰d",&n)://由用户输入想求得的项的数目。 Fibonacci(fbn)://调用函数求前n项。 for(i=O; i<n; i++) printf fib[ %d]=%Of\n, i+1, fib[i]: /输出fib数组的元素。不能输出a[,因为作用域不同 17
17 求Fibonacci数列的前n项 #include<stdio.h> #define N 100 void Fibonacci(float a[],int n);//函数声明 //函数功能:求Fibonacci数列的前n项,存入数组a中 void Fibonacci(float a[],int n) { int i; a[0]=a[1]=1; for(i=2;i<n;i++) a[i]=a[i-1]+a[i-2]; //数列已经写到a中,其实就已经写到主函数的fib数组中。所以不用返回。 } void main() { float fib[N];//数组长度可以定义得大一些。 int i,n; printf("how many terms do you want to count? (0<term<=100)"); scanf("%d",&n);//由用户输入想求得的项的数目。 Fibonacci(fib,n);//调用函数求前n项。 for(i=0;i<n;i++) { printf("fib[%d]=%.0f\n",i+1,fib[i]); //输出fib数组的元素。不能输出a[i],因为作用域不同。 } }
求60个学生的最高分 n算法: 输入60个学生的成绩 依次比较,找出最高分(写成函数) 输出最高分。 18
18 求60个学生的最高分 ▪ 算法: ▪ 输入60个学生的成绩 ▪ 依次比较,找出最高分(写成函数) ▪ 输出最高分
方法一: # include< stdio. h》 *define n 60 intA/*函数功能:求一个长度为n的数组a中的最大值所 void对应的下标*/ 〔 i int Max i(nt an,intn) [int i, max i: maxi=0;/假设最大值对应的下标为0/ rfor(i=1;i<=n-1;i++) 下 if(a[i]>a[max D maxi=i:}/求最大元素对应的下标* return max
19 方法一: #include <stdio.h> #define N 60 int Max_i(int a[], int n); //函数声明 void main() { int i,a[N],max_i; printf("Input %d score:\n",N); for(i=0;i<=N-1;i++) scanf("%d",&a[i]); max_i=Max_i(a,N); //调用函数求a中最大值对应的 下标 printf("\n The maximum score is %d :\n ", a[max_i]); } /*函数功能:求一个长度为n的数组a中的最大值所 对应的下标*/ int Max_i(int a[], int n) {int i,max_i; max_i=0; /*假设最大值对应的下标为0*/ for(i=1;i<=n-1;i++) if(a[i]>a[max_i]) { max_i=i; } /*求最大元素对应的下标*/ return max_i; }
方法二 #include <stdio. h> #define n 60 int Max(inta,intn)://函数声明 void /函数功能:求一个长度为n的数组a中的最大值*/ int int Max(int an int n) pr ( int i,max fmox=ao:/假设最大值对应的下标为0/ for(=1:i<=N-1;i++) max=max>a[?max: a[o] 求最大元素对应的下标/ max return max
20 方法二: #include <stdio.h> #define N 60 int Max (int a[], int n);//函数声明 void main() { int a[N],i,max; printf("Input %d score:\n",N); for(i=0;i<=N-1;i++) scanf("%d",&a[i]); max=Max (a,N);//调用函数求a中最大值 printf("\n The maximum score is %d :\n " , max); } /*函数功能:求一个长度为n的数组a中的最大值*/ int Max (int a[], int n) {int i,max; max=a[0]; /*假设最大值对应的下标为0*/ for(i=1;i<=N-1;i++) max=max>a[i]?max:a[i]; /*求最大元素对应的下标*/ return max; }