实验九 函数与预处理
函数与编译预处理

函数与编译预处理一、函数的定义1、无参函数的定义形式类型标识符函数名()第一行:函数首部{声明部分语句 { }包含的:函数体}例1:void fun( ){printf(“Hello!\n”);}2、有参函数的定义形式类型标识符函数名(形式参数列表){声明部分语句}例2:int max(int x, int y){ int z;z = x > y ? x : y;return (z);}注:“类型标识符”是指函数值的类型。
若省略,默认为int。
二、函数的调用无参函数:函数名()有参函数:函数名(实际参数列表)例3:在main函数中调用fun和max函数void main( ){int m,n,t;scanf(“%d,%d”,&m,&n);t=max(m,n); /*调用max函数*/fun(); /*调用fun函数*/printf(“max number is %d\n”,t);}注:1、C语言程序由函数构成,其中有且仅有一个main函数,各函数书写的先后顺序任意。
2、函数的定义是相互独立的,不能在一个函数的内部定义另一个函数,即函数的定义不能嵌套。
3、程序从main函数开始执行,其他函数被调用时执行,调用完后回到主调函数,最后在main函数中结束整个程序。
三、函数的声明在主调函数中一般要对被调函数进行声明。
声明的作用是告知编译器被调函数的函数名、函数类型、参数个数和参数类型,方便进行语法检查。
声明的形式:类型标识符函数名(形式参数列表);即:函数首部加分号例如:void fun( );int max(int x, int y);其中参数名称可省略,如:int max(int , int );Turbo C在以下两种情况中,可省略函数声明:1、被调函数定义在主调函数前。
2、被调函数类型为int、char。
四、参数的传递1、形参是变量,但函数被调用时才被分配内存,调用完毕,所占内存将被释放。
实验五_函数与编译预处理

《C语言程序设计》实验报告实验五函数与编译预处理学号姓名一、实验目的1、掌握函数定义及调用的方法,正确理解函数调用时实参和形参的对应关系;2、掌握并正确使用数组作为函数参数;3、掌握函数的嵌套调用和递归调用的方法;4、理解变量的作用域和生存期;5、掌握宏定义、文件包含。
二、实验内容1、分析下面的程序并上机运行程序,要求写出3组以上程序的运行结果。
#include <stdio.h>int fun(int k){int result=1,i;for(i=1;i<=k;i++){result=result*i;}return result;}void main(){int n;printf("Input n please(1<=n<=10)");scanf("%d",&n);printf("%d!=%d\n",n,fun(n));}『运行结果:』2、编写程序,输出2~n之间的所有素数,n由键盘输入。
要求判断素数的过程要写在函数中,由主函数调用实现,并写出2组以上程序运行结果。
程序代码:『运行结果:』3、编程实现输入8个学生某门功课的成绩,用函数求出平均分,并在主函数中输出平均分以及高于平均分的同学的成绩。
并写出2组以上程序运行结果。
程序代码:运行结果:』三、问题讨论1、举例说明自动变量和静态变量的区别。
四、实验总结1 总结本次实验完成情况、相关知识掌握情况2 总结本次实验编辑、编译、连接、运行所取得的经验3 分析本次实验出现的主要错误最直接原因。
L4_实验四_函数与预处理

在运行时,分别指定盘子数为3,5,7。并统计,在不同盘子数的情况下,移动盘子多少次。请试一下如果盘子数为16,在你所用的计算机上要运行多少时间。设想一下,如果盘子数为64,会出现什么情况。
4.课本P133,第14题。
5.课本P133,第16题。
通过这个简单的程序,初步掌握处理包含多文件的程序的方法。
三、实验结果
实验报告
实验名称函数与预处理
实验项目
专业班级姓名学号
指导教师成绩日期
一、实验目的
1.熟悉定义函数的方法、函数实参与形参的对应关系以及“值传递”的方式。
2.熟悉函数的嵌套调用和递归调用的方ห้องสมุดไป่ตู้。
3.熟悉全局变量、局部变量概念和使用方法。
4.熟悉编译预处理的应用。
5.掌握多文件的程序的编译和运行的方法。
二、实验内容和步骤
1.课本P132,第3题。
该程序应当准备以下测试数据:17,34,2,1,0。分别运行并检查结果是否正确。
2.写一个函数验证哥德巴赫猜想,一个不小于6的偶数可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7……在主函数中输入一个不小于6的偶数n,然后调用函数gotbaha,在gotbaha函数中再调用prime函数,prime函数的作用是判别一个数是否为素数。在gotbaha函数中输入以下形式的结果:34=3+31。运行时,输入该偶数的值为6,12,20,458,分析运行结果。如果输入2,4,会出现什么情况?修改程序,使之能输出相应的信息。
函数与编译预处理实验报告

