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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验8函数参考答案.docx

1、实验8函数参考答案C语言程序设计 实验教学(8)【实验目的】函数是C程序的基本组成部分,学习函数的设计和调用是很重要的。实验目的是掌握函数的定义、变量的作用域和函数的调用。【实验要求】实际应用程序通常是由多个函数构成的,要求将常见的功能模块用函数形式实现,并学会在主函数或其他函数中调用定义的函数。要学会函数声明。【实验课时】6.0【实验内容】1. 编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,否返回0。编写main函数,输入一个数num,调用fun(num)函数,并输出判断结果。#include #include int fun(int n)int a,b,c; a=n

2、%10; b=n/10%10; c=n/100; if(a*a*a+b*b*b+c*c*c=n) return(1); else return(0);void main()int num; clrscr();scanf(%d,&num); while(num=1000) printf(please enter the num again! (num=100&num1000) n); scanf(%d,&num); if(/*/ fun(num)=1 /*/) printf( %d is a sxhs.n,num); else printf( %d is not a sxhs.n,num);2.

3、 编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main函数,输入一个数num,调用ss(num)函数,并输出判断结果。#include #include int ss(int n)int i; for(i=2;i=n) return(1); else return(0);void main() int num; clrscr();scanf(%d,&num);if(/*/ ss(num)=1 /*/) printf(%d is a sushu.n,num); else printf(%d is not a sushu.n,num);3. 编写一个函数fun(n),计算n!,

4、并编写main函数测试,在main函数中输入num,调用fun(num),输出计算的结果。#include #include long fun(int n)long s=1; int i; for(i=1;i0) printf(%d!=%ld n,num,/*/ fun(num) /*/); else printf(input data error! n);4. 使用递归函数实现计算n!,并在main函数中调用。#include #include long fun(int n)long f;if(n=1|n=0) f=1; else f=n*fun(n-1); return f;void ma

5、in()int num; clrscr();scanf(%d,&num); if(num0) printf(%d!=%ld n,num,/*/ fun(num) /*/); else printf(input data error! n);5. 某数列为K(n)的定义为:用递归的方法求该数列的第6项k(6)。 1 n=1 k(n)= k(n-1)2 n为偶数 k(n-1)3 n为奇数#include #include int k(int n)int c; if(n=1) c=1; else if(n%2=0) c=k(n-1)*2; else c=k(n-1)*3; return c;void

6、 main()int m; clrscr(); scanf(%d,&m); if(m=1) printf(k(%d)=%dn,m,/*/ k(m) /*/); else printf(input data error!n);6. 计算s=(1!)+(1!+2!)+(1!+n!)。 n由用户输入,小于10。(设计:函数h1(n)计算n的阶乘;函数h2(m)计算1!+2!+m!的累加运算。在主函数中调用h2()函数,h2()函数中调用h1()函数来实现累加。)#include #include long h1(int n)long t=1;int i; for(i=1;i=n;i+) t=t*i;

7、 return t;long h2(int m)long s=0;int i; for(i=1;i=m;i+) s=s+h1(i); return s;void main()int k,num; long sum=0; clrscr(); scanf(%d,&num); for(k=1;k=num;k+) /*/ sum=sum+h2(k) /*/; printf(1!)+(1!+2!)+.+(1!+2!+.+%d!)=%ldn,num,/*/ sum /*/);7. 设计一个函数gcd(),计算两个自然数的最大公约数。在主函数中输入两个数,调用此函数,输出求得的结果。#include #in

8、clude int gcd(int m,int n)int r;r=m%n; while(r!=0) m=n;n=r;r=m%n; return n;void main()int m,n; clrscr(); scanf(%d,%d,&m,&n); printf(%dn,/*/ gcd(m,n) /*/); /*调用gcd()求m,n的最大公约数*/8. 在一个一维数组a中存放10个正整数, 输出其中所有的素数。(用数组元素作为函数的实际参数) #include #include int sushu(int x) int i,k=1; if(x=1) k=0; for(i=2;i=x/2;i+

