早教吧 育儿知识 作业答案 考试题库 百科 知识分享

三道C语言题,请高手指点第一道:#includedoublef(intn){inti;doubles;s=1.0;for(i=1;i<=n;i++)s+=1.0/i;returns;}main(){inti,m=3;doublea=0.0for(i=0;i<m;i++)a+=f(i)printf("%f\n",a)}第

题目详情
三道C语言题,请高手指点第一道: #include double f ( int n ) { int i; double s; s=1.0; for ( i=1;i<=n;i++) s+=1.0/i; return s; } main ( ) { int i, m=3; double a=0.0 for ( i=0; i<m;i++) a+=f(i) printf ("%f\n",a) } 第二道: #include double sub (doule x,double y, double z) { y-=1.0;z=z+x;return z;} main ( ) { double a=2.5,b=9.0; printf ("%f\n", sub ( b-a,a,a ) ) } 第三道: #include int fun2 ( int a,int b) { int c; c=(a*b)%3; return c; } int fun1 ( int a, int b ) { int c; a+=a; b+=b; c=fun2 ( a,b ); return c*c; } main ( ) { int x=11,y=19; printf ("%d\n",fun1 ( x,y ) ); } 帮忙解一下这三道题,是怎样得出结果的?
▼优质解答
答案和解析
第一道:f()函数是计算1~n的倒数和,即1+1/2+1/3+……+1/n;而主函数中是计算f(1)~f(m)的值,也就是1+(1+1/2)+(1+1/2+1/3)+……+(1+1/2+1/3+……+1/m); 第二道:不要被形参迷惑sub()函数做了z=z+x,sub ( b-a,a,a )也就是最后返回a+b-a=b,即9.0 第三道:fun1和fun2函数联合起来相当于做了,[(2a*2b)%3]^2,将xy带入得,0