函数与编译预处理实验报告一、实验目的本次实验旨在通过编写程序,掌握函数与编译预处理的相关知识,了解函数的调用和返回机制以及编译预处理的作用。
二、实验环境操作系统:Windows 10开发工具:Code::Blocks 17.12编程语言:C语言三、实验内容1. 函数的定义和调用函数是C语言中的一个重要概念,它可以将一段代码封装成一个功能单元,方便代码重用和维护。
在本次实验中,我们需要掌握如何定义函数,并且了解函数的调用过程。
在C语言中,函数通常由以下几部分组成:返回类型函数名(参数列表){函数体;return 返回值;}其中,返回类型指定了函数返回值的类型;函数名是唯一标识符,用于调用该函数;参数列表指定了该函数需要传入的参数;函数体是一段具体的代码逻辑;return语句则将结果返回给调用者。
在调用一个函数时,我们需要按照以下格式进行:返回值变量 = 函数名(参数列表);其中,返回值变量接收该函数返回的结果;参数列表则按照定义顺序传入相应参数。
如果该函数不需要传入任何参数,则可以省略参数列表。
2. 函数指针除了直接调用一个已经定义好的函数外,我们还可以使用函数指针来间接调用一个函数。
函数指针和普通指针类似,它指向的是一个函数的地址。
通过函数指针,我们可以在运行时动态地确定需要调用哪个函数。
在C语言中,声明一个函数指针的方法如下:返回类型 (*指针变量名)(参数列表);其中,括号中的*表示这是一个指针变量;指针变量名则是该变量的标识符;参数列表和返回类型与被指向的函数相同。
通过以下代码可以将一个已经定义好的函数赋值给一个函数指针:int max(int a, int b){return a > b ? a : b;}int (*p)(int, int) = max;在上述代码中,p就是一个用于存储max函数地址的函数指针。
3. 编译预处理编译预处理是C语言中一项重要的功能,在编译过程中会对源代码进行一些预处理操作。
c语言实验报告——标准库函数使用与编译预处理

printf("%d和%d的最最大公约数和最小公倍数分别为%d和%d\n",a,b,zdgys(a,b),zxgbs(a,b));
printf("\n请继续输入或者关闭\n");
gotoloop;
}
//b.c求两个数最大公约数
intmax(inta,intb);
}
//c.c求两个数最小公倍数
intmin(inta,intb);
intzxgbs(inta,intb);
intzxgbs(inta,intb)
{
intj,k,i=1;
k=i*max(a,b);
while(1)
{
j=k*i;
if(j%a==0&&j%b==0)
break;
i++;
}
returnj;
}
2.掌握建立和调试多源程序文件程序的方法;
3.掌握C程序中函数的定义和调用方式,理解函数声明的概念,掌握函数声明的方法
二、实验项目内容(实验题目)
求2个数的最大公约数和最小公倍数。要求用函数实现,并且将主函数和这两个函数分别存入3个文件a.cpp ,b.cpp ,c.cpp中。用文件包含的方法实现多文件编译链接。
3.包含函数原来可以不用是正规的可以运行的c,只要是所需的正确的函数即可。
3、源程序(实验过程或算法)
//a.c主函数
#include"stdio.h"
#include"12核技术02班20123857刘春波03b.c"
#include"12核技术02班20123857刘春波03c.c"
第5章 函数与预处理PPT课件

