黔南民族师范学院数学系 C程序设计实验
实验6 函数、编译预处理
实验目的:
1.掌握函数的定义、函数的说明和调用方法;
2.掌握函数实参与形参的对应关系以及“值传递”的方式和函数值的正确返回;
3.掌握函数的嵌套调用和递归调用的方法; 4.掌握数组做函数参数的用法;
5.掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法; 6.掌握宏定义、文件包含处理和条件编译的方法; 7.学习对多文件程序的编译和运行。
实验内容:
1.程序阅读理解训练。
1) 输入并运行下面的程序,分析输出的结果。
#include
int x=2,y=3,z=4;
printf(\ try(x,y,z);
printf(\}
void try(int x,int y,int z) {
printf(\ z=x+y; x=x*x; y=y*y;
printf(\}
该程序中定义了一个try函数,最后按此规律输出:z=x+y;x=x*x;y=y*y; 运行结果如下:
班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 1 -
黔南民族师范学院数学系 C程序设计实验
2) 输入并运行下面的程序,分析输出的结果。
#include
int x=10,y=20;
printf(\ y=%d\\n\ swap(x,y);
printf(\ y=%d\\n\}
void swap(int a,int b) {
int t;
printf(\ b=%d\\n\ t=a; a=b; b=t;
printf(\ b=%d\\n\}
定义swap函数来交换x,y的值,并显示每一步每个变量的变化。运行结果如下:
3) 输入并运行下面的程序,分析输出的结果。
班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 2 -
黔南民族师范学院数学系 C程序设计实验
#include
c=a+b;
printf(\}
void main() {
int a=8; f(3);
printf(\}
定义一个函数f,并运用了局部变量与全局变量,结果如下:
4) 输入并运行下面的程序,分析输出的结果。 #include
static int f=1; f=f*n; return(f); }
void main() {
int i;
for(i=1;i<=4;i++)
printf(\ printf(\}
定义阶乘函数f,并显示1—4的阶乘
班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 3 -
黔南民族师范学院数学系 C程序设计实验
5) 输入并运行下面的程序,说明程序及其ispring函数的功能。运行程序时,分别输入数据:17、34、2,1、0,检查结果是否正确,如果结果不正确,请修改。(熟练掌握该程序)
#include
int x;
printf(\ scanf(\ if(isprime(x))
printf(\ else
printf(\}
int isprime(int a) {
int i;
for(i=2;i<=sqrt((double)a);i++) if(a%i==0) return 0; return 1; }
该函数是检验一个数是不是素数的函数,运行如下:
6) 输入并运行下面的程序,说明函数fun的功能。 #include
int k=1;
班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 4 -
黔南民族师范学院数学系 C程序设计实验
do { k*=num; num/=10; }
while(num); return k; }
void main() {
int n=26;
printf(\}
思考:如果将函数fun中的变量k初始化为0,并将语句“k*=num;”改为“k+=num;”,函数fun的功能变为什么?
7) 输入并运行下面的程序,说明函数fun的功能。(熟练掌握该程序) #include
void dtob(int n) {
int i; if(n>1) {
i=n%2;
dtob(n/2); } else
i=n;
printf(\}
班级: 13级数学系数应(2)班 姓名:韩侣 学号:13050152061 - 5 -