C语言
- 格式:doc
- 大小:32.50 KB
- 文档页数:9
C语言
第一章 引言
1.1一个C语言程序
1、C程序由函数(Function,一种子程序)所组成。
#include
Int main(void)
{
int n;
int factorial(int n);
Scanf(“%d”,&n);
Printf(“%d\n”,factorical(n));
return 0;
}
Int factorial(int n) /*定义计算阶乘*/
{
Int i ,fact=1;
for(i=1;i<=n;i++)
fact=fact*i;
return fact;
}
Scanf()和printf()是系统事先设计好的函数,分别用于数据的输入和输出。factorial()是程序中定义的函数,主要目的是求n!,并将n作为函数的参数;main()函数是程序的主函数。
2、C程序都有且只有一个main()函数。C程序从main()函数处开始运行,当main()函数结束时,程序也就结束了。
3、程序最根本是对数据的处理,所以首先要表示需要处理的数据。在factorial()函数中,我们用整形变量n表示要求阶乘的整数;用fact存储计算结果,用i表示1-n之间的某个整数。
4、程序还需要对数据处理的过程进行控制。上述程序中最主要的控制是将1到n的每个整数i乘到结果fact中。这个控制通过for循环语句(Loop Statement)来实现。
1.2程序与程序设计语言
1、计算机最基本的处理数据单元是计算机指令。单独的一条指令本身只能完成计算机的一个最基本的功能,如实习一次大小的判别。计算机所能实现的指令的集合称为计算机的指令系统。
2、一系列计算机指令的有序组合就构成了程序。
3、程序是0、1组成的序列,这个序列可以被计算机识别。
4、程序与数据一样,共同被存储在存储器中。当程序要运行时,当前准备运行的指令从内存被调入CPU中,由CPU处理这条指令。这种程序与数据共同存储的思想是目前绝大多数计算机采用的冯诺伊曼模型的存储程序概念。
5、在程序设计语言中,事先定义了几种基本的数据类型,如整型、实型(浮点型)、字符型等。并且提供构造复杂类型(数组、结构、文件、指针等)的手段。
6、一种比较典型的程序设计方法是:将复杂程序划分为若干个相互独立的模块(modular),使完成每个模块的工作变得简单而明确,在设计一个模块时不受其他模块的牵连。C语言就是支持这种结构化程序设计的典型语言。
7、在结构化程序设计中,一个模块可以是一条语句(statement)、一段程序、一个函数或子程序等。
8、从程序流程的角度看,模块只有一个入口和一个出口。这种单入单出的结构为程序的调试提供了良好的条件。 9、按照结构化程序设计的观点,任何程序都可以将模块通过3种基本的控制结构进行组合来实现。
顺序控制结构(Sequential Control Structure):一个模块执行完后,按自然顺序执行下一个模块。
分支控制结构(Branch Control Structure):又称选择结构。需要根据不同的条件来选择需要执行的模块。
循环控制结构(Loop Control Structure):判断某一条件。如果条件满足则重复执行相应的模块。
10、程序设计语言的功能:数据表达、流程控制。流程控制又分为语句级控制和单位级控制。单位级控制的手段,即函数的定义(definition)与调用(call)手段。
11、程序设计语言编写的未经编译的程序称为源程序(Source Code,又称源代码)。
12、C语言的主要“单词”:
标识符:C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。(例如:-name是一个合法的标识符;而left&right就是非法的。)标识符中的字母大小是有区别的。(例如:sum和Sum是不同的标识符)。C语言中最重要的标识符是保留字和用户自定义标识符。
保留字(又称关键字):是C语言规定的、赋予特定含义和有专门用途的标识符,它们主要与数据类型和语句有关。(如int整型、float实数类型、char字符类型、typedef自定义类型,以及与语句相关的if、else、while、for、break)。
用户自定义标识符:包括程序中定义的变量名、数据类型名、函数名和符号常量名。经常取有意义的英文单词作为用户定义标识符。
常量是有数据类型的(例如:整形常量123、实型常量12.34、字符型常量‘a’、字符串常量“hello world”)。
运算符表示对各种数据类型数据对象的运算。单目运算:涉及一个运算对象;双目运算:涉及两个运算对象;三目运算:涉及三个运算对象。
分隔符:如:、[、](、)和#等都是分隔符。
13、C语言的主要语法单位
表达式:运算符与运算对象(可以是常量、变量、函数等)的有意义组合就形成了表达式。表达式中可以包含有多种数据类型的运算符,运算符有运算优先级。
变量定义:变量也有数据类型,所以在定义变量时要说明相应的变量类型。变量定义的最基本形式是:类型名 变量名;(如int i)
语句:最简单的语句(表达式语句)就是在表达式加分号“;”;分支语句;循环语句;复合语句就是用一对大括号“{}”将若干语句顺序组合在一起。
14、函数定义与调用
函数是完成特定任务的独立模块,是C语言唯一的一种子程序形式。函数的目的通常是接受0个或多个数据(称为函数的参数),并返回0个或1个结果(称为函数的返回值)。 完整的函数定义涉及函数头和函数体。函数头包括函数的返回值类型、函数名、参数类型;而函数体是一个程序模块,规定了函数所具有的功能。
15、输入与输出
C语言没有输入\输出语句,它通过调用系统库函数中的有关函数(如printf()和scanf()函数)实现数据的输入与输出。
16、程序的编译
编译器(compiler)是将用程序设计语言编写的程序转换为计算机能直接理解的指令序列。
17、C语言既适合于编写系统软件,又可用于编写应用软件。C语言是一种结构化语言。C语言语句简介紧凑,使用方便灵活。C语言易于移植(不把输入输出作为语言的一部分)。C语言具有强大的处理能力和运行效率高。
18、C语言的不足之处:数据类型检查不严格,表达式出现二义性,不能自动检查数据越界。
19、程序设计的主要过程
(1)问题分析与算法设计
算法是一组明确的解决问题的步骤,它产生结果并可在有限的时间内终止。可以用多种方式来描述算法,包括用自然语言、伪代码和流程图。
流程图是算法的图形表示法,它的图的形式掩盖了算法的所有细节,只显示算法从开始到结束的整个流程。 (2)编辑程序
一般是在编程环境中,应用其中的编辑功能直接编写程序,然后生成程序的源文件(对C语言来说,一般源文件的后缀为.c)。
在调用一个函数时要先声明(declare)或定义(define)这个函数。编译系统会事先将各种类型的函数声明组织在一个文件中,(如所有输入输出的函数组织在一个叫stdio.h的文件中,程序员只要在程序开头写上语句“#include ”,就可直接调用该文件中声明的所有函数。
(3)程序编译
当编辑好程序后,下一步工作就是应用该语言的编译程序对其进行编译,所以生成二进制代码表示的目标程序(一个二进制文件,一般文件后缀为.obj)。如果程序有语法错误便不能生成二进制代码。
还不能直接运行该目标程序,它需要与编程环境提供的库函数进行连接(link),形成可执行的程序(文件后缀名为.exe).
(4)运行与调试
调试最主要的方法是:设置断点并观察变量。
设置断点(break point setting):可以在程序中的任何一个语句上做断点标记,将来程序运行到这里时会停下来。
观察变量(variable watching):当程序运行到断点的地方停下来后,你可以观察各种变量的值,判断此时的变量值是不是你所希望的。如果不是则说明该断点之前肯定有错误发生。这样你就可以把错的范围集中在断点之前的程序段上。 常用的调试方式是单步跟踪(trace step by step):即一步一步的跟踪程序的执行过程,同时观察变量的变化情况。
软件测试的基本思想:设计一批测试用例(包括输入数据和与之相应的预期输出结果),然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致。使用的测试用例越多就越容易发现隐藏的错误。但是实际写出所有的用例不可行,通常的方法是根据程序的逻辑结构和功能,设计一些有代表性的测试用例。测试用例的格式是[输入数据,预期输出结果]。
第二章 用C语言编写程序
2.2求华氏温度对应的摄氏温度
1、常量:在程序运行的过程中,其值不能改变
变量:在程序运行的过程中,其值可以改变。代表保存数据的存储单元
2、C语言中常用的数据类型:int 整型、char 字符型、float 单精度浮点型、double 双精度浮点型
3、变量定义的一般形式:类型名 变量名;
变量名:代表内存中的一个存储单元,用于存放该变量的值
类型名:决定该存储单元的大小(在C++中,int的存储单元有4
个字节)
4、双目算数运算符有:“+”,“—”,“*”,“/”,“%” 5、在使用算数运算时,注意
如果对两个整型数据做除法运算,其结果一定是整数(例如10/4=2,1/3=0)
求余运算符取整型数据相除的余数,它不能用于实型数据的运算(5%6=5, 9%4=1,100%4=0代表100能被4整除)
“+”,“-”还可作为单目运算符,用于表示数值常量的符号
④双目运算符两侧操作数的类型要相同,否则系统将自动转换类型
(如10.0/4时,将自动转换为10.0/4.0,其算得值为2.5)。
6、赋值表达式:变量=表达式。赋值运算符的左边必须是一个变量,赋值运算符的优先级比算数运算符低。赋值两侧的类型不同,系统会将运算符右侧表达式先转换成赋值运算符左侧变量的类型,再给变量赋值。
7、关系运算:C语言共提供了6种关系运算符,它们都是双目运算。“<”,“<=”,“>”,“>=”,“==”,“!=”。
8、输出函数printf():int型数据用%d ,float和double型数据使用%f(保留6位小数,%.2f保留两位小数).
9、输入函数scanf():int型数据用%d ,float型数据用%f,double型数据用%lf 。(scanf("%d%d%lf",&money,&year,&rate),在程序运行时,输入的多个数据之间必须要有间隔,可以用一个或多个空格作为间隔,也可以用回车符或制表符tab)
10、常用的数学库函数:平方根函数sqrt()、绝对值函数fabs()、幂函数pow(x,n)、指数函数exp(x)、以e为底的对数函数log(x)