ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:53.47KB ,
资源ID:10817791      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10817791.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(函数调用.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

函数调用.docx

1、函数调用习题77.1 编写函数说明double fun(double p,double q),计算的值,再设计主函数,调用fun函数对下列各表达式求值。解答:#include math.hdouble fun (double p,double q) double y; y=p/(q*q+sqrt(1+2*q+3*q*q); return(y);main () float x,a,b,c,d; scanf(%f,&x); a=fun(3.5,x); b=fun(x-6.3,x*x); c=fun(1.0,exp(x); d=fun(sin(x),sin(x); printf(a=%fn,a);

2、printf(b=%fn,b); printf(c=%fn,c); printf(d=%fn,d);7.2 编写函数factor(n),求n!,再用它求下面表达式的值。 解答:double factor (int n) int i; double y; y=1.0; for (i=1;i=n;i+) y=y*i; return(y);main () int n,m,p; double c; scanf(%d%d,&n,&m); p=m-n; if (p0) printf(mn error!n); else if (p=0) printf (c=1n); else c=factor(m)/(fa

3、ctor(n)*factor(p); printf(c=%fn,c); 7.3 设计函数reverse(s),将字符串s的内容头尾颠倒。例如,设char x=“abcde”,则调用reverse(x)以后,x的内容为“edcba”,本题约定转换以后的倒序字符串在main函数中输出。解答:reverse(s)char s; int i,j; char temp; i=0; while (si!=0) i+; i-; if (si=n) i-; j=0; while (ji) temp=sj; sj=si; si=temp; i-; j+; main () char s180; scanf(%s,

4、s1); reverse(s1); printf(%s,s1);reverse(s)char s; int i,j; char temp; i=0; while (si!=0) i+; i-; if (si=n) i-; j=0; while (j1) n/=10; k- ; return n%10 ; main() long x=52761; printf(“digit(%ld,4)=%dn”,x , digit(x,4); 程序输出值: 5函数功能: 取整数n的第k位数字。(2) int gys(int a, int b) int r; r=a; if(r) a=b; b=r; r=a%b

5、 ; gys(a,b); return b; main() int x=18,24,14,45; printf(“%dt%dt%dn”,x0,x1,gys(x0,x1); printf(“%dt%dt%dn”,x2,x3,gys(x2,x3); 程序输出值: 此程序无法运行函数功能: 7.5 以下程序中,函数collect的功能是对n位学生的考试成绩统计总平均分和低于总平均分的人数,本题约定,人数的统计数由函数返回,总平均分则由形式参数aver带出,该程序有错误,请修改它直至达到程序的预期功能为止。此题不能放在这里。因为此时还没有学习指针。#include #define N 10int co

6、llect(float s, int n, float *aver); int i, count=0; float x=0.0; for(i=0; iN; i+) x+=si; x=x/N; for(i=0; iN; i+) if(six) count+; aver=x; 改正:* aver=x; return count;main() float sN, aver; int i, num; for(i=0; iN; i+) scanf(“%d”,&si); num=collect(s, N, aver); 改正:num=collect(s, N, &aver); printf(“averag

7、e=%.1fn”,aver); printf(“0) while(n%2=0) n/=2; y*=y; n-; z*=y; return z; 解答:double power(double x,int n) if (n=0) return 1; if (n=1) return x; if (n1) return (x*power(x,n-1);main () float x,z; scanf (%f,&x); printf(x=%fn,x); z=power(x,4); printf(z=%fn,z);7.7 编写函数void longstr(char *string),输出字符串string

8、中最长的单词。解答:void longstr(char string) int len=0,length=0,flag=1,place=0,point,i; for (i=0;i=a&stringi=A&stringi=length) length=len; place=point; len=0; printf(nThe longest word is:); for (i=place; 7.8 编写函数,求一元二次方程ax2+bx+c=0根。本题约定:求得的方程根必须通过实参带回到主函数中去输出,主函数通过循环对输入的一系列系数组求解。此题不能放在这里。解答:#include math.h#i

9、nclude stdio.hroots( int a, int b, int c,float *x1,float *x2) float delt; int real=1; delt=b*b-4*a*c; if ( delt=0) *x1=(-b+sqrt(delt)/(2*a); *x2=(-b-sqrt(delt)/(2*a); else *x1=-b/(2*a); *x2=sqrt(-delt)/(2*a); real=0; return (real); main() int a,b,c,real; float x1,x2; char answer; while (1) printf (I

10、nput a,b,c:n); scanf(%d%d%d,&a,&b,&c); if (a!=0) real=roots(a,b,c,&x1,&x2); if (real) printf (has real roots:x1=%.2f,x2=%.2fn,x1,x2); else printf (has complex roots:n); printf (%8.2f+%8.2fin,x1,x2); printf (%8.2f-%8.2fin,x1,x2); else printf(is not a quadraticn); printf(continue?(y/n)n); getchar(); a

11、nswer=getchar(); if (answer=N)|(answer=n) break; 7.9 假设某年的1月1日为星期一,请编写函数writedate(int year, int k),输出该year年的第k天是星期几。例如,调用writedate(2001,95),则输出“Thursday,april 12th” 。解答:writedate(int year,int k) int a213=0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31; int leap,month,dat

12、e,kk=k; leap=(year%4=0&year%100!=0)|(year%400=0); month=0; while (k=28) k=k-aleapmonth; printf(k=%dn,k); month+; date=kk%7; switch(date) case 0: printf(Sunday); break; case 1: printf(Monday); break; case 2: printf(Tuesday); break; case 3: printf(Wensday); break; case 4: printf(Tursday); break; case

13、5: printf(Friday); break; case 6: printf(Satuday); break; switch(month) case 1: printf(January); break; case 2: printf(February); break; case 3: printf(March); break; case 4: printf(April); break; case 5: printf(May); break; case 6: printf(June); break; case 7: printf(July); break; case 8: printf(Au

14、gust); break; case 9: printf(September); break; case 10: printf(October); break; case 11: printf(November); break; case 12: printf(December); break; switch(k) case 0: printf(1th); break; case 1: printf(2th); break; case 2: printf(3th); break; case 3: printf(4th); break; case 4: printf(4th); break; c

15、ase 5: printf(5th); break; case 6: printf(6th); break; case 7: printf(7th); break; case 8: printf(8th); break; case 9: printf(9th); break; case 10: printf(10th); break; case 11: printf(11th); break; case 12: printf(12th); break; case 13: printf(13th); break; case 14: printf(14th); break; case 15: pr

16、intf(15th); break; case 16: printf(16th); break; case 17: printf(17th); break; case 18: printf(18th); break; case 19: printf(19th); break; case 20: printf(20th); break; case 21: printf(21th); break; case 22: printf(22th); break; case 23: printf(23th); break; case 24: printf(24th); break; case 25: pr

17、intf(25th); break; case 26: printf(26th); break; case 27: printf(27th); break; case 28: printf(28th); break; case 29: printf(29th); break; case 30: printf(30th); break; case 31: printf(31th); break; main () writedate(2001,95); 7.10 编写函数change(intxNN,int mode),按mode指定的方式对二维数组x进行转置,现约定:当mode为1时,以主对角线为

18、对称轴转置,否则以次对角线为对称轴转置。若图(a)为数组的初始值,则图(b)、图(c)分别表示以主对角线为对称轴转置和以次对角线为对称轴转置后数组的内容。1 2 3 4 1 5 9 13 16 12 8 45 6 7 8 2 6 10 14 15 11 7 39 10 11 12 3 7 11 15 14 10 6 213 14 15 16 4 8 12 16 13 9 5 1 (a) (b) (c) 解答:#define N 4convert(int xNN,int mode) int i,j,t; if (mode=1) for (i=0;iN;i+) for (j=i+1;jN;j+)

19、t=xij; xij=xji; xji=t; else for (i=0;i=0;j-) t=xij; xij=xN-j-1N-i-1; xN-j-1N-i-1=t; main()int i,j,mode,xNN; printf(Input array:n); for (i=0;iN;i+) for (j=0;jN;j+) scanf(%d,&xij); printf(Input mode:n); scanf(%d,&mode); printf(noriginal array:n); for (i=0;iN;i+) for (j=0;jN;j+) printf(%5d,xij); printf

20、(n); convert(x,mode); printf(convert array:n); for (i=0;iN;i+) for (j=0;j=0;j-) switch (aj) case 10: printf(a);break; case 11: printf(b);break; case 12: printf(c);break; case 13: printf(d);break; case 14: printf(e);break; case 15: printf(f);break; default: printf(%d,aj); printf(n); main () int m,d;

21、printf(Input m and dn); scanf(%d%d,&m,&d); trans(m,d);7.12 编写函数int find_no_k(int x, int k,int y2),从整数序列x中找出第k大的哪个数以及该数在原序列中的序号,函数值通过形参数组y返回。例如,设某整数序列为5,2,3,11,0,-6,22,-10,k为3,则调用find_no_k函数以后,通过y数组返回的函数值为5和1。解答:#define N 8int find_no_k(int x,int k, int y2) int i,j,t,aN; for (i=0;iN;i+) ai=xi; for (j

22、=0;j=N-1;j+) for (i=0;iN-j;i+) if (aiai+1) t=ai; ai=ai+1; ai+1=t; i=0; while(ak-1!=xi) i+; y0=ak-1; y1=i+1; main () int xN,k,y2,i; printf(Input x pleasen); for (i=0;ifindmax(x,n-1)?xn-1:findmax(x,n-1) n1解答:findmax(int x,int m) if (m=1) return(x0); else if (m1) return (xm-1findmax(x,m-1)?xm-1: findma

23、x(x,m-1);main () int x10,i, max; for (i=0;i10;i+) scanf(%d,&xi); max=findmax(x,10); printf(max=%dn,max);习题99.1设有说明语句static double a23=1.0, 2.0, 3.0, 4.0, 5.0, 6.0; 现已知a数组的存储首地址为0x86,请分别写出下列各表达式的值。(1) *a (2) &a1 (3) *a1(4) a1+2 (5) *(a+1)+1 (6) *(*(a+1)+1)解答:(1)0x86 (2)0xaa (3)0xaa (4)0xce (5)0xc6 (6

24、)5.09.2 编写函数double round(double *a,double *b),对指针a、b所指向的存储单元中的数从第四位开始四舍五入,并向main函数返回处理以后的值。例如,设主函数中有说明语句double x=6.0576, y=-1.8923,当调用上述函数后,x、y的值分别为6.058-和1.892,现规定main函数中不允许使用指针变量。题中函数的类型有误。解答: void round(float *a, float *b) int m,n; m=(*a+0.0005)*1000; n=(*b+0.0005)*1000; *a=(float)m/1000; *b=(float)n/1000;main() float x=6.0576,y=-1.89

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1