容称为函数体。在函数体中也有类型说明, 这是对函数体内部所
6
用到的变量的类型说明。【例4.1】中的printst(),print_hello( ) 函数
0
都是无参函数。在很多情况下都不要求无参函数有返回值,因此
环 境
可以不写类型说明符。
返回本节目录
13
)
5.2.1 函数的定义
《 2.有参函数的一般形式
言 程
序 2. C程序实例(2)
设 计 》
(Visual C++ .
6
0
环 境
返回本节6目录
)
5.1.1 C程序实例(1)
《 1.C程序实例1
C
语
【例5.1】简单的函数调用的例子
言
/*功能:定义两个输出函数并在主函数中调用*/
程
/*程序代码文件名:l5_1.cpp/
序
main()
设 计 》
{ printst();
计
(5) 内联函数和重载函数
》
(6)作用域
(7)变量及函数的存储类型
(8) 编译预处理
(Visual C++ .
6
0 环 境 )
返回本书目录
3
第5章 函数与预处理
《
C
语
5.1 函数应用的C程序实例
言
5.2 函数的定义
程 序
5.3 函数调用
设
5.4 函数的嵌套调用和递归调用
计 》
5.5内联函数和重载函数
程
int max(int n1, int n2)
/*定义一个函数max()*/
序
{ return (n1>n2?n1:n2); }
实验九 函数

实验九函数一、实验学时 2学时二、实验目的(一)掌握函数的定义、函数类型、函数参数、函数调用的基本概念;(二)掌握变量名作函数参数的程序设计方法;(三)掌握函数的嵌套调用的方法;(四)掌握数组元素作函数参数;(五)掌握数组名作函数参数的程序设计方法;(六)掌握字符数组作函数参数的程序设计方法;(七)了解全局变量、局部变量的概念和使用方法;(八)使用功能键F7单步执行,使用Ctrl+F7观察变量的值,学会程序调试的基本方法。
三、预习要求(一)函数的定义、函数类型、函数参数、函数调用的基本概念;(二)函数实参与形参的对应关系以及参数的传递;(三)以变量名和数组名作函数参数时的使用方法;(四)全局变量、局部变量的概念和使用方法。
四、实验内容(一)下面程序的功能是:根据输入的整数x和n,利用函数fact实现求x n。
例如:输入:2,3 输出23=8请在程序中的横线上填入正确的内容,将程序补充完整。
/* c9-1.c *//*利用函数fact实现求x的n次方*/#include "stdio.h"void main( ){ long int fact(long x,long n) ; /*声明fact函数*/ long int x ;long int n;printf("please enter X and N(>=0): ");scanf("%ld,%ld", &x, &n );printf("%ld,%ld=%ld",x,n, ); /*调用fact函数 */}long int fact(long int x, long int n) /*定义fact函数求xn */{ long int i,s;; /*求累积变量的初始化*/ if (n= =0) return 0;for(i=1; i<=n; i++) /*用循环实现x n*/s=s*x;; /*返回结果x n */}(二) 下面程序的功能是:计算)!!*(!n m n m C n m -=的值。
C语言函数及预处理

x 2 2
y33
传统风格:
函数类型 函数名(形参表) 形参类型说明 { 说明部分 语句部分 }
例 有参函数(传统风格) int max(x,y) int x,y; { int z; z=x>y?x:y; return(z); }
三、函数说明
对被调用函数要求: 必须是已存在的函数 库函数: #include <*.h> 用户自定义函数: 函数类型说明 函数说明 一般形式:
一、函数分类
从用户角度
标准函数(库函数):由系统提供 用户自定义函数
从函数形式
无参函数 有参函数
使用库函数应注意: 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件
二、函数的定义
一般格式
现代风格:
函数返回值类型 缺省int型 无返回值void
3.在被定义的函数中,必须指定形参的类型。 4.实参与形参的类型应一致。例9.4中实参和形参都是整型,这是 合法的、正确的。如果实参为整型,形参为实型,或者相反,则发 生“类型不匹配”的错误。字符型与整型可以互相通用。 5.C语言规定,实参变量对形参变量的传递是“值传递 ”,即单 向传递。在内存中,实参单元与形参单元是不同的 单元。如图所示。 a 2 b3 3 a 2 b 3
例 函数说明举例 main() float sum(float a*/ , float b) /*输入两个实型值,求其和。 { {return(a+b);} float a,b; main() int c; {float sum(float a,float b); /* 函数说明,也可写成 float sum(); main() scanf("%f,%f",&a,&b); 被调函数出现在主调函数 之前,不必函数说明 */ { c=max(a,b); float a,b,c; 或float sum(float,float); printf("Input is a,b="); %d\n",c); float a,b,c; printf("Max }scanf("%f,%f",&a,&b); printf("Input a,b="); max(float c=sum(a,b); x, float /* 调用函数 y) */ scanf("%f,%f",&a,&b); { float z; c=sum(a,b); /* 调用函数 */ printf("a=%6.2f,b=%6.2f,c=%6.2 z=x>y?x:y; f\n",a,b,c); return(z); printf("a=%6.2f,b=%6.2f,c=%6.2f\n",a,b,c); int型函数可不作函 } } }
函数与编译预处理实验报告

