《2022年实验五函数与编译预处理定义 .pdf》由会员分享,可在线阅读,更多相关《2022年实验五函数与编译预处理定义 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验五函数与编译预处理实验课程名:高级语言程序设计(C)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求1. 掌握定义函数的方法。2. 掌握函数实参与形参的对应关系以及“ 值传递 ” 的方法。3. 掌握函数的嵌套调用和递归调用的方法。4. 掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。二、实验内容1、任务名称 : 阅读 c60101.c 程序,通过调试该程序,熟悉函数的调用方法及单步跟踪键F7和 F8 的不同。源代码:#include void main() void fun(int i, int j, int k); int x,y,z; x=y=z=6;
2、 fun(x,y,z); printf(%x=%d;y=%d;z=%dn,x,y,z); void fun(int i, int j, int k) int t; t=(i+j+k)*2; printf(t=%dn,t); 运行结果:(需要截图)运行结果分析:对于实参,在调用函数中对其进行定义时,不仅指明它的类型,而且系统还为其分配存储单元2、任务名称阅读 c60102.c 程序,注意在调试时F11 和 F10 的区别,还要注意函数调用过程中形参、实参的关系。源代码: #include void main() int x=10,y=20; void swap (int ,int); print
3、f(1)in main :x=%d,y=%dn,x,y); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - swap(x,y); printf(4)in main :x=%d,y=%dn,x,y); void swap (int m,int n) int temp; printf(2)in main :m=%d,n=%dn,m,n); temp=m;m=n;n=temp; printf(3)in main :m=%d,n=%d
4、n,m,n); 运行结果:(需要截图)运行结果分析:形参具有“用之则建,用完则撤”的特点3、任务名称 : 程序 c60103.c 是实现求素数的,请填空完成该程序,并上机运行测试。源代码: #include #include void main() int m; void prime(int); printf(Please input a data m=:); scanf(%d,&m); prime(m); printf(n); void prime(int n) int i,k; k=sqrt(n); for(i=2;i=k+1) printf(This is a prime number)
5、; else printf(This isnt a prime number); 运行结果:(需要截图)运行结果分析:素数函数4、任务名称 : 程序 c60104.c 的功能是从键盘上输入的若干个数并求出最大值。请填空完成该程序。源代码: #include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - void main( ) int i; int s10, max; int Findmax( int x, int n );
6、 printf(Input 10 number : n); for(i=0;i10;i+) scanf(%d,&si); max=Findmax(s,10); for (i=0;i10; i+) printf(%4d, si); printf(nthe max is %dn ,max); int Findmax( int x , int n ) int max,i; max=x0; for ( i=1; in; i+) if(maxxi) max=xi; return max; 运行结果:(需要截图)运行结果分析:练习形参是数组的函数申明、调用格式;复习数组的输入方法5、任务名称 : 程序 c
7、60105.c 的功能是从键盘上输入的若干个数按升序排序。请调试检查该程序中的错误,程序如下:源代码: #include void main( ) int i , k; void sort(int x,int n); float s100, j ; printf( Input number : n); for (i=0; scanf(%f,&j); i+) si=j; sort(s, i); for (k=0; ki; k+) printf( %f, sk); printf(n); void sort( int x, int n ) int i, j, temp,min; for ( i=0;
8、 in-1; i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - min=i; for(j=i+1;jn;j+) if ( xj xmin) min=j; if(min!=i) temp=xi; xi=xmin; xmin=temp; 运行结果:(需要截图)运行结果分析:一般形参数组在说明时不指定数组的长度,而仅给出类型、 数组名和一对方括号6、任务名称 : 编写程序,实现由主函数输入m 、n,按下述公式计算并输出nmC的
9、值。)!(!nmnmCnm源代码: #include void main( ) float fac(int n); int n,m; float C; printf( 输出两个整数: ); scanf(%d,%d,&n,&m); if(mn) C=fac(m)/(fac(n)*fac(m-n); printf(C=%f,C); else printf( 数据错误 ); printf(n); float fac(int n) float f; if(n0) printf(n0, 错误); else if (n=0|n=1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
10、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - f=1; else f=fac(n-1)*n; return(f); 运行结果:(需要截图)运行结果分析:主函数中调用三次即可求得7、任务名称 : 阅读如下递归程序c60107.c,其功能是什么?上机调试。源代码: #include void main( ) int m, k; void dtoo( int n ,int r ); printf(Pleae input the decimal number:); scanf(%d,&m); print
11、f( nPlease input a number in (2,8,16):); scanf(%d,&k); dtoo(m,k); void dtoo( int n ,int r ) if(n=r) dtoo(n/r,r); printf(%dn,n%r); 运行结果:(需要截图)运行结果分析:求余8、任务名称 : 预习 c60201.c 程序,写出预习结果,上机验证并写出分析源代码: # define LOW 10 # define HIGH 5 # define CHANGE 2 int i = LOW ; #include void main( ) int workover ( int
12、i ) , reset ( int i ); int i = HIGH ; reset ( i / 2) ; printf( i = %d n , i ); reset ( i = i / 2) ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - printf( i = %d n , i ); reset ( i / 2) ; printf( i = %d n , i ); workover ( i ); printf( i
13、= %d n , i ); int workover ( int i ) i = ( i % i ) * ( i * i ) / ( 2 * i ) + 4) ; printf( i = %d n , i ); return ( i ); int reset ( int i ) i = i = CHANGE ? HIGH : LOW ; return ( i ); 运行结果:(需要截图)运行结果分析:全局变量:在所函数外面定义的变量,其有效范围到整个源程序结尾;局部变量:在函数内部定义的变量或在函数头部定义的形参9、任务名称 : 上机调试 c60202.c 程序,观察静态局部变量在调用过程中的
14、变化源代码: #include void main( ) int i ; int f(int); for ( i = 1; i = 5; i +) printf( (%d):% dn, i,f(i); printf( n); int f ( int n) static int j = 1; j = j * n; return( j ); 运行结果:(需要截图)运行结果分析:全局寿命局部可见性初始化的特点名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - -
15、- - - - - - 10、任务名称 : . 预习程序c60203.c ,分析在程序运行前宏NUM 的值,并上机运行,比较一下的预习结果和实际结果。源代码: #include stdio.h #define N 2 #define M N+1 #define NUM (M+1)*M/2 main() int i,n=0; for (i=1; i(y)?(x):(y) #define PR printf #include void main() int a,b,c,d,x; a=5;b=10;x=200; c=POWER(a+b); x=x/POWER(a+b); d=MAX(a+6,b);
16、PR( c=%d,d=%d,x=%d n, c,d,x); 运行结果:(需要截图)运行结果分析:比较12、任务名称 : .编写:输入10 个学生的3 门课的成绩 , 分别用函数求: (1) 每个学生的平均分。(2) 每门课的平均分。(3) 按学生平均分降序排列输出学生信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - (4) 统计不及格学生,输出其相应信息。(5) 编写一菜单主函数,菜单内容包括以上4 部分。源代码: #in
17、clude #define N 10 #define M 4 void main() int scoreNM; char choice=1; void input(int scoreNM,int,int); void aver_stu(int scoreNM,int,int); void aver_cour(int scoreNM,int,int); void orde_aver(int scoreNM,int,int); void failed(int scoreNM,int,int); input(score,N,M); /*显示主菜单 */ while(choice!=0) printf
18、( =the Score Processing System =n); printf(1.print each students averagen); printf(2.print each courses averagen); printf(3.Order the students by students average decreasingly n); printf(4.print the failed student n); printf(0.Exit the system n); printf(=n); printf(Please choise (0-4): n); choice=ge
19、tchar(); switch(choice) case 1: aver_stu(score,N,M); break; case 2: aver_cour(score,N,M); break; case 3: orde_aver(score,N,M); break; case 4: failed(score,N,M); break; case 0: exit(0); default: printf(Choice Error,Please select again(0-4).); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名
20、师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - void input(float score103) int i,j; for(i=0;i10;i+) printf( 输入第 %d 个学生三门课的成绩: ,i+1); for(j=0;j3;j+) scanf(%f,scoreij); void aver_stu(float score103) int i,j; float sum; for(i=0;i10;i+) sum=0; for(j=0;j3;j+) sum+=scoreij; printf( 第%d 个学生的成绩为: ,i+1);
21、for(j=0;j3;j+) printf(%6.2f,scoreij); printf( 平均分为: %6.2fn,sum/3); void aver_cour(float score103) int i,j; float sum; for(i=0;i3;i+) sum=0; for(j=0;j10;j+) sum+=scoreji; printf( 第%d 门课的平均成绩为: %6.2fn,i+1,sum/10); void orde_aver(int score103) int i, j,temp; int a10; for(i=0; i10; i+) for(j=i; j10; j+)
22、 if(aiaj) temp = ai; ai = aj; aj = temp; void failed(float score103) int i,j,flag1,flag2; for(i=0;iN;i+) for(j=0;jM-1;j+) if(scoreij60) flag1=i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - flag2=j; printf( 不及格对应的是学生: %d 课程: %dn,flag1+1
23、,flag2+1); 运行结果:(需要截图)运行结果分析:我只能编成这样了,运行出错三、结论 (写本次实验的收获)1. 掌握定义函数的方法。2. 掌握函数实参与形参的对应关系以及“ 值传递 ” 的方法。3. 掌握函数的嵌套调用和递归调用的方法。4. 掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。说明:1、 每次实验报告后,以学生的学号+实验项目名作为该word 文件名保存。例如某学生学号为20080001,姓名为张三,本次实验名称是:实验一顺序结构程序设计,则本次实验报告的保存文件名为:01 张三实验一 .doc。 (禁止提交文件夹)2、 在每次试验完后内,学生以整个试验项目为一个完整文档,将本报告 (电子文档和纸质文档)按照(1)要求的文件名提交给实验指导教师。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -