C程序设计(第四版)第10章 C语言综合应用程序设计
C语言程序设计(第四版) 谭浩强 课件 PPT 完整版
![C语言程序设计(第四版) 谭浩强 课件 PPT 完整版](https://img.taocdn.com/s3/m/c8ffd0667fd5360cba1adb73.png)
语句
printf语句中的“\n‖是换行
符
<
>
C语言程序设计
第/* example1.1 calculate the sum of a and b*/ #include <stdio.h> 预处理命令 /* This is the main program */ void main() 注释 { int a,b,sum; /*定义变量*/ 函数 a=10; b=24; 语句 sum=add(a,b); printf(”sum= %d\n",sum); } printf语句中的“ %d ‖是表
C语言程序设计
第一章 C语言概述
C语言结构特点
函数与主函数
程序由一个或多个函数组成 必须有且只能有一个主函数main(),可以放在程序中任一 位臵 程序执行从main开始,在main中结束,其它函数通过嵌 套调用得以执行。
程序语句
C程序由语句组成 用‚;‛作为语句终止符
注释
C语言程序设计
第一章 C语言概述
Turbo C集成开发环境
配臵要求
UNIX,PC-DOS,MS-DOS,UCDOS操作系统 硬盘容量约2M,448K RAM运行空间
安装Turbo C
创建子目录 Install 若不是可安装盘,将文件拷贝到对应的目录下
TC
*.* *.*
INCLUDE SYS
Alt +x Alt+F ,Q
帮助Help
F1 Ctrl+F1
<
>
C语言程序设计
第一章 C语言概述
常用热键 基本操作:
F10-----调用主菜单 F2------存盘 F3------打开 F1------帮助信息 Alt+F9------Compile Ctrl+F9------Run Alt+F5------User Screen Alt+X ------退出Tc
C程序设计(第四版)
![C程序设计(第四版)](https://img.taocdn.com/s3/m/f91952f99e31433239689372.png)
( int
{ int z; if (x>y) z=x; else z=y; return (z); }
x, int 声明部分
执行部分
y)
合法是空函数:void dump( ) { }
2015-4-2 山东大学管理学院 戚桂杰 10
1.3 简单的C程序介绍
(4)一个C程序总是从main函数开始执行的。
2015-4-2 山东大学管理学院 戚桂杰 17
2.2 简单算法举例
1 1 1 1 1 1…… 1 1 1 1 1 1 例2. 4 求 2 23 34 4 9999100 100
算法如下: S1:sign=1 S2:sum=1 S3:deno=2 S4:sign=(1)×sign S5:term=sign×(1/deno) S6: sum=sum+term S7:deno=deno+1 S8:若deno<=100返回S4;否则算法结束。
C程序设计(第四版) 谭浩强 著
山东大学管理学院 戚桂杰
目录
• • • • • • • • • • • 程序设计和C语言 算法——程序的灵魂 最简单的C程序设计——顺序程序设计 选择结构程序设计 循环结构程序设计 利用数组处理批量数据 利用函数实现模块化程序设计 善于利用指针 用户自己建立数据类型 对文件的输入输出 常见错误分析
2015-4-2
山东大学管理学院 戚桂杰
13
第2章 算法——程序的灵魂
• 程序=数据结构+算法+程序设计方法+语言工具和环境
• 数据结构:对数据的描述,即在程序中指定数 据的类型和数据的组织形式。 • 算法:对操作的描述,即操作步骤。 2.1 什么是算法 • 为解决一个问题而采取的方法和步骤。 • 计算机算法分为数值运算算法、非数值运算算 法
C语言程序设计第四版PPT-谭浩强
![C语言程序设计第四版PPT-谭浩强](https://img.taocdn.com/s3/m/a8ad2d5677c66137ee06eff9aef8941ea76e4be6.png)
文件f2的 文件信息区
文件f3的 文件信息区
文件的基本知识——文件的操作 写文件:打开-写-关闭 读文件:打开-读-关闭
文件的打开
功能:为文件建立相应的信息区(存放 文件信息)和文件缓冲区(暂时存放输入 输出的数据) 函数: fopen(文件名,使用文件方式); 例: fopen("a1.dat","r");
第10章 文件
本章内容
10.1 文件的基本知识 10.2 打开与关闭文件 10.3 顺序读写数据文件 10.4 随机读写数据文件 10.5 文件读写的出错检测
文件的基本知识——输入输出
之前各章中处理的数据 ➢输入:键盘->内存 ➢输出:内存->显示器 实际上也可能是 ➢输入:外部设备->内存(读文件) ➢输出:内存->外部设备(写文件) 操作系统把各种设备都统一作为文件处理
文件
顺序文件的读写——读写字符串
例10.3 从键盘输入3个字符串,排序,把排
序后的字符串写入文件(P.342-343) 读上面写好的文件(P.344)
顺序文件的读写——格式化读写
fprintf(文件指针,格式字符串,输出表列); fscanf (文件指针,格式字符串,输入表列);
例: fprintf (fp,"%d,%6.2f",i,f); fscanf (fp,"%d,%f",&i,&f);
用文件扩展名”
文件的基本知识——流式文件
C语言把文件看作是字符(或字 节)的序列。
文件以“流”的形式在程序与操 作系统间流动。
文件的基本知识——数据的形式
根据数据的组织形式,数据文件可分为 ASCII文件:数据逐个字符的ASCII码 输出到外存,也称文本文件 二进制文件:内存中二进制形式的数据 直接输出到外存
c语言程序设计(第四版)-谭浩强
![c语言程序设计(第四版)-谭浩强](https://img.taocdn.com/s3/m/3539c379580102020740be1e650e52ea5418ce07.png)
c语言程序设计(第四版)-谭浩强C语言程序设计(第四版)是由谭浩强教授编写的一本广受欢迎的C语言教材。
这本书以其深入浅出的讲解、丰富的实例和清晰的结构,帮助了无数计算机专业的学生和自学者掌握了C语言的基础知识和编程技巧。
第一章:C语言概述谭浩强教授在开篇第一章中对C语言的历史、特点以及C语言在现代编程领域中的应用进行了简要的介绍。
他强调了C语言的高效性、灵活性以及它在操作系统、嵌入式系统等领域的广泛应用。
第二章:C语言基础第二章深入讲解了C语言的基本语法,包括数据类型、运算符、表达式等。
谭教授通过实际的代码示例,帮助读者理解C语言的基本概念。
第三章:控制语句在第三章中,谭教授详细介绍了C语言中的控制语句,包括条件语句(if、switch)、循环语句(for、while、do-while)和跳转语句(break、continue、goto)。
每个控制语句都有详细的解释和示例代码,帮助读者掌握程序流程控制的方法。
第四章:数组第四章讨论了数组的概念、声明和使用。
谭教授特别强调了数组在C语言中的重要性,以及如何使用数组来存储和处理数据集合。
第五章:函数函数是C语言中实现代码复用的重要手段。
第五章详细讲解了函数的定义、声明、调用以及参数传递。
谭教授还介绍了递归函数的概念和应用。
第六章:指针第六章是C语言中的一个难点,谭教授通过详细的解释和丰富的示例,帮助读者理解指针的概念、指针与数组的关系、指针的运算以及指针在函数中的应用。
第七章:结构体与联合体第七章介绍了C语言中的结构体和联合体,这两种数据类型允许程序员创建复杂的数据结构,以满足不同程序设计的需求。
第八章:预处理指令第八章讲解了预处理指令的概念和使用,包括宏定义、文件包含、条件编译等。
这些指令在C语言程序设计中起到了辅助和优化的作用。
第九章:位运算第九章介绍了位运算的概念和应用,包括位逻辑运算、位移运算等。
位运算在处理二进制数据时非常有用。
第十章:文件操作第十章详细讲解了C语言中的文件操作,包括文件的打开、关闭、读写等操作。
c程序设计第四版(谭浩强)第十章答案
![c程序设计第四版(谭浩强)第十章答案](https://img.taocdn.com/s3/m/c6045b37453610661ed9f445.png)
int main()
{
employee em[10];
FILE *p;
int i;
if((p=fopen("employee.dat","wb"))==NULL)
stu[n-1].ave=(stu[n-1].score[0]+stu[n-1].score[1]+stu[n-1].score[2])/3.0;
sort(stu);
if((p1=fopen("stud2.dat","wb"))==NULL)
{
printf("cannot open file stud\n");
}
for(i=0;i<n;i++)
if(fwrite(&stu[i],sizeof(struct student),1,p)!=1)
printf("file write error\n");
fclose(p);
}
int main()
{
int i;
printf("enter date of students:\n");
exit(0);
}
printf("new sort of students:\n");
for(i=0;i<n;i++)
{
fwrite(&stu[i],sizeof(struct student),1,p1);
printf("%ld %-6s %5.2f %5.2f %5.2f %5.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].ave);
C程序设计(第四版)谭浩强-课后习题答案-共11章(同名1796)
![C程序设计(第四版)谭浩强-课后习题答案-共11章(同名1796)](https://img.taocdn.com/s3/m/87440a6b7c1cfad6185fa74f.png)
C程序设计(第四版)谭浩强-课后习题答案-共11章(同名1796)第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计373.1顺序程序设计举例373.2数据的表现形式及其运算39 3.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句59 3.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
(第四版)C语言程序设计7-10章
![(第四版)C语言程序设计7-10章](https://img.taocdn.com/s3/m/012a16c45fbfc77da269b1cd.png)
C/C++
程序设计
教师姓名:赵 敏
2013-7-20
华东理工大学出版社
目录
第一章 C语言概述 第二章 数据类型及基本运算
第六章 数组 第七章 函数 第八章 指针 第九章
第三章 顺序结构程序设计 第四章 选择结构程序设计 第五章 循环结构程序设计
printstar()
{ printf("* * * * * * * * * * * * * * * * * \n");}
print-message()
{ printf("How do you do!\n");} main() { printstar();/* 调用printstar函数 */ print-message();/* 调用print message */ printstar(); /* 调用printstar函数 */ }
接来实现程序的化繁为简、化整为零的模块化程序设计。
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库
中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。 先举一个简单的函数调用的例子。
2013-7-20
华东理工大学出版社
不带参数的函数调用
2013-7-20
华东理工大学出版社
【例】给出如下两个函数:
printf(“Input x and y:\n”);
for(j=0;j<10;j++) f(x,10,r); scanf(“%d”,&x[j]);
调用发生
2013-7-20
实参数组x将自身数组的存储首地址传给了 形参数组array,实参数组r将自身数组的存 储首地址传给了形参数组result,使形参数 组与对应的实参数组共占同一段内存单元
C入门经典(第4版)ch10简明教程PPT课件
![C入门经典(第4版)ch10简明教程PPT课件](https://img.taocdn.com/s3/m/4e721bbf69dc5022aaea0092.png)
C入门经典(第4版) 10.3 计算机绘图系统的硬件组成
前面介绍过,stdin上的键盘输入有两种形式:一种是格式化输入,主要 由scanf()函数提供;另一种是非格式化输入,通过getchar()等函数接收原始的 字符数据。这两种形式都很常见,下面详细介绍它们。 格式化键盘输入 输入格式控制字符串 输入格式字符串中的字符 输入浮点数的各种变化 读取十六进制和八进制值 用scanf()读取字符 scanf()的陷阱 从键盘上输入字符串 键盘的非格式化输入
C入门经典(第4版) 10.3.8 从键盘上输入字符串
<stdio.h>头文件中的gets()函数可以将一整行的文本作为字符串读入。它 的函数原型如下: char *gets(char *str); 这个函数会将连续的字符读入指针str所指的内存中,直到按下回车键为 止。它会用终止字符'\0'取代按下回车键时读入的换行符。其返回值与变元相 同,即存储字符串的地址
C入门经典(第4版) 10.3.2 输入格式控制字符串
在scanf()或wscanf()函数中使用的格式控制字符串不完全类似于printf()中 的格式控制字符串。在格式控制字符串中添加一个或多个空白字符,如空格‘ ’、 制表符‘\t’或换行符‘n’,scanf()会忽略空白字符,直接读入输入中的下一个非空 白字符。在格式控制字符串中只要出现一个空白字符,就会造成无数个连续的 空白字符被忽略。因此,可以在格式字符串内加入任意多个的空白字符,使输 入易于理解。注意,scanf()默认忽略空白字符,但使用%c、%[]或%n指定符 读取数据时除外 。
第一个例子尝试过读入字符串,读入字符串还有其他方法。有3个格式指 定符用于读取一个或多个单字节字符。使用格式指定符%c可以读取一个字符, 并将它存储为char类型,如果使用的是%lc,就存储为wchar_t类型。对于字符 串,可以使用指定符%s或%[],如果要将输入存储为宽字符,就使用%ls或 %l[],其中转换指定符的前缀是L的小写。此时要给存储的字符串追加终止字 符‘\0’,作为最后一个字符。使用格式符%[]或%l[]读入的字符串必须只包含方 括号内的字符,如果方括号中的第一个字符是^时,则读入的字符串不能包含 方括号内^字符后面的任何字符,例如%[aeiou]读入的字符串只能包含元音。 碰到不是元音的字符就停止输入。而%[^aeiou]读入的字符串不能包含元音。 碰到元音就停止输入 。
C语言程序设计第10章文件及其应用
![C语言程序设计第10章文件及其应用](https://img.taocdn.com/s3/m/8b03e0429b6648d7c1c746fc.png)
学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。
流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。
c程序设计语言(第四版)
![c程序设计语言(第四版)](https://img.taocdn.com/s3/m/c0cb3c5ba7c30c22590102020740be1e640ecc62.png)
c程序设计语言(第四版)C程序设计语言(第四版)是一本经典的计算机编程教材,由著名的计算机科学家Brian W. Kernighan和Dennis M. Ritchie共同撰写。
这本书通常被称为“K&R”,它不仅是C语言的权威指南,也是许多程序员学习编程的入门书籍。
第一章:C语言概述C语言是一种通用的编程语言,它具有高效、灵活和可移植的特点。
C语言的设计目标是提供一种既能够编写系统软件,也能够进行高级编程的语言。
本章介绍了C语言的基本概念,包括变量、运算符、控制结构等。
第二章:数据类型、运算符和表达式在这一章中,详细介绍了C语言中的基本数据类型,如整型、浮点型、字符型等,以及它们在内存中的存储方式。
此外,还讲解了各种运算符的用法,包括算术运算符、关系运算符、逻辑运算符等,以及如何构建表达式。
第三章:控制流控制流是程序设计中的核心概念之一。
本章介绍了C语言中的控制结构,包括条件语句(if)、循环语句(while、for)和选择语句(switch)。
通过这些控制结构,程序员可以控制程序的执行流程。
第四章:函数函数是C语言中实现模块化编程的基本单元。
本章讲述了如何定义和调用函数,以及函数的参数传递机制。
此外,还介绍了递归函数的概念和使用。
第五章:指针指针是C语言中一个强大的特性,它允许程序员直接操作内存地址。
本章详细讲解了指针的基本概念、指针的运算,以及如何使用指针访问数组和字符串。
第六章:结构结构是C语言中一种复合数据类型,它允许将不同类型的数据项组合成一个单一的数据结构。
本章介绍了如何定义和使用结构,以及如何通过指针操作结构。
第七章:输入和输出输入和输出是程序与外部世界交互的基本方式。
本章介绍了C语言的标准输入输出库,包括printf和scanf函数的使用,以及文件操作的基本方法。
第八章:预处理器预处理器是C语言编译过程中的一个工具,它在编译之前对源代码进行处理。
本章介绍了预处理器的各种指令,如宏定义、文件包含、条件编译等。
《C语言程序设计教程》课件--第10章
![《C语言程序设计教程》课件--第10章](https://img.taocdn.com/s3/m/0c94f78d172ded630b1cb6bf.png)
8
程序区
数据区
输入 输出 文件
缓冲区
内存
磁盘文件 输出
输入 外存
图10.2 系统对缓冲文件的处理
2019/10/29
10.1 文件的概述
9
10.1.1 文件和文件指针
3. 缓冲文件和文件指针
文件类型指针
在缓冲文件系统中,对每个正在使用的文件
exit(0); }
2019/10/29
10.2 文本文件的读写
21
10.2.1 文件的字符输入输出函数
while ((c=getchar( ))!=EOF)
/*键盘文件结束标志:输入Ctrl+z,显示^Z后回车*/
putc(c, fp);
/* 将键盘输入的字符写到文件中 */
fclose(fp);
”w”:只写方式
为写(输出)文本文件打开文件。若文件不存在, 则建立一个新文件;若文件已存在,则清空文件。
”a”:追加方式
为写(输出)文本文件打开文件。若文件已存在, 则保持原来文件的内容,将新的数据增加到原来数据 的后面;若文件不存在,则返回NULL。
2019/10/29
10.1 文件的概述
14
因此对uunnss于iiggnn每eedd 个cha使r 用*ics中utrepm的;p; 磁//**盘CTue文rmrpeo件nrta必rayc须ftiilv先ee pi定onidni义tceart一o*r/*/ 个FILshEo类rt 型的文件t指oke针n;变量/* 并Use指d f向or此val变id量ity。checking */
常①字用符p的u的t调c先函用数后形与顺式f序p:u进tc行函,数的只功能能在相操同作。了在第sitd个io.h文
C程序设计(第四版)教案第十章
![C程序设计(第四版)教案第十章](https://img.taocdn.com/s3/m/d57db9da3169a4517623a311.png)
教案首页第10章对文件的输入输出10.1 C文件的有关基本知识10.1。
1 什么是文件文件有不同的类型,在程序设计中,主要用到两种文件:(1) 程序文件。
包括源程序文件(后缀为.c)、目标文件(后缀为。
obj)、可执行文件(后缀为.exe)等。
这种文件的内容是程序代码。
文件有不同的类型,在程序设计中,主要用到两种文件:(2)数据文件。
文件的内容不是程序,而是供程序运行时读写的数据,如在程序运行过程中输出到磁盘(或其他外部设备)的数据,或在程序运行过程中供读入的数据。
如一批学生的成绩数据,或货物交易的数据等。
本章主要讨论的是数据文件在以前各章中所处理的数据的输入和输出,从终端的键盘输入数据,运行结果输出到终端显示器上常常需要将一些数据输出到磁盘上保存起来,以后使用这就要用到磁盘文件操作系统把各种设备都统一作为文件处理从操作系统的角度看,每一个与主机相联的输入输出设备都看作是文件。
例如,终端键盘是输入文件显示屏和打印机是输出文件“文件”指存储在外部介质上数据的集合一批数据是以文件的形式存放在外部介质上的操作系统是以文件为单位对数据进行管理想找存放在外部介质上的数据,先按文件名找到所指定的文件,然后再从该文件读数据要向外部介质上存储数据也必须先建立一个文件(以文件名作为标志),才能向它输出数据“文件”指存储在外部介质上数据的集合一批数据是以文件的形式存放在外部介质上的操作系统是以文件为单位对数据进行管理想找存放在外部介质上的数据,先按文件名找到所指定的文件,然后再从该文件读数据要向外部介质上存储数据也必须先建立一个文件(以文件名作为标志),才能向它输出数据输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象地称为流(stream),即数据流。
流表示了信息从源到目的端的流动。
输入操作时,数据从文件流向计算机内存输出操作时,数据从计算机流向文件无论是用Word打开或保存文件,还是C程序中的输入输出都是通过操作系统进行的“流”是一个传输通道,数据可以从运行环境流入程序中,或从程序流至运行环境从C程序的观点来看,无论程序一次读写一个字符,或一行文字,或一个指定的数据区,作为输入输出的各种文件或设备都是统一以逻辑数据流的方式出现的.C语言把文件看作是一个字符(或字节)的序列.一个输入输出流就是一个字符流或字节(内容为二进制数据)流.C的数据文件由一连串的字符(或字节)组成,而不考虑行的界限,两行数据间不会自动加分隔符,对文件的存取是以字符(字节)为单位的.输入输出数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制,这就增加了处理的灵活性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、预处理命令#include的应用
1、#include命令经过预处理后,会将其后有关文件的内容 拷贝到命令所在的源程序文件中。 2、在上一个例子中,程序要能够编译运行,需建立一个工 程文件file.prj,其内容为: file1.c file2.c 然后对file.prj文件编译运行即可。 3、也可以在file1.c文件开头加一预处理命令: #include<stdio.h> #include<file2.c> int n=2; main() { …… } 对file1.c文件直接编译运行即可。
模块化程序设计开发步骤
讨论以c语言程序模块化设计小规模软件开发的一般步骤:
1、通过与最终用户的交流,明确软件应达到的功能,写出相 应的“功能说明”。 2、根据“功能说明”,确定存放有关数据的数据结构。 3、根据数据结构确定算法。
4、根据数据结构和算法,采用某种计算机语言编写的程序源
代码。 5、对程序进行调试和测试。 6、最后整理出有关的文档资料。
利用外部变量实现程序模块file1.c与程序模块file2.c之间的通信。 设程序模块文件 file1.c 的内容如下: #include<stdio.h> int n=2; /* 定义n为全局变量*/ main( ) { printf(“%d”,n); proc1( ); printf(“%d\n”,n); } 程序模块文件file2.c 的内容如下: extern int n; /* 说明n为外部变量*/ proc1() { n = 10 ; } 程序编译连接生成可执行文件,执行结果为: 2 10
三、模块化程序中模块间的通信 1、使用外部变量 即一个程序文件file1.c中定义一个外部 变量,另一个程序文件file2.c中的函数 可以通过外部变量说明后来使用这个变量, 以实现模块间的通信。
说明形式:extern 类型说明符 外部 变量名 ; 注意:只是进行了说明,并不是变量定义。
2、举例
第10章 C语言综合应用程序设计
10.1 模块化程序设计基本概念 10.2 模块化程序设计开发步骤 10.3 模块化程序设计的基本编辑要求
10.4 综合实例
10.1 模块化程序设计基本概念
一、模块程序设计的基本概念
1.一个复杂程序可以分成若干个模块,可由不同 人员分头完成. 2.每个模块的任务明确,便于理解. 3.单个模块易于编写和调试. 4.便于程序的维护和修改. 5.可以直接利用已有的模块.
10.4 综合实例
一、综合实例内容
用C语言编写一个简单的成绩管理系统。要求数 据以记录的形式,存放在数据文件中。每条记录包 含:学号;姓名;性别;三科成绩;平均成绩。在 菜单驱动下,能对数据文件进行改(modify)、显 示(display)、增(insert)、删(del)、排序 (sort)等操作。
4、 正确性与容错性要求 a) 程序首先是正确,其次是优美。 b) 无法证明你的程序没有错误,因此在编写完一段程序后, 应先回头检查。 c) 改一个错误时可能产生新的错误,因此在修改前首先考虑 对其它程序的影响。 d) 所有变量在调用前必须被初始化。 e) 对所有的用户输入,必须进行合法性检查。 f) 不要比较浮点数的相等,如:10.0 * 0.1 == 1.0 ,不可靠 g) 程序与环境或状态发生关系时,必须主动去处理发生的意 外事件,如文件能否逻辑锁定、打印机是否联机等。 h) 单元测试也是编程的一部份,提交联调测试的程序必须通 过单元测试。
10.3模块化程序设计的基本编辑要求
1、基本要求 a) 程序结构清晰,简单易懂,单个函数的程序 行数不得超过100行。 b) 打算干什么,要简单,直截了当,代码精简, 避免垃圾程序。 c) 尽量使用标准库函数和公共函数。
d) 不要随意定义全局变量,尽量使用局部变量。
e) 使用括号以避免二义性。
2、可读性要求 a) 可读性第一,效率第二。 b) 保持注释与代码完全一致。 c) 每个源程序文件,都有文件头说明,说明规格见规范。 d) 每个函数,都有函数头说明,说明规格见规范。 e) 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。 f) 常量定义(DEFINE)有相应说明。 g) 处理过程的每个阶段都有相关注释说明。 h) 在典型算法前都有注释。 i) 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6 个 字节。 j) 循环、分支层次不要超过五层。 k) 注释可以与语句在同一行,也可以在上行。 l) 空行和空白字符也是一种特殊注释。 m) 一目了然的语句不加注释。 n) 注释的作用范围可以为:定义、引用、条件分支以及一段代码。 o) 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 来自/3 。二、模块化程序组织
使用模块化编程技术的处理过程大致如下: 1、首先将一个大的源程序根据其功能合理地划 分成若干个小的源程序,每个小源程序均以程 序文件(.C)的形式保存在磁盘上。并建立一个 包括各个源程序模块的文件名的工程文件 (.prj)。 2、然后用编译器进行编译,将工程文件中指定 的多个源程序文件进行编译,生成多个目标文 件和一个可执行文件。注意,在分模块单独编 译处理的各个程序模块中,必须有且只有一个 主函数 main( ) 。
3、 结构化要求 a) 禁止出现两条等价的支路。 b) 禁止GOTO语句。 c) 用 IF 语句来强调只执行两组语句中的一 组。禁止 ELSE GOTO 和 ELSE RETURN。 d) 用 CASE 实现多路分支。 e) 避免从循环引出多个出口。 f) 函数只有一个出口。 g) 不使用条件赋值语句。 h) 避免不必要的分支。 i) 不要轻易用条件分支去替换逻辑表达 式。
二、基本要求和设计步骤 ① 设计程序之前,要求给出分析过程。 ② 在分析的基础上,完成总体设计方案。 ③ 依据总体方案,详细设计各子模块,并 完成程序源代码的编辑。 ④ 完成程序调试。 ⑤ 编写程序文档,包括用户文档和技术文 档。
三、程序的开发过程 1、分析 分析问题就是要了解问题所涉及的相关领域, 在清楚的需求分析基础以上构建解决问题的模 型。实例中设计的算法有:构建菜单算法;对 文件中的数据改(modify)、显示(display)、 增(insert)、删(del)、排序( sort )等操作 的算法。
7、实例程序代码
4、程序的编译和连接 5、程序的测试 6、编写程序文档
经过以上步骤,程序设计工作基本完成。要 想将一个程序最终交付给用户使用,必须提供详 尽程序文档。它包括用户文档和技术文档。用户 文档一般包括:程序的功能;数据的录入格式和 取值限制;程序及相关文件的数量、名称、内容 及存放路径等;程序运行的环境;安装、启动方 法等。技术文档一般包括:各模块的描述;硬件 信息;算法的解释和描述;变量的名称、作用; 程序代码清单。
2、总体设计 根据实例的内容要求,设计出总体方案如图:
系统共分7大模块:录入信息模块;排序信息模块; 显示信息模块;增加信息模块;删除信息模块;查 询信息模块;修改信息模块。
3、各模块的设计
在模块的设计部分,应当详细阐述各个模块的数 据结构和算法,给出描述算法的流程图。在本实例 中,需要完成七个不同模块的详细设计。 ① 录入信息模块的设计 ② 排序信息模块的设计 ③ 显示信息模块的设计 ④ 增加信息模块的设计 ⑤ 删除信息模块的设计 ⑥ 查询信息模块的设计 ⑦ 修改信息模块的设计