上机实验九 函数

更新时间:2023-10-04 17:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上机实验九 函数

一、 目的要求:

1. 掌握普通函数的编写以及调用。

2. 掌握递归函数的编写;

3. 掌握数组元素和数组名作为函数参数的用法以及区别

二、实验内容:

第1题: 编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个整数从键盘输入。

参考代码: #include int main() { int gys(int x,int y); int gbs(int x,int y); int n,m; printf(\输入两个整数m,n,以,分隔:\ scanf(\ printf(\最大公约数=%d\\n最小公倍数=%d\\n\ } int gys(int x,int y)//这是利用辗转相除法求得 { int r; r=x%y; while(r!=0) { x=y; y=r; r=x%y; } return y; } int gbs(int x,int y)//两个数的积除以公约数就得到公倍数 { return x*y/gys(x,y); //函数的嵌套调用 } 第2题: 编写有两个整数参数的函数multiple,用该函数确定一对整数中第二个整数是否第一个整数的整数倍,如果是,返回1,否则返回0。再调用。

参考代码: #include void main()

{ int multiple(int n,int m); int n,m; printf(\输入两个整数,以,分隔\ scanf(\ if(multiple(n,m)) printf(\是%d的整数倍\ else printf(\不是%d的整数倍\ } int multiple(int n,int m) { if (m%n==0) return 1; else return 0; } 第3题: 编写一个判断素数的函数,是素数返回1,不是返回0,并在主函数中调用该函数,以输出一个数是不是素数的判断结果。

参考代码: #include #include int main() { int prime(int n); int n; printf(\输入一个整数\ scanf(\ if (prime(n)) //等价于 if (prime(n)==1) printf(\是素数\ else printf(\不是是素数\ } int prime(int n) { int i; for(i=2;i<=sqrt(n);i++) if (n%i==0) return 0; return 1; } 附加题:调用此函数,输出2~100所有的素数,每行输出五个。

参考代码:

#include #include int main() { int prime(int n); int n,gs=0; printf(\输入一个整数\ scanf(\ if (prime(n)){ //等价于 if (prime(n)==1) printf(\ gs+=1; if (gs%5==0)printf(“\\n”); } } int prime(int n) { int i; for(i=2;i<=sqrt(n);i++) if (n%i==0) return 0; return 1; }

第4题: 编写一个函数,利用参数传入一个3位数n,找到101~n间满足下列条件的数:他是完全平方数,又有两位数字相同,如144、676,函数返回这样的数的个数(提示,可以分别定义判断完全平方数和有两位数字相同的函数,再利用函数的调用实现)。

参考代码: #include #include int main() { void func(int n); int n; printf(\输入三位整数n\ scanf(\ func(n); } int f1(int n) //判断n是否是完全平方数 { int t; //注意t的数据类型, t=sqrt(n); //求平方根后如果有小数部分,会在赋值时舍去 if (t*t==n) return 1;

else return 0; } int f2(int n) //判断n中是否有两位相同 { int g,s,b; g=n; s=n/10; b=n/100; if (g!=s && g!=b && s!=b) //a,b,c两两不等 return 0; else return 1; } void func(int n) { int i,k=0; for(i=101;i<=n;i++) if(f1(i)&&f2(i)) {printf(\ if(k==0)printf(“NONE!”); } 第5题: 该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。

要求:下面习题中\是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。 参考代码:

#include void Dec2Bin(int m) { int bin[32],j; for(j=0;m!=0;j++) { bin[j]= ______1______;//m%2 m=m/2; } for(;j!=0;j--) printf(\} void main(){ int n; scanf(\

第6题: 设计一个通用的整型数组由大到小的排序函数(用数组名作函数参数),然后调用。

//注意此题在函数定义中参数的数组的写法,以及调用的数组的写法。 参考答案:

#include void sort(int a[],int n) { int i,j,t,minpos; for(i=0;ia[minpos]) minpos=j; if(minpos!=i) { } t=a[minpos]; a[minpos]=a[i]; a[i]=t; } } void main() { int b[10]={2,4,6,8,10,12,14,16,18,20}; int c[5]={1,3,5,7,9}; int i; sort(b,10); sort(c,5); for(i=0;i<10;i++) { printf(\ } printf(\ for(i=0;i<5;i++) { printf(\ } }

printf(\第7题:

第8题:

{

课后题P202 8.6、8.7。

写出程序运行结果(等级考试试题)。

int f1(int n)

if(n==1)return 1;

else return f1(n-1)+n;

本文来源:https://www.bwwdw.com/article/jpad.html

Top