程 序 调 试 过 程 实 习 小 结
31
实验六 模块化程序设计(1)
【实验目的】
1.掌握C语言中定义函数的方法及其调用方法。
2.掌握函数实参与形参的对应关系以及“值传递”与“地址传递”的方式,熟练掌握模块间数据传递的方式。
3.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法,深刻体会全局变量和局部变量、动态变量与静态变量的概念和使用方法,
【上机实习指导】
1.先静态阅读以下程序,然后上机运行程序,查看运行结果是否与你阅读的结果一致?不一致的原因何在?
# include “stdio.h” int a=3,b=5,c=2; int f(int a,int b) { a++;b--;c=a+b;
return(a+b+c); }
void main( ) { int a=4,k; k=f(a+2,b+1);
printf(“\\n %d,%d,%d,%d”,a,b,c,k); getchar(); }
2.静态分析以下程序的执行结果,然后上机运行程序,将分析结果与运行结果加以对比,从中领会静态局部变量的含义及用法。
# include “stdio.h” int f(int x)
{ static int f=0,y=0; if(f==0) y+=2*x;
else if(f==1)y+=3*x; else y+=4*x; f++;
return y; }
void main( )
{ printf(“\\n %d”,f(2)); printf(“\\n %d”,f(2)); printf(“\\n %d”,f(2)); getchar(); }
【自编程序上机】
32
1.求两整数的最公约数和最小公倍数。用一函数求最大公约数,用另一函数调用此函数求出最大公约数,并用求出的最大公约数求最小公倍数。
具体要求如下:
①用全局变量。将最大公约数与最小公倍数设为全局变量,在主函数中输出它们的值。 ②不用全局变量。最大公约数和最小公倍数由被调模块返回值。 2.计算并输出
具体要求如下:
①编制一个函数pq(n),返回n!值。
②编制主函数,由键盘输入m与n(m≥n≥O),调用(1)中的函数计算下列算式值。
③在主函数中,输入m与n之前要有提示,并检查输入数据的合理性,对于不合理的输入,应输出出错信息,不再进行计算。在函数pq(n)中也要检查n的合理性,当n<O时输出出错信息,不再进行计算。 ④分别输入(m,n)=(3,-1),(0,0),(8,3),(3,8),(8,8)运行该程序。
⑤画出模块pq()的流程图。
3.编写程序,要求找出满足下列条件的3位数:它是完全平方数,又有两位数字相同。如:144、676。 要求:设计一函数判断一个三位数是否为完全平方数,设计另一函数判断一个三位数中是否有两位数字相同,再在主函数中调用这两个函数,找出所有的满足这两个条件的三位数。
33
【实验报告】
实习时间: 实习地点: 实习机号: 具 体 实 验 内 容 34
程 序 调 试 过 程 实 习 小 结 35