9、) if(x%i=0) k=0; return(k); void main( ) int a10,i; clrscr(); for(i=0;i10;i+) scanf(%d,&ai); printf(sushu of array a are:n); for(i=0;i10;i+) if(/*/ sushu(ai) /*/) /*以数组元素作实参调用sushu()进行判断*/ printf(%5d,ai);printf(n); 9. 设计一个函数fc,其功能为统计数组中偶数的个数。编写main函数,用数组名num做为函数传递的参数调用fc函数,实现对数组num的统计,并输出统计结果。#inclu

10、de #include int fc(int a,int n)int i,c=0; for(i=0;in;i+) if(ai%2=0) c=c+1; return(c);void main()int i,num10; clrscr();for(i=0;i10;i+) scanf(%d,&numi); printf(oushu: %d n,/*/ fc(num,10) /*/);/*数组名和长度作实参调用fc()*/ printf(jishu: %d n,/*/ 10-fc(num,10) /*/);10. 设计一个函数float ave(int a10),计算数组a所有元素的平均值。(用数组名

11、作为函数的实际参数)#include #include float ave(int a10)int i,sum=a0 ; float aver; for(i=1;i10;i+) sum=sum+ai ; aver=1.0*sum/10 ; return(aver); void main() int i,score10; float aver; clrscr(); for(i=0;i10;i+) scanf(%d,&scorei); printf(n); aver=/*/ ave(score) /*/; /*以数组名作实参调用ave()*/ printf(average score is %5.

12、2fn,aver); 11. 用选择法对数组中10个整数按升序排序。(要求将排序功能设计成函数,数组名作为参数)#include #include void sort(int array,int n)int i,j,k,t; for(i=0;in-1;i+) k=i; for(j=i+1;jn;j+) if(arrayjarrayk) k=j; t=arrayk;arrayk=arrayi;arrayi=t; void main() int a10,i; clrscr(); printf(input the array:n); for(i=0;i10;i+) scanf(%d,&ai); /*

13、/ sort(a,10) /*/; /*以数组名和长度作实参调用sort()*/printf(output the array after ordered:n); for(i=0;i10;i+) printf(%5d,ai); printf(n);12. 设有一个34的矩阵,求出其中的最大元素。(要求:将计算最大值的功能设计成函数max_value(int array12),二维数组名作为参数)#include #include max_value(int array12)int i,max; max=array0; for(i=0;imax) max=arrayi; return(max);

14、void main()int a34=1,3,5,7,2,4,6,8,15,17,34,12; clrscr(); printf(max=%dn,/*/ max_value(a) /*/); /*以二维数组名作实参*/13. 设计一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。(课后习题P248_题7.9)#include #include #include void main() int inverse (char str ); /*函数原型声明*/char str100; clrscr();printf(Input string:n);gets(str);/*/ inv

15、erse(str) /*/; /*以数组名作实参调用*/printf(Output string after inverse:n);puts(str);int inverse(char st) /* 函数定义*/char t; int i,j;for(i=0,j=/*/ strlen(st) /*/;i/*/ strlen(st)/2 /*/;i+,j-) t=sti; sti=stj-1; stj-1=t; 14编写一个程序,在主函数中输入10个不等长的字符串。用另一个函数sort()对它们排序,函数sort()原型为:void sort(char (*s)10);,要求形参是指向由10个元

16、素组成的一维数组的行指针,然后在主函数输出这10个已排好的字符串。#include #include #include void main()void sort(char (*s)10); int i; char str1010; char (*p)10; clrscr(); printf(Input 10 strings:n); for(i=0;i10;i+) gets(stri); p=/*/ str /*/; /*让行指针变量指向二维字符数组第0行*/*/ sort(p) /*/; /*以行指针变量名作实参调用sort()*/ printf(Now, the sequence is:n)

17、; for(i=0;i=1;i-) for(j=0;j0 ) /*/ strcpy(t,sj); strcpy(sj,sj+1); strcpy(sj+1,t); /*/运行结果:Input 10 strings: ChinaJapanKoreaEgyptNepalAmericaGermanSudanItalyLibyaNow, the sequence is:AmericaChinaEgyptGermanItalyJapanKoreaLibyaNepalSudan15编写一个程序,在主函数中输入10个不等长的字符串。用另一个函数sort()对它们排序,函数sort()原型为:void sor