函数与编译预处理实验报告1. 背景函数与编译预处理是计算机编程中非常重要的两个概念,它们对于程序的结构和执行效率都起着关键作用。
函数是一段可重复使用的代码块,通过将任务划分为多个函数可以提高代码的可读性与维护性。
而编译预处理则是在编译过程中对源代码进行预处理,包括宏展开、文件包含和条件编译等操作。
本次实验通过设计并实现一段使用函数和编译预处理的程序,旨在加深对函数和编译预处理的理解,掌握它们的基本概念和使用方法,并通过实践感受它们对程序结构和性能的影响。
2. 分析2.1 需求在实验中,我们需要设计一个问题,通过函数和编译预处理来实现对问题的解决。
首先,我们需要确定问题的具体要求和输入输出规范。
只有明确了问题的需求,才能设计出合适的函数和合理的编译预处理指令。
2.2 设计根据实验要求,我们可以设计一个简单的问题:计算一个整数的平方。
用户输入一个整数,程序输出该整数的平方。
这是一个简单的计算问题,可以通过函数和编译预处理来实现。
我们可以设计一个函数calculate_square用于计算平方,并通过编译预处理指令来实现输入输出的控制。
具体的实现细节如下:#include <stdio.h>// 函数:计算平方int calculate_square(int x) {return x * x;}// 编译预处理指令:实现输入输出控制#define ENABLE_INPUT_OUTPUT#ifdef ENABLE_INPUT_OUTPUTint main() {int num;printf("Please enter an integer: ");scanf("%d", &num);int result = calculate_square(num);printf("The square of %d is %d.\n", num, result);return 0;}#endif上述代码中,我们定义了一个函数calculate_square用于计算整数的平方。
《C语言程序设计》实验报告(实验1-11) 2013.3

《C语言程序设计》实验报告2012~2013学年第二学期班级姓名学号指导教师实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。
二、预习内容:教材《C语言程序设计教程》第1章。
三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序:#include <stdio.h>int main( ){printf("This is a C program.\n");return 0;}2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。
#include <stdio.h>int main( ){int a,b,suma=3;b=4;sun=a+b;print(“%d+%d=%d\n”,a,b,sum);return 0;}四、实验结果:1. 运行结果(或截图):2. (1) 改正后的源程序:(2) 运行结果(或截图):五、思考题:1. 一个C程序上机的步骤有哪些?答:2. 组成C程序的基本单位是函数,一个函数包括哪几个部分?答:成绩指导教师签名实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。
二、预习内容:教材《C语言程序设计教程》第2章。
三、实验内容:1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。
C语言程序设计实验教案

