C语言实验5-8答案(函数与数组).docVIP

  • 33
  • 0
  • 约3.26千字
  • 约 6页
  • 2017-06-07 发布于重庆
  • 举报
C语言实验5-8答案(函数与数组)

实验5 函数定义、声明与调用 任务1 函数的定义和声明 1.21 2.12 3.s=16 功能:求2和4次方。 4.修改后代码如下: #include stdio.h main( ) { int x,y; scanf(%d,%d,x,y); printf(%d\n,sum(x,y)); //形参与实参的个数要一致,所以将加号改成逗号。 } int sum( int a,int b) //函数不能嵌套定义,所以将sun函数拉到main函数外,同 { 时形参的每个参数前都必须要有类型 return (a+b); } 5.修改后代码如下: #include stdio.h fun(int n) { int k,yes; for(k=2;k=n/2;k++) if(n%k==0) {yes=0;break;} //反证法证明,找到一个就跳出,否则会被后面覆盖 else yes=1; return yes; } main( ) { int n; scanf(%d,n); if(fun(n)) //将main函数中的函数调用fun()改成fun(n),因为实参的个数应与形参对应 printf(%d:yes!\n,n); else printf(%d:no!\n,n); } 6.修改后代码如下: #include stdio.h main( ) { double fun(int m); //先调用再定义,且不是能缺省的int型,请加上函数说明。 int m; printf(\n input m:); scanf(%d,m); printf(\n t= %12.10lf \n,fun(m)); } double fun(int m) { double fac,t=0.0; int i=1,j; for(i=1;i=m;i++) { fac=1.0; for(j=1;j=i;j++) fac=fac*j; //逻辑有误,改为:for(j=1;j=i;j++) fac=fac*j;这样才表示求i!,原程序行是求i的m次方。 t+=1.0/fac; } return t; } 任务2 函数的嵌套调用 1. (1) in main:x=2,y=5 (2) in swap:a=2,b=5 (3) in swap:a=5,b=2 (4) in main:x=2,y=5 2.a=8 3.如输入:12345 则输出:54321 程序的功能是实现将输入的5个字符逆序输出。 4.8 实验6 函数递归调用、变量的存储类型及编译预处理 任务1 函数的递归调用 1.fact(j-1)*j 2.gcd(n,m%n) mn 3.//for(j=0;j=n-i;j++) // printf();//删除这两行,因为顶格输出,不要空行了。 y==1||y==x z=c(x-1,y-1)+c(x-1,y) 4.程序代码如下: #includestdio.h fib(int n) { int f; if(n==1||n==2) f=1; else f=fib(n-1)+fib(n-2); return(f); } main() { int n,i,s=0; printf(Input n=); scanf(%d,n); for(i=1;i=n;i++) s=s+fib(i); printf(n=%d,s=%d\n,n,s); } 任务2 变量的存储类型与编译预处理 1.t1=4,t2=12,b=100 a=2,b=4 2.(1):1 (2):2 (3):11 (4):3 (5):2 3.7

文档评论(0)

1亿VIP精品文档

相关文档