#includestdio.h#includemath.h#defineEPS1e-7voidmain(){ doubleudf_sin(doublex);//用户自定义函数原型说明 doublea;scanf(%lf,&a); printf(%f%f\n,udf_sin(a),sin(a));}doubleudf_sin(doublex){//用户自定义函数doublesum,term,n=1;sum=term=x;while(fabs(term)EPS){n=n+1;term=term*(-x*x)/((2*n-2)*(2*n-1));信息科学技术学院C语言程序设计教学组培育英才钻研科学第一章第一章概述★内容提要:C语言概貌程序设计思想和程序结构程序设计方法与要点算法描述应用基本输入输出程序方式绪论C语言的特点库函数应用自定义函数C程序的组成C编程方式C语言是目前世界上最流行和实用的一种计算机高级程序设计语言。最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的,后随其宿主系统UNIX的普及而被引起注意,又因其本身的高效、灵活、功能丰富、表达力强、移植性好等特出优点受到广泛的重视并普及应用。编写应用软件:数据处理,科学工程数值计算等领域。编写系统软件:操作系统,编译系统,系统实用程序。高校开设程序设计课程的必修首选语言。1.1绪论(1)C语言在软件、硬件系统与用户中所处的位置汇编语言机器语言低级语言:具有面向硬件系统便于直接访问硬件的特点功能,但没有数据类型,不易阅读、记忆、推广。低级语言:具有面向硬件系统便于直接访问硬件的特点功能,但没有数据类型,不易阅读、记忆、推广。……FORTRAN语言pascal语言BASIC语言高级语言:具有丰富的数据类型和运算符,便于描述数据结构,既具有强有力的表达力,可加快开发速度,提高工作效率,面向用户、便于记忆、书写和阅读等。高级语言:具有丰富的数据类型和运算符,便于描述数据结构,既具有强有力的表达力,可加快开发速度,提高工作效率,面向用户、便于记忆、书写和阅读等。系统软件硬件用户1.2C语言的特点C语言吸取了高低级语言优点,兼而有之。(2)C语言是一种结构化程序设计语言便于模块化软件设计。结构化程序设计思想和目的是使程序具有结构合理,正确性高易验证。而且规定总结了一套程序设计准则。可以简单归纳为以下几点:基于自顶向下,逐步求精的设计方法;程序书写遵循一定的格式,使结构清晰;程序中只包含三种基本的结构:顺序、分支、循环。程序由模块构成,每个模块具有独力的功能。模块之间的数据联系要简单,每个模块只能有一个入口和一个出口;三种最基本的结构:顺序、分支、循环。语句组顺序结构语句组顺序结构语句1YN条件语句2分支结构语句1YN条件语句2分支结构N条件语句组循环结构YN条件语句组循环结构Y程序=数据结构+算法数据结构:逻辑结构:计算机外部的数据及其数据之间的关系。存储结构:外部数据及其数据之间的关系在计算机内部的实现。(一般通过类型来表达)运算:定义在逻辑结构之上的操作,通过算法描述算法:是对问题求解过程的一种描述,是为解决一个或一类问题给出的一个确定的有限长的操作序列。有输入:算法加工的对象;有穷性:对于任意一组合法的输入值,在执行有穷步骤之后一定能结束;确定性:对于每种情况下所应执行的操作,在算法中都有确切的规定(不存在二义性);可行性:算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之;有输出:它是一组与“输入”有确定关系的量值,是算法进行信息加工后得到的结果。(3)用函数作为程序模块以实现程序的模块化结构#includestdio.h#includemath.h#definePI3.14159main(){doublearea(doublex);doubler,a;scanf(%lf,&r);r=pow(r,2.0);a=area(r);printf(area=%f\n,a);return(0);}以‘#’打头的预处理命令用以包含相关文件,及定义符号常数。以‘#’打头的预处理命令用以包含相关文件,及定义符号常数。求解园面积的编程示例C程序中的函数、变量、符号常数必须先定义后使用,否则应作预先声明。C程序中的函数、变量、符号常数必须先定义后使用,否则应作预先声明。(3)用函数作为程序模块以实现程序的模块化结构#includestdio.h#includemath.h#definePI3.14159main(){doublearea(doublex);doubler,a;scanf(%lf,&r);r=pow(r,2.0);a=area(r);printf(area=%f\n,a);return(0);}以main()标识的主函数是C程序运行开始时由系统调用的一个特殊函数,不管其所在位置是程序中的前或后,执行总是从它开始。C程序可由一个或多个函数构成,但必须存在一个主函数,执行语句中可以调用其它函数,但它不能被其它函数调用,也不能自己调用自己。其它函数指:C编译系统提供的库函数;用户自定义函数。求解园面积的编程示例函数的基本形式:函数类型函数名(形参表列){数据说明部分;执行语句部分;}说明:如果没有参数,则可以省略形参表列和形参说明,但括号不能省略;规定有序规定有序求解园面积的编程示例voidmain(){doublearea(doublex);doubler,a;scanf(%lf,&r);r=pow(r,2.0);a=area(r);printf(area=%f\n,a);}doublearea(doublex){doubley;y=PI*x;return(y);}voidmain(){doublearea(doublex);doubler,a;scanf(%lf,&r);r=pow(r,2.0);a=area(r);printf(area=%f\n,a);}doublearea(doublex){doubley;y=PI*x;return(y);}求解园面积的编程示例如果函数不需要返回值,则可将该函数定义为void类型函数,并去除return语句。分号是语句的结束标志,是语句必要的组成部分,不可少,因此可以一行写几个语句。voidmain(){doublearea(doublex);doubler,a;scanf(%lf,&r);r=pow(r,2.0);a=area(r);printf(area=%f\n,a);}doublearea(doublex){doubley;y=PI*x;return(y);}求解园面积的编程示例函数:函数在程序设计中,是指有一定结构形式构成的,能完成某种特定运算功能的程序模块,被调用时根据自变量(形参)的值,作运算后,返回相应的结果(数据)或实现某项特定的功能操作。预处理命令、外部变量定义等函数类型main(){数据说明部分;执行语句部分;}函数类型fun_1(形参表){数据说明部分;执行语句部分;}……函数类型fun_n(形参表){数据说明部分;执行语句部分;}C程序的一般形式:1.3库函数应用简介C的两个基本系统函数库及其相配套的说明性预处理文件。库函数的说明性预处理文件:“stdio.h”,“math.h”它们是系统与用户的接口文件,称“头文件”,其中包含库函数原型的说明、类型和全局变量及符号常数等的说明。数值计算函数库sqrt(X)求平方根函数;sin(x)返回以弧度表示的x的正弦值;cos(x)返回以弧度表示的x的余弦值;pow(x,y)返回xy的值的幂指数函数exp(x)返回ex的指数函数……用户程序要调用这些函数,必须在有关函数前用以下预处理命令把“math.h”标头文件包含进来。1.3用库函数组装C程序#include“math.h”或#includemath.h双引号定界表示以当前目录为起点寻找包含文件,若不在,再按系统规定的标准路径找尖括号定界表示按系统规定的标准路径设置检索包含文件。预处理命令包含“math.h”标头文件格式如下:因为math.h中包含提供了数值计算函数库中的每一个函数原型的说明。………doublesqrt(doublex);doublesin(doublex);doublepow(doublex,doubley);……函数原型中提供了函数类型、函数名称、形参表中形参的个数、形参的类型、形参的顺序等信息,它们将在程序中作为C编译程序编译用户程序时检验用户调用库函数准确性的判断依据。函数类型函数名称形参的个数、类型、顺序等信息所以:调用库函数时必须注意,函数参数的个数、类型、顺序及返回值的类型。对于三角函数还应注意自变量的单位是弧度。基本I/O(输入/输出)库:用户程序若要使用其中的函数,必须用预处理命令将“stdio.h”标头文件包含进来。意义同上!#include“stdio.h”或#includestdio.h常用字符输入输出函数:getchar()putchar(C)gets(字符数组)puts(字符串地址)从标准输入文件stdin(键盘)读入一个字符。把字符串输出到标准输出文件,并加上换行符。从标准输入文件读入一个字符串到字符数组中。将字符c写到标准输出文件stdout(显示屏)中去。格式输入输出函数:scanf(“格式字符串”,输入参数表列);printf(“格式字符串”,输出参数表列);特例,最常用的输入输出函数,因此可省略stdio.h文件包含例[2]计算一个正弦值。#includemath.hvoidmain(){doublex;//declarevariablex=sin(0.19199);printf(sin0.19199=%f\n,x);}/*运行结果:sin0.19199=0.190813*/‘//’注释本行其后的内容为注释信息;‘/*…*/’表示两符号之间为注释信息;注释信息对程序运行不发生影响,也不被编译,合理地使用注释可以提高程序的可阅读性。例[2]计算一个正弦值。C规定每一个语句以分号结束,分号是语句不可缺少的部分,是语句的结束标志。因此,一行可以写多个语句,一个语句也可以分多行书写。#includemath.hvoidmain(){doublex;//declarevariablex=sin(0.19199);printf(sin0.19199=%f\n,x);}/*运行结果:sin0.19199=0.190813*/函数调用时,必须注意实参与形参在参数的个数、类型、顺序及单位上一一对应匹配!C的文件包含和编译过程。目标模块可执行程序库函数其它目标程序目标模块可执行程序库函数其它目标程序模块A模块B模块A模块B模块A#includemath.h模块Bmath.hfile1.c预编译模块A#includemath.h模块Bmath.hfile1.c预编译编译链接编译链接运行运行执行结果执行结果格式输出函数printf():一般形式:printf(“输出格式串”,输出参数项表列);输出格式串中可以使用三种不同的字符成分:格式符转义字符一般字符功能:按规定的格式把输出项输出到显示屏上格式符的基本形式:%[域宽]格式字符如:%6d,%10.2f,%16s,…格式符:‘%’打头后跟一个字母部分,组成特定格式以规定相应输出项的输出形式。转义字符:‘\’打头后跟一个字母或数字部分,作用是输出控制代码和特殊字母。如’\n’为回车换行控制代码。一般字符:除了格式符和转义字符以外的其它字符,原样输出,以增加运行结果的可读性。%d按十进制整数形式输出%x按十六进制整数形式输出%f按浮点数(实数)形式输出%c按单一字符形式输出%s按字符串形式输出#includemath.hvoidmain(){doublex;//declarevariablex=sin(0.19199);