C语言程序设计实验教案一、实验目的1. 掌握C语言的基本语法和编程技巧。
2. 培养学生的逻辑思维能力和问题解决能力。
3. 熟悉开发环境,学会调试和运行C程序。
二、实验内容1. C语言基本数据类型和运算符。
2. 顺序结构程序设计。
3. 分支结构程序设计。
4. 循环结构程序设计。
5. 函数的定义和调用。
三、实验要求1. 每个实验项目都需要编写相应的C程序。
2. 每个程序都需要包含注释,说明程序的功能和关键代码。
3. 每个程序都需要经过调试,确保程序的正确性。
4. 提交实验报告,包括程序代码、运行结果和实验心得。
四、实验步骤1. 打开开发环境,新建C语言文件。
2. 根据实验内容,编写相应的C程序。
3. 进行代码调试,找出并修正错误。
4. 运行程序,观察并分析运行结果。
五、实验时长1. 实验一:C语言基本数据类型和运算符(1学时)2. 实验二:顺序结构程序设计(1学时)3. 实验三:分支结构程序设计(1学时)4. 实验四:循环结构程序设计(1学时)5. 实验五:函数的定义和调用(1学时)六、实验六:数组和字符串操作1. 目的:掌握一维和多维数组的声明、初始化和使用。
学习字符串的基本操作和处理。
2. 内容:数组的声明和访问。
二维数组的操作。
字符串的复制、连接和长度计算。
3. 要求:编写程序实现数组的排序(例如冒泡排序)。
编写程序实现字符串的逆序。
4. 步骤:设计数组排序的算法,并编写相应程序。
设计字符串逆序的算法,并编写相应程序。
调试程序,确保功能正确。
5. 时长:1学时七、实验七:指针理解指针的概念和作用。
掌握指针的基本操作,如赋值、解引用和指针算术。
2. 内容:指针的声明和初始化。
指针与数组。
指针与函数。
3. 要求:编写程序利用指针操作数组元素。
编写程序实现指针作为函数参数传递。
4. 步骤:编写程序演示指针与数组的操作。
编写程序演示指针作为函数参数的使用。
调试程序,确保指针的使用正确无误。
5. 时长:1学时八、实验八:结构体和文件操作1. 目的:学习结构体的定义和使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验九函数和预处理实验时间:2010年12月3日【实验目的】1、掌握函数的定义、说明、调用方法,理解函数的返回值;2、掌握函数实参、形参的对应关系和传递规则;3、掌握函数的嵌套调用和递归调用的方法和结构形式;4、掌握全局变量、局部变量、动态变量、静态变量的区别和用法;5、理解内部函数和外部函数的含义,掌握内部函数和外部函数的定义和声明;6、掌握宏定义的方法,掌握文件包含处理的方法,掌握条件编译的方法。
【实验内容】1、函数的定义和调用;2、函数的递归调用和嵌套调用;3、变量的作用域和存储类型、内部函数和外部函数;4、编译预处理。
【实验步骤】一、在E或F盘上建立以自己的学号命名的文件夹。
二、上机验证与分析题:1、分析以下源程序中,函数的定义与说明格式,并上机运行验证结果:/*文件名:ex9_1.c*//*功能:定义一个求两个整数的和的函数,并在主函数中调用*/#include <stdio.h>#include<conio.h>void main(){float sum(float a,float b); /*函数说明*/float x,y;printf("请输入两个数\n");scanf("%f%f",&x,&y);printf("两个数的和是:%f\n",sum(x,y));getch(); /*使程序暂停,按任一键继续*/}float sum(float a,float b)/*定义一个函数sum()*/{float c;c=a+b;return(c);}2、程序的调试,常见错误分析:上题中,sum函数的功能是求两个参数的和,并将求和的结果返回到主函数。
试进行下面的调试,观察所出现的错误。
①将main()函数中的函数声明去掉,编译时出现什么信息,产生的原因是什么?②将main()函数最后的“}”去掉,编译时出现什么信息,产生原因是什么?③将sum()函数的参数改为“float a ,b ”,编译时出现什么信息,产生原因是什么?④将main()函数中的函数声明语句末尾的“;”去掉,编译时出现什么信息,产生原因是什么?⑤、若将函数调用语句中的参数y去掉,编译时出现什么信息;产生原因是什么?3、跟踪调试以下源程,注意函数调用的过程中形参、实参的关系。
记录并分析结果;将形参a, b对应改为x,y,使得与实参变量同名,记录并分析结果。
/*文件名:ex9_2.c*/int a ,b;#include <stdio.h>void main(){int x=2,y=5;int swap(int,int);printf("(1) in main: x=%d,y=%d\n",x,y);swap(x,y);printf("(4) in main: x=%d,y=%d\n",x,y);printf("(5) a=%d,b=%d\n",a,b);}swap(int a,int b){int t;printf("(2) in swap: a=%d,b=%d\n",a,b);t=a;a=b;b=t;printf("(3) in swap: a=%d,b=%d\n",a,b);}4、分析以下源程,并上机验证。
此程序是输入长方体的长、宽、高l、w、h。
求长方体的体积及三个面的面积。
/*文件名:ex9_3.c*/#include <stdio.h>int s1,s2,s3;int vs(int a,int b,int c);void main(){int v,l,w,h;printf("请输入长方体的长、宽、高:\n");scanf("%d%d%d",&l,&w,&h);v=vs(l,w,h);printf("v=%d\n",v);printf("s1=%d\n",s1);printf("s2=%d\n",s2);printf("s3=%d\n",s3);}int vs(int a,int b,int c){int v;v=a*b*c;s1=a*b;s2=b*c;s3=a*c;return v;}5、分析以下源程序,若输入2,3,上机验证程序的运行结果,分析函数嵌套调用的执行过程。
/*文件名:ex9_4.c*/#include <stdio.h>long sum(int a ,int b);long factorial(int n);void main(){int n1,n2;long a;printf("请输入两个整数:\n");scanf("%d%d",&n1,&n2);a=sum(n1,n2);printf("a=%ld",a);}long sum(int a,int b){long c1,c2;c1=factorial(a);c2=factorial(b);return(c1+c2);}long factorial(int n){long rtn=1;int i;for(i=1;i<=n;i++)rtn*=i;return(rtn);}6、运行以下程序,写出运行结果,注意静态局部变量和动态局部变量的特点。
/*文件名:ex9_5.c*/#include <stdio.h>int fun(){auto a=0;int b=0;static c=0;extern d; /* 因为变量d定义在后,需对变量d进行声明 */ a++;b++;c++;return a+b+c+d;}int d=10; /* 定义变量d为全局变量 */void main(){int i;int d=8;for(i=1;i<=3;i++)printf("第%d次调用fun()函数的值:%d,变量d的值:%d\n",i,fun(),d);}三、编程题:1、编程输出如下图形*************************并将上面的结果定义为printstar 函数,使用函数输出如下图形***************************************************************************并将源程序以ex9_6.c保存在自己的文件夹内。
2、用递归函数解决猴子吃桃桃问题。
问题描述如下:有一堆桃子不知其数,猴子每天吃前一天的一半多一个,到第十天只剩一个,试编程求这堆桃子的个数,并将源程序以ex9_7.c保存在自己的文件夹内。
3、通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“答案正确!”,否则显示“答案错误!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。
将源程序以ex9_8.c保存在自己的文件夹内。
4、建立工程文件ex9,在其中新建源文件ex9_9.cpp和ex9_10.cpp.按要求输入以下程序,注意外部变量的定义和声明,外部函数的定义和声明及内部函数的定义。
写出程序ex9_9.c的运行结果。
5、在工程ex9中,创建头文件print_format.h和C语言源程序ex9_11.cpp。
在头文件中设计如下格式:①一行输出一个实数;②一行输出两个实数;③一行输出三个实数。
实数用"%6.2f"格式输出。
6、编程实现以下功能:设置条件编译,使程序输出字符串和其逆序。
源程序以ex9_12.c保存。
【实验小结】应知:1、函数定义格式,函数的返回值,实参、形参的含义,实参与形参的数据传递方式;2、变量的作用域、存储类型;3、内部函数和外部函数;4、文件包含与宏定义。
应会:1、函数的定义、声明和函数的调用;2、函数递归调用和嵌套调用;3、全局变量和局部变量的定义和声明;4、静态变量和动态变量的定义和声明;5、宏定义和条件编译的方法。
【实验思考】1.函数在C语言程序中的地位和作用是什么?如何定义和说明函数?2.何谓局部变量?何谓静态变量?何谓全程变量?如何使用?在程序中,它们应出现在什么位置?可否重名?3.函数返回值的类型如何说明?何谓空类型void?试说明return语句的功能和用法。
4.何谓形参?何谓实参?如何正确调用函数?何谓递归调用?。