1 、实训名称
实训10:函数
2 、实训目的及要求
1、掌握函数的定义和调用。
2、自定义函数的编写。
3、数的递归调用方法。
3 、源代码及运行截图
(2)
#include<stdio.h> long sum(int n); // 声明 long fac(int i); // 声明 int main() { int n; printf("请输入要累加和的阶乘数:\n"); scanf("%d",&n); printf("sum=%ld\n",sum(n)); return 0; } long sum(int n) // 形参写里面 { int i; long s=0; // 调用就行了 for(i=1;i<=n;i++) s+=fac(i); return(s); } long fac(int i) { if(i==0) return(1); else return(i*fac(i-1)); }
(3)
#include<stdio.h> int fun(int n); int main(){ int x; printf("请输入所求斐波那契数列的前n项:\n"); scanf("%d",&x); printf("%d",fun(x)); return 0; } //函数 int fun(int n){ if(n==1) return 1; if(n==2) return 1; if(n>=3) return fun(n-1)+fun(n-2); }
【7-7】
(1)、
#include<stdio.h> int main(){ int n; double a,fun(int n); printf("请输入一个数:\n"); scanf("%d",&n); a=fun(n); printf("%10.6f\n",a); return 0; } //函数 double fun (int n){ int i,j,t=0; double s; s=0; for(i=1;i<=n;i++){ for(j=1;j<=i;j++){ t+=j; } s+=1/(double)t; } return s; }
(3)、
#include<stdio.h> int fun(int n); int main(){ int n,k=0; printf("请输入一个整数:\n"); scanf("%d",&n); fun(n); k=fun(n); printf("%d\n",k); return 0; } //函数 int fun(int n){ int s=0,i; while(n>0){ i=n%10;//余数为组成数的部分 s+=i*i*i; n=n/10;//商 } return s; }
【7-8】
#include<stdio.h> int fun(int n); int main(){ int m; printf("请输入一个大于三的数:\n"); scanf("%d",&m); fun(m); return 0; } //函数 int fun(int m){ int i; if(m<2){ printf("%d不是素数\n",m); } else{ for(i=2;i<m;i++){ if(m%i==0) break; } if(i<m) { printf("%d不是素数!!!\n",m); } else printf("%d是素数!!!",m); } return 0; }
【7-9】
#include<stdio.h> int fun(int a); int main(){ int a; puts("输入数据:"); scanf("%d",&a); printf("\n"); printf("%d",fun(a)); return 0; } //函数 int fun(int a){ int i, sum=0;; for(int i=2;i<a-1;i++){ if(a%i==0) { printf("%d的因子是%d\n",a,i); sum+=i; } } return sum; }
【7-10】
#include<stdio.h> double fun(int m); int main(){ int m; printf("输入一个数据:\n"); scanf("%d",&n); printf("\nThe result is %1f\n",fun(n)); return 0; } //函数 double fun(int m){ double s=0.0; ; for(int i=1;i<=m;i++){ s=s+1.0/(2*i); } return s; }
【7-11】
#include<stdio.h> #include<math.h> double fun(float x); int main(){ double x; printf("请输入数据:\n"); scanf("%lf",&x); printf("y=%f\n",fun(x)); return 0; } //函数 double fun(float x){ double z; if((3<x)&&(x<10)){ z=exp(x); } else if((-3<x)&&(x<3)){ z=log(x+3); } else if(x>=10){ z=sin(x)/(cos(x)+4); } else{ printf("输入的数据不符合!!"); } return z; } #include<stdio.h> #include<math.h> double fun(float x); int main(){ double x; printf("请输入数据:\n"); scanf("%lf",&x); printf("y=%f\n",fun(x)); return 0; } //函数 double fun(float x){ double z; int flag; flag= ((3<x)&&(x<10)) ? 1 :((-3<x)&&(x<3)) ? 2: (x>=10) ? 3:4; switch(flag){ case 1: { z=exp(x); return z; break; } case 2:{ z=log(x=3); return z; break; } case 3:{ z=sin(x)/(cos(x)+3); return z; break; } case 4:{ printf("请输入正确的数据!"); break; } } return z; }
【7-12】、
#include<stdio.h> #include<math.h> long fun(int n, int k); int main(){ long int sum; int n,k; printf("请输入k:\n"); scanf("%d",&k); printf("请输入n:\n"); scanf("%d",&n); sum=fun(n,k); printf("sum=%d\n",sum); return 0; } //函数 long fun(int n, int k){int sum; for(int i=1;i<=n;i++){ sum+=pow(i,k); } return sum; }
【7-13】
#include<stdio.h> long sum(int n); int main(){ long int n; printf("请输入 n:\n"); scanf("%d",&n); printf("sum=%ld\n",sum(n)); return 0; } //函数 long sum(int n){ int sum; if(n==1||n==2){ sum=1; } else if(n>2){ sum=2; for(int i=3;i<n;i++){ sum*=2; } } else{ printf("输入的数据不符合要求!!"); } return sum; }
【7-14】
#include<stdio.h> int sub(int m); int main(){ int i; printf("满足条件的数值:\n"); for(i=1000;i<=2000;i++){ if(sub(i)==1) printf("%6d",i); } return 0; } int sub(int m){ int n; int sum1,sum=0; sum1=m; while(m){ n=m%10; sum=sum+n; m=m/10; } if(sum%13==0) return 1; else return 0; }
【7-15】
#include<stdio.h> #include<math.h> int sub(int m); int main(){ int n; printf("请输入一个整数:\n"); scanf("%d",&n); printf("%d",sub(n)); } int sub(int m){ int count=0; int sum,sum1,sum2; int a,b; sum1=sum=m; while(m){ m=m/10; count++; } a=pow(10,(count-1)); b=sum/a; sum2=sum-b*a; return sum2; }
【7-16】
#include<stdio.h> int main() { int a,i,b,n; for(a=66;a<=6000;a++) { for(b=0,i=1;i<=a/2;i++) if(!(a%i)) b+=i; for(n=0,i=1;i<=b/2;i++) if(!(b%i)) n+=i; if(n==a&&a<b)printf("%4d..%4d \n",a,b); } }
4 、小结
在函数的调用过程中,可以将函数放main函数之前;也可以放在main函数之后,单此时需要先声明函数,否则main函数不能对函数进行引用。不同的函数是一个问题的解决过程可以独立的存在,在使用对应的方法解决问题是需要引用不同的函数。有的函数有返回值有的则没有返回值,无返回值的用void声明。函数体中的方法运用的循环用使用合适的循环。