实验6 函数与编译预处理
院(系):信息科学与技术学院 班专级 业 学姓课程名称:高级语言程序设计 号 名 教师签名:
实验室 计算机号 实验名称 所用软件 实验成绩 6.1 实验目的
1.熟悉函数的一般形式以及函数的定义与调用。
2.掌握函数实参与形参的对应关系以及“值传递”的方法。 3.掌握自定义函数的编写。
4.掌握函数的嵌套调用和递归调用方法。
5.掌握全局变量、局部变量、动态变量、静态变量的概念和使用方法。
6.2 实验预习
1.函数的概念、定义格式、声明格式、调用规则及调用过程中数据传递方法过程,寒暑的嵌套调用和递归调用。
2.宏定义和文件包含等编译预处理指令。
6.3 实验任务
1.输入程序,分析程序的运行结果, #include \void xs() {
printf(“C 2.0\\n”); }
void main() {
printf(“Turbo_”); xs(); }
人工分析结果: 程序运行结果: 2.阅读程序,并将该程序改写成函数调用形式。 #include \void main() {
int data;
scanf(\
if(data%2!=0) printf(\ else printf(\
18
}
在提示/**********blank**********/下面填写合适的内容完成程序设计。定义函数int f(int x),判断x是否为奇数,若是则函数返回1,否则返回0。
#include \void main() {
int data,flag;
/**********blank**********/
________________________________________; /*填空位置1,声明函数*/ scanf(\ /**********blank**********/ flag=___________; /*填空位置2,调用函数,并将返回值赋给变量flag*/ if(flag==1) printf(\ else printf(\}
int f(int x) {
int z;
If(x%2!=0) z=1; else z=0; /**********blank**********/
____________________; /*填空位置3,带回返回值*/ }
3.实验指导书P38【上机题3(2)】。函数zdy(x,y,z)输出x、y、z的初始值及改变后的值。
#include \void main() { int x=2,y=3,z=0; void zdy(int x,int y,int z); printf(\ zdy(x,y,z); printf(\}
void zdy(int x,int y,int z) { printf(\ z=x+y; x=z*x; y=y*y; printf(\}
表6-1 实验结果记录表
人工分析结果
19
实验运行结果 (1) (2) (3) (4) (1) (2) (3) (4) 4.在提示/**********blank**********/下面填写合适的内容完成程序设计,实现从键盘输入x,求1~x的累加和的功能。
#include \float fun(int n) {
int i; float c;
/**********blank**********/ ____________________; for(i=1;i<=n;i++)
/**********blank**********/ ____________________; ____________________; }
void main() {
int x;
/**********blank**********/ ____________________; printf(“fun(%d)=%f”,x,fun(x)); }
5.有以下程序: #include”stdio.h” int a, b; void fun() {
a=100; b=200; }
void main( ) {
int a=5, b=7; fun();
printf(“%d%d \\n”, a,b); }
执行后的输出结果是 。
分析原因可知:___________________________________ 6.实验指导书P40【上机题5】。输入并运行以下程序,分析程序运行结果。 #include \
20
static int a=2; void main() { void p1(); void p2(); printf(\ p1(); p2(); printf(\}
void p1() { a=a*a; printf(\}
void p2() { a=a*a*a; printf(\}
表6-2 实验结果记录表
人工分析结果 (1) (2) (3) (4) (1) (2) (3) (4) 实验运行结果 7.实验指导书P41【上机题7】。输入并运行以下程序,分析程序运行结果。 #include \void main() { auto int i; void f(int j); for(i=1;i<=5;i++) f(i); }
void f(int j) { static a=100; auto k=1; ++k; printf(\ a+=10;
21
}
表6-3 实验结果记录表
人工分析结果 实验运行结果 8.阅读程序,写出人工分析结果并上机调试记录实验运行结果。 #include \#define M 3 void main() { int v; v=M*M;
printf(\}
(1)人工分析结果:_______________
实验运行结果:_______________
(2)若宏定义改为:#define M 3+2,程序运行结果为:_____________________ (3)若宏定义改为:#define M (3+2),程序运行结果为:____________________ 9.输入两数,要求编辑函数求该数的最大公约数。 #include”stdio.h”
int gcd(int m,int n) /*补充函数体部分*/ { }
void main() {
int m,n;
scanf(“%d,%d”,&m,&n(;
printf(“gcd=%d\\n”,gcd(m,n)); }
22