C语言程序设计 课件 任务3.2 多文件编程_第1页
C语言程序设计 课件 任务3.2 多文件编程_第2页
C语言程序设计 课件 任务3.2 多文件编程_第3页
C语言程序设计 课件 任务3.2 多文件编程_第4页
C语言程序设计 课件 任务3.2 多文件编程_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计基础与实践模块一编程技术基础任务3.2多文件编程C语言程序设计基础与实践课程组04技能点拓展03技能点详解02技能点分析目录CONTENTS任务3.2多文件编程01问题引入05技能点检测一问题引入

进入数字经济时代,开源技术的重要价值日渐凸显,已经成为数字经济的基础设施与底座。开源技术是一个巨大的知识宝库,我们在享用这个知识宝库的同时,当知这个知识宝库正是无数前人的奉献积累而成的。

那么如何使我们的C语言编程代码能够共享交流,实现开源技术的价值呢?这就需要我们掌握多文件编程的方法,使编程思路更清晰、程序结构更简单、更易于程序的读写和移植。04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务3.2多文件编程二技能点分析1.掌握头文件编写方法;2.学会使用多文件编程模式编写程序。学习目标1.什么是多文件编程?多文件编程具有哪些优点?2.头文件一般包括哪些内容?3.头文件的引用格式有哪些?它们之间有何异同点?学期预习04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务3.2多文件编程三技能点详解——1头文件多文件编程就是将程序中所用的变量、函数或宏定义等程序元素分散到两个以上的源文件中定义实现,并通过包含头文件方式实现在多个源文件中共享。三技能点详解——1头文件

头文件是扩展名为.h的文件,有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。在前面的程序中,我们已经多次使用到stdio.h头文件,它是编译器自带的头文件。头文件一般包含全局变量的声明、函数的声明、宏定义、结构体定义等,如stdio.h头文件中包含putchar()、getchar()、printf()、scanf()等标准输入输出函数的声明。1)头文件的引用格式

使用预处理指令#include引用用户自编和系统自带的头文件。它的形式有以下两种:三技能点详解——1头文件格式一:#include<文件名>

本命令的特点是在文件名的首尾用尖括号括起来。文件名可以带路径。在预处理时将只在所指定的标准目录(即C系统安装后形成的include子目录,该子目录中有系统提供的头文件)中查找包含文件。格式二:#include"文件名"

本命令格式的特点是在文件名的首尾用双引号括起来。其中,文件名指出的是待包含进来的文件,且可以带路径。若文件名带路径,则预处理时在指定的路径下去查找。若查找不到,再到系统指定的标准目录中找。找到文件后,用文件内容替换该命令。因此格式二的查找功能包含了格式一的查找功能。另外,两种格式的include后可以不带空格。2)头文件的引用操作如果文件A中有一条文件包含预处理命令:#include<B>该命令将指定文件B的内容替换掉文件A中“#include<B>”命令,共同组成一个程序文件,即在文件A中产生文件B的一个副本。例如,如果一个程序中有一个头文件header.h,包含的代码如下:char*test(void);三技能点详解——1头文件三技能点详解——1头文件3)头文件的编写结构

如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。为了防止这种情况,标准的做法是把文件的整个内容放在条件编译语句中,一般结构如下:#ifndef_HEADER_H_#define_HEADER_H_……#endif这种结构就是通常所说的包装器#ifndef。“_HEADER_H_”通常以下划线“_”作为开头和结尾,下划线之间的字符串通常是大写的头文件名,并且“#ifndef”后的标识符和“#define”后面的完全相同,但不同的头文件中的标识符是不同的。三技能点详解——2多文件编程

假如我们现在需要编程实现输出从键盘输入的两个整数中最大值和最小值,首先我们编写一个只含有一个源文件test.c的程序。#include

<stdio.h>

intmax(intx,inty);//max函数声明intmin(intx,inty);//min函数声明

voidmain(void){

inta,b,m,n; printf("请输入第一个数:"); scanf("%d",&a); printf("请输入第二个数:"); scanf("%d",&b); m=max(a,b);//max函数调用 n=min(a,b);//min函数调用 printf("max=%d\n",m); printf("min=%d\n",n);}

intmax(intx,inty)//max函数定义{

intm; m=x>y?x:y;

returnm;}

intmin(intx,inty)//min函数定义{

intn; n=x<y?x:y;

returnn;}三技能点详解——2多文件编程