18、t(char *p10);,要求用指针数组处理,然后在主函数输出这10个已排好的字符串。#include #include #include void main()void sort(char *p); int i; char *s10,str1020; clrscr(); for(i=0;i10;i+) si=/*/ stri /*/; /*将第i个字符串的首地址赋予指针数组p的第i个元素*/ printf(Input 10 strings:n); for(i=0;i10;i+) gets(/*/ si /*/); /*/ sort(s) /*/; /*以指针数组名作实参调用sort()*/

19、 printf(Now, the sequence is:n); for(i=0;i=1;i-) for(j=0;j0) /*比较后交换字符串地址*/ /*/ temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; /*/运行情况如下:Input 10 strings:ChinaJapanYemenPakistanMexicoKoreaBrazilIcelandCanadaMongoliaNow, the sequence is:BrazilCanadaChinaIcelandJapanKoreaMexicoMongoliaPakistanYemen16编写一

20、个程序,用指向指针的指针的方法对5个字符串排序并输出。自定义函数sort()的原型为:void sort(char *p);。#include #include #include #define LINEMAX 20 /*定义字符串的最大长度*/void main()void sort(char *p); int i; char *p,*pstr5,str5LINEMAX; clrscr(); for(i=0;i5;i+) pstri=/*/ stri /*/; /*将第i个字符串首地址赋予指针数组pstr的第i个元素*/ printf(Input 5 strings:n); for(i=0;

21、i5;i+) gets(pstri); p=/*/ pstr /*/; /*让二级指针变量p指向指针数组第0号元素*/ /*/ sort(p) /*/; /*以二级指针变量名作实参调用sort()*/ printf(strings sorted:n); for(i=0;i5;i+) puts(pstri);void sort(char *p) /*比较交换法对5个字符串排序的函数*/int i,j; char *temp; for(i=0;i4;i+) for(j=i+1;j0) /*比较后交换字符串地址*/ /*/ temp=*(p+i); *(p+i)=*(p+j); *(p+j)=tem

22、p; /*/运行情况如下:Input 5 strings:ChinaAmericaIndiaPhilippinesCanadastrings sorted:AmericaCanadaChinaIndiaPhilippines17编写一个程序,用指向指针的指针的方法对n个整数排序并输出。要求写一个自定义函数sort(),其原型为:void sort(int *p,int n);n和整数在主函数中输入。排序后结果最后在主函数中输出。#include #include void main()void sort(int *p,int n); /*被调函数的原型声明 */ int i,n,data10,

23、*p,*pstr10; clrscr(); printf(Input n: ); scanf(%d,&n); for(i=0;in;i+) pstri=/*/ &datai /*/; /*将第i个整数的地址赋予指针数组pstr的第i个元素*/ printf(Input %d integer numbers:n,n); for(i=0;in;i+) scanf(%d,/*/ pstri /*/); /*用指针数组元素引用datai地址*/ p=/*/ pstr /*/; /*让二级指针变量p指向指针数组第0号元素*/ /*/ sort(p,n) /*/; /*以二级指针变量名和整数数组长度作实参

24、调用sort()*/ printf(Now, the sequence is:n); for(i=0;in;i+) printf(%d ,/*/ *pstri /*/); /*输出排序后的n个数*/ printf(n);void sort(int *p,int n) /*比较交换法对n个整数排序的函数*/int i,j,*temp; for(i=0;in-1;i+) for(j=i+1;j*(p+j) /*/) /*比较后交换整数的地址*/ /*/ temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; /*/运行情况如下;Input n:7Input 7 integ

25、er numbers:34 98 56 12 22 65 1Now, the sequence is: 1 12 22 34 56 65 98说明:data数组用来存放n个整数;pstr是指针数组,每一个元素指向data数组中的一个元素;p是指向指针的指针。请参考图10.7。图10.7(a)表示的是排序前的情况。图10.7(b)表示的是排序后的情况。在图中可以看到,data数组中数的次序没有变化,而pstr指针数组中的各元素的值(也就是它们的指向)改变了。18. 使用局部静态变量,求1到5的阶乘。#include #include int fac(int n)static int f=1; f=f*n; return f;void main()int i; clrscr(); for(i=1;i=5;i+) printf(%d!=%dn,/*/ i /*/,/*/ fac(i) /*/);

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

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