湖北理工学院c语言实验报告实验五
实验五 函数与编译预处理 实验课程名:高级语言 程序设计 专业班级: 软件工程 学号: 姓名: 高敏 实验时间: 11.25-12.2 实验地点: K4-208 指导教师: 刘天印 一、实验目的和要求 1. 掌握函数定义的方法; 2. 掌握函数实参与形参的对应关系以及“值传递”的方式; 3. 掌握函数的嵌调用和递归调用的方法; 4. 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。 5. 学习对多文件程序的编译和运行。 二、实验内容 1. 阅读下面程序,通过调试该程序,熟悉函数的调用方法及单步跟踪键 F7 和 F8 的不同。 #include void main() { void fun(int i, int j, int k);int x,y,z;x=y=z=6;fun(x,y,z);printf(“%x=%d;y=%d;z=%d\n“,x,y,z); } void fun(int i, int j, int k) { int t;t=(i+j+k)*2;printf(“t=%d\n“,t); } 解答: (1)源代码 #include void main() { void fun(int i, int j, int k);int x,y,z;x=y=z=6;fun(x,y,z);printf(“%x=%d;y=%d;z=%d\n“,x,y,z); } void fun(int i, int j, int k){ int t;t=(i+j+k)*2;printf(“t=%d\n“,t); } (2)运行结果: (3)运行结果分析:f7 是持行调试 f8 是选择调试的语句 2. 阅读下面程序,注意在调试时 F11 和 F10 的区别,还要注意函数调用过程中形参、实参的 关系。 #include void main(){ int x=10,y=20; void swap (int ,int); printf(“(1)in main :x=%d,y=%d\n“,x,y); swap(x,y); printf(“(4)in main :x=%d,y=%d\n“,x,y);} void swap (int m,int n){ int temp; printf(“(2)in main :m=%d,n=%d\n“,m,n); temp=m;m=n;n=temp; printf(“(3)in main :m=%d,n=%d\n“,m,n); } 解答: (1)源代码: #include void main(){ int x=10,y=20; void swap (int ,int); printf(“(1)in main :x=%d,y=%d\n“,x,y); swap(x,y); printf(“(4)in main :x=%d,y=%d\n“,x,y); } void swap (int m,int n){ int temp; printf(“(2)in main :m=%d,n=%d\n“,m,n); temp=m;m=n;n=temp; printf(“(3)in main :m=%d,n=%d\n“,m,n); } (2)运行结果:(3)运行结果分析: 3. 下面程序是实现求素数的,请填空完成该程序,并上机运行测试。 #include #include void main(){ int m;; /* 申明求素数函数 */ printf(“Please a data m=:“); scanf(“%d“,; /* 调用求素数函数 */} void prime(int n){ int i,k;k=sqrt(n);for(i=2;i=k+1) printf(“This is a prime number“); else printf(“This isn’t a prime number“); } 解答: (1)源代码: #include #include void main(){ int m;void prime(int n); /* 申明求素数函数 */ printf(“Please a data m=:“); scanf(“%d“,prime(m); /* 调用求素数函数 */} void prime(int n){ int i,k;k=sqrt(n);for(i=2;i=k+1) printf(“This is a prime number“); else printf(“This isn t a prime number“); } (2)运行结果: (3)运行结果分析: 4. 下面程序的功能是从键盘上输入的若干个数并求出最大值。请填空完成该程序。 #include void main( ) { int i; int s[10], max;/* Findmax()函数的申明 */; printf(“ 10 number : \n“); /* 输入 10个数据到 s 数组中 */; /* 调用 Findmax 函数 */; for (i=0;i void main( ) { int i; int s[10], max; /* Findmax()函数的申明 */int Findmax( int x[ ], int n ); printf(“ 10 number : \n“); /* 输入 10 个数据到 s 数组中 */for(i=0;i<10;i++)scanf(“%d“, /* 调用 Findmax 函数 */max=Findmax(s,10); for (i=0;i<10; i++) printf(“%4d“, s[i]); printf(“the max is %d \n“,max); } int Findmax( int x[ ], int n ) { int max,i;max=x[0];for ( i=1; i