根据前面所说的多文件编程的基本思路,下面我们把上面的程序改写为多文件编程的形式。在各个文件中,一个源文件对应一个头文件,且文件主名相同,如maxmin.c源文件对应maxmin.h,通常主程序main.c不编写main.h。头文件maxmin.h#ifndef_MAXMIN_H_#define_MAXMIN_H_

intmax(intx,inty);//函数声明intmin(intx,inty);//函数声明

#endif主程序main.c#include

<stdio.h>#include

"maxmin.h"

voidmain(void){

inta,b,m,n; printf("请输入第一个数:"); scanf("%d",&a); printf("请输入第二个数:"); scanf("%d",&b); m=max(a,b); n=min(a,b); printf("max=%d\n",m); printf("min=%d\n",n);}三技能点详解——2多文件编程子程序maxmin.c#include

"maxmin.h"

intmax(intx,inty)//max函数定义,比较出最大值{

intm; m=x>y?x:y;

returnm;}

intmin(intx,inty)//min函数定义,比较出最小值{

intn; n=x<y?x:y;

returnn;}案例3.2.1计算器采用多文件编程方式编写一个简单计算器的程序,可以实现对输入的两个整数进行加、减、乘、除计算,并输出计算的结果。********************************************************************内容简述:两个整数的加、减、乘、除的简单计算器*******************************************************************/counter.h头文件:#ifndef_COUNTER_H_#define_COUNTER_H_

intadd(intx,inty);//加法函数的声明intsub(intx,inty);//减法函数的声明intmul(intx,inty);//乘法函数的声明floatdiv(intx,inty);//除法函数的声明

#endif

三技能点详解——案例display.h头文件:#ifndef_DISPLAY_H_#define_DISPLAY_H_

#include

<stdio.h>

voiddisp_result(intx,inty);//打印输出结果的函数声明

#endif

getnum.h头文件:#ifndef_GETNUM_H_#define_GETNUM_H_

#include

<stdio.h>

intgetnum1(void);//输入第一整数的函数声明intgetnum2(void);//输入第二整数的函数声明

#endif

counter.c源文件:intadd(intx,inty)//加法函数的定义{

returnx+y;}

intsub(intx,inty)//减法函数的定义{

returnx-y;}

intmul(intx,inty)//乘法函数的定义{

returnx*y;}

floatdiv(intx,inty)//除法函数的定义{

return(float)x/y;}三技能点详解——案例display.c源文件:#include

"counter.h"#include

"display.h"

voiddisp_result(intx,inty){

ints;

floatt;

s=add(x,y);//加法运算的结果 printf("%d+%d=%d\n",x,y,s);

s=sub(x,y);//减法运算的结果 printf("%d-%d=%d\n",x,y,s);

s=mul(x,y);//乘法运算的结果 printf("%d*%d=%d\n",x,y,s);

t=div(x,y);//除法运算的结果 printf("%d/%d=%.2f\n",x,y,t);}getnum.c源文件:#include

"getnum.h"

intgetnum1()//输入第一个整数{

inta; printf("请输入第一个整数:"); scanf("%d",&a);

returna;}

intgetnum2()//输入第二个整数{

inta; printf("请输入第二个整数:"); scanf("%d",&a);

returna;}三技能点详解——案例main.c源文件:#include

"getnum.h"#include

"display.h"

voidmain(void){

inta,b; a=getnum1();//调用函数getnum1,获取第一个整数 b=getnum2();//调用函数getnum2,获取第二个整数 disp_result(a,b);//显示运算结果}实现算术运算的子程序对应counter.c的头文件对应display.c的头文件对应getnum.c的头文件实现打印输出的子程序通过调用子程序中的函数完成所有功能的主程序获取输入数值的子程序三技能点详解——案例04技能点拓展03技能点详解02技能点分析目录CONTENTS01问题引入05技能点检测任务3.2多文件编程四技能点拓展——1条件编译条件编译是在对源程序编译之前的处理中,根据给定的条件,决定只编译其中的某一部分源程序,而不编译另外一部分源程序。1)控制条件为常量表达式的条件编译(1)类单分支格式#if常量表达式程序段#endif功能是:如果常量表达式为真(即非0),程序段被编译。否则,程序段不被编译。四技能点拓展——1条件编译(2)类双分支格式:#if常量表达式程序段1

#else

程序段2

#endif功能是:如果常量表达式的值为真(即非0),则在程序编译时只对程序段1进行编译,否则只对程序段2进行编译。四技能点拓展——1条件编译(3)类多分支格式:#if常量表达式1程序段1#elif常量表达式2程序段2#elif常量表达式n程序段n#else

程序段n+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论