还剩4页未读,继续阅读
文本内容:
实验六用函数实现模块化程序设计【实验目的】
1.函数编译程序的初步应用;
2.多个小函数的同时应用;
3.函数的递归调用;
4.数组作函数的参数【实验内容】实验一最大公约数和最小公倍数的求解,源程序如下#includestdio.hintf1intxinty{ifx%y!=0returnf1yx%y;elsereturny;}intf2intxinty{intri;ifxy{r=x;x=y;y=r;}fori=1;i=y;i++ifi*x%y==0{returni*x;break;}}int__in{intmn;printf请输入两个整数:;scanf%d%dmn;printf%d与%d的最大公约数是:%d\nmnf1mn;printf%d与%d的最小公倍数是:%d\nmnf2mn;return0;}结论结果正确实验二方程根的求解,源程序如下#includestdio.h#include__th.hdoublef1floatmfloatnfloatq{doublerx1x2;r=n*n-4*m*q;ifm==0x1=-q/nprintf方程有唯一实根:%lf\nx1;elsex1=-n+sqrtr/2*mx2=-n-sqrtr/2*mprintf方程有两个不等的实根:%lf\t%lf\nx1x2;return0;}doublef2floatmfloatnfloatq{doublex1;ifn!=0x1=-n/2*mprintf方程有两个相等实根:%lf\nx1;elseifq==0printf方程的根为任意数\n;elseprintf方程无解\n;return0;}doublef3floatmfloatnfloatq{doublerpd;r=n*n-4*m*q;p=sqrt-r/2*md=-n/2*m;printf方程有两个复根:;printf%lf+%lfi\tdp;printf%lf-%lfi\ndp;return0;}int__in{floatrabc;printf请输入方程的系数:;scanf%f%f%fabc;r=b*b-4*a*c;ifr0f1abc;ifr==0f2abc;ifr0f3abc;return0;}结论结果正确实验三回文的判断和输出及统计其个数,源程序如下#includestdio.h#includestdio.h#defineN100charfcharc[]{intijn;fori=0n=0;c[i]!=\0;i++n++;fori=0j=n-1;ij;i++j--ifc[i]!=c[j]return0;return1;}int__in{intij;chara
[5][N];printf请输入五个字符串:\n;fori=0;i5;i++getsa[i];printf其中回文是:\n;fori=0j=0;i5;i++iffa[i]==1{printf%s\na[i];j++;}printf回文有%d个\nj;return0;}结论结果正确实验四数组的降序输出,源程序如下#includestdio.h#defineN10voidsortinta[]intn{intijt;fori=1;in;i++forj=0;jn-i;j++ifa[j]a[j+1]t=a[j]a[j]=a[j+1]a[j+1]=t;}void__in{intia[N];printf情输入整数:;fori=0;i8;i++scanf%da[i];printf\n;sorta8;printf数组降序为:;fori=0;i8;i++printf%da[i];printf\n;}结论结果正确实验五完数的输出及其累加和,源程序如下#includestdio.hintfintn{intik=0;fori=1;in;i++ifn%i==0k+=i;ifn==kreturn1;elsereturn0;}int__in{intsum=0n;printf完数有:;forn=2;n=1000;n++iffn==1{printf%dn;sum+=n;}printf\n所有完数的和为:sum=%d\nsum;return0;}结论结果正确【实验小结】
1.函数值回时,要看其中表示几条语句;
2.注意“void”函数的结束;
3.数组作函数的参数时,数组在函数中的表示。