第八章 函数习题答案.doc_第1页
第八章 函数习题答案.doc_第2页
第八章 函数习题答案.doc_第3页
第八章 函数习题答案.doc_第4页
第八章 函数习题答案.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章习题答案一、单项选择题 1B2A3C4D5C6A7D8C9B10C11A12D13A二、填充题1局部变量或是全程变量 局部变量或是全程变量 存储类型2外部声明型 自动型 寄存器型 静态型 自动型 寄存器型 静态型3所定义的函数或复合语句内4地址传递 值传递5函数内部 局部6return void7变量地址 指针 数组名8地址传递9值传递10911171210,513 214 515。*s!=0; s+16。char s i+ - -i ; i=0 ; i- -17int t0,t1,t ; n1 t0+t1 t18printf(“%fn”,s) ; s=find(a,7,-1) t=*p ; return t ; 19sort(a, 7); char *p, int n *(p+j)*(p+k) if(k!=i)20float *a, int n scanf(“%f”,&x); t=t*x; return y;21float t; *min= *p; t*max22float *a, int n j=i+1;jn;j+ *(a+j*n+i)=t;23#include namek=chk; sort(name,6);24int i , flag=1; if(fabs(s1-s2)eps) flag=0; return s2;25 1 prime(k) 26 6354 fun函数中,先由for(;isspace(*s);s+);移过字符串中的先导空格字符,系统函数 isspace(*s)是判断空格字符的。若有字符-,sign放-1,否则放1,移过字符- 或+。从此取出字符串中的数字字符(系统函数isdigit(*s)是判断数字字符的)其它 字符不要,变成整数 后,按位乘10相加(n=n*10+(*s-0)),最后返回数sign*n值。27int *z 28wi-1 w中从0算起有n指向数个字符,则w*n是空的,先把x中的字符放w*n。找出 按序x中字符应放的位置p。(while(xp) p+),从最后一个字符wi=*n(即要 插入的字符)开始向前移位(wi= wi-1 )直到位p,则就把最后一个字符(即要 插入的字符)插入到了p位。29 *s - *t 30 *a *a 该递归函数的出口是if,因此,在此要填入遇到字符串结束标志时返回。字符串结束 标志的方式有四种:*a=0,*a=0或!*a。由于if中已有求反运算符!,故可填入:*a 或填(*a!=0),(*a!=NULL),(*a!=0)。显然%c * 后要填入 a 。三、程序分析题1. 输出结果: fedcba2. 输出结果: 5 6 7 7 12 63. 输出结果: 4,2,84. 函数的功能是能把p1和P2所指的实参数据交换。5. 函数的功能:求出n个实数的平均值。6. 运算结果: 12。7. 程序运算结果:0 0 0 0。8. 程序运算结果:1,2。9、求fun(4),可用推展和回溯法读递归函数计算结果为:72。10、运行时输入: 5 7 3 输出结果: 3 5 -7 3 11、输出结果: 1 4 21 1 43 2 112、输出结果: 2,3,5,7 13、输出结果: 1 5 3 8 4 9 4 6 14、输出结果: afternoon evening morning night 15、输出结果: $ $ $ $ 16、输出结果: 1 17、输出结果: 256.000000 18、输出结果: u=32.000v=18.000 四、程序设计题1解: float root(float a, float b, float c) return(b*b-4*a*c); 2解: int year (int y) if (y%4=0&y%100!=0) |y%400=0) return 1; else return 0; 3解: #include void root2(float root2,float a, float b, float c) float p; p=sqtr(b*b-4*a*c); root0=(-b+p)/(2*a); root1=(-b-p)/(2*a); 4解: void max_min(int m, int n) int a=m , b=n, t, r ; if (mn) t=m; m=n; n=t; r=m%n; while(r!=0) m=n; n=r; r=m%n; printf(“%d 和 %d 的最大公约数是%n”,a,b,n); printf(“%d 和 %d 的最小公倍数是%n”,a,b,a*b/n); 解: #include void main( ) #include int a; int prime (int m) for(a=3; a=100; a+) int k, i; if (prime (a) printf(“%3d”,a); k=sqrt(m); printf (“n”); for (i=2; i=k; i+) if (m%i=0) return 0; return 1;6、解:int day_of_year(int year, int month, int day)int k,leap;int tab213=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;leap=year%4=0 & year%100 !=0 | year%400=0; / 当year是闰年,leap=1for(k=1;kmonth;k+) / 当year不是闰年,leap=0day+=tableapk;return day;7解: #include void main( )int day, month, year, yearday;void month_day(int year,int yearday,int *pmonth,int *pday);printf(“input year and yeardayn”);scanf(“%d %d”,&year,&yearday);month_day(year,yearday,&month,&day);printf(“%d-%dn”,month,day);void month_day(int year, int yearday, int *pmonth, int *pday)int k,leap;int tab213=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;leap=year%4=0 & year%100 !=0 | year%400=0; for(k=1; yeardaytableapk; k+) yearday-=tableapk;*pmonth=k; *pday=yearday;8解: void trus (int s123, int s232) int i, j; for (i=0; i2; i+) for (j=0; j3; j+) s2ji = s1ij; 9解: #include int countc (char array) int i, n=0; for (i=0; istrlen (array) ; i+) if (arrayi=Z) n+; return n; 10解: #include int link (char s140, char s240, char s380) int i, k, n=0; for (i=0; istrlen(s1); i+) s3i=s1i; n+; k=i; for (i=0; istrlen(s2); i+) s3k+i=s2i; n+; s3i=0; return n; 11解: void fun (float a , int n, float *max, float *min, float *vag) int i; *vag=a0; *max=a0; *min=a0; for (i=1; i*max) *max=ai; if (ai*min) *min=ai; *vag=*vag+ai; *vag= *vag/n; 12解: void sortc(char a) int n, i, j; char ch; n=strlen (a); for (i=0; in-1; i+) for (j=0; jaj+1) ch=aj; aj=aj+1; aj+1=ch; 13(1)解: #include void convert(char *b) / 倒置数组 char a255; / 全局数组 int l , i; void contw (int m) / 递归转换 char c , *p ; int n; l=strlen(b) ; p=b+l-1 ; static int i=1; for(i=1 , b+ ; i=1/2 ; i+ , b+ , p-) char c; c=*b ; *b=*p ; *p=c ; if (m!=0) return ; n=m%10; c=n+48; ai=c; m=m/10; i+; contw(m); return; void main( ) int n; void contw (int m); void convert (char *b); printf (“输入一整数:“); scanf (“%d“, &n); if (n0) a0=-; n= -n; else a0= ; contw(n); convert(a) ; printf (“字符串:%sn“,a); return;13、(2)解:#includevoid f(int n) if(n10) printf(“%d”, n) ;else printf(“%d”,n%10) ; f(n/10) ; void main( ) int x ; scanf(“%d”, &x) ; f(x) ;14、解:#include #includevoid delchar(char a , char c) in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论