实验06 函数、编译预处理11 下载本文

黔南民族师范学院数学系 C程序设计实验

实验6 函数、编译预处理

实验目的:

1.掌握函数的定义、函数的说明和调用方法;

2.掌握函数实参与形参的对应关系以及“值传递”的方式和函数值的正确返回;

3.掌握函数的嵌套调用和递归调用的方法; 4.掌握数组做函数参数的用法;

5.掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法; 6.掌握宏定义、文件包含处理和条件编译的方法; 7.学习对多文件程序的编译和运行。

实验内容:

1.程序阅读理解训练。

1) 输入并运行下面的程序,分析输出的结果。

#include void try(int,int,int); void main( ) {

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 void swap(int,int); void main( ) {

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 int a=3,b=5,c; void f(int b) {

c=a+b;

printf(\}

void main() {

int a=8; f(3);

printf(\}

定义一个函数f,并运用了局部变量与全局变量,结果如下:

4) 输入并运行下面的程序,分析输出的结果。 #include int f1(int n) {

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 isprime(int); void main( ) {

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 fun(int num) {

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 -