




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章C语言基本概念2.1 初识 Hello world ”程序为纪念C语言的设计者,第一个程序范例选自 C语言的定义文档一一Brian Kernighan和 Denn is Ritchie 合著的 The C Programmi ng Lan guage 该范例是 Hello world ”程序,它是所有 C 程序员共有的财富,而你也即将成为其中的一员。【例2-1】 Hello程序/*File:hello.c*This program prints the message Hello world on the screen.*/#i nclude mai n()prin tf(Hello,w
2、orld.n);该程序作为一个文件存储在你所用的计算机系统的永久存储器中。文件名为hello.c,其中.c说明该文件为C语言源程序。下面介绍hello.c程序的组成部分:程序注释、库包含和主函数。2.1.1程序注释C语言中,注释是在/*和*/之间的所有文字,可以占连续的几行。例2.1中的注释描述了该程序的作用。注释是写给人看的,而不是写给计算机的。注释向其他程序员传递该程序的有关信息。 当C语言编译器将程序转换为可由机器执行的形式时,注释被完全忽略。当程序越来越复杂时,读者会发现给出合适的注释是使程序易读的最好方法之一。2.1.2库包含(预处理指令)C语言只明确定义了一小部分操作,在计算机程序
3、中许多必要的操作并不是由C直接定义的(如C语言中没有内置的“读”或“写”命令),实际的做法是,在每个C实现中都包 含了一些使用函数和符号的集合, 称之为库。C的ANSI (American National Standards Institute 标准要求在每个C实现中提供特定的标准库。C系统可以通过提供附加库来扩展可执行操作 的数量,编程者也可以产生函数库。每个库都拥有一个文件名以.h结尾的标准头文件,如第2章-1stdio.h。#inelude 这条预处理指令说明,在编译前把stdio.h中的信息“包含”到程序中。该指令通知预处理器,程序中用到的某些内容,如printf,可以在标准头文件s
4、tdio.h中找到。Stdio.h中包含了关于C标准输入/输出库的信息。对每一个库使用一行#inelude 预处理指令结束时没有“;” 预处理指令详细内容将在后面章节介绍2.1.3主函数1. 函数术语“函数”来源于数学。在数学中函数是一条根据一个或多个给定参数进行数值计算的规则:f(x) = x + 1g(y,z) = y -zC语言对“函数”的使用更加宽松。C语言中,函数是一系列独立的程序步骤,将这些 程序步骤集合在一起,并且赋予了一个名字,就形成了一个函数。如:mai n()语句;一个C程序是一个函数的集合。函数分为两类:程序员编写的函数;由 C语言的实现所 提供的函数。后一种函数也叫库函
5、数,因为这些函数属于一个函数的“库” ,而这个库是由编 译器提供的。每个C程序必须有一个main函数,在执行程序时系统会自动调用 main函数,即该函数 是程序的入口。2. 语句函数所执行的步骤在中列出,这些步骤称为“语句”。这些语句共同组成函数的主体。 大多数函数都有几个连续执行的语句。当运行C语言程序时,计算机执行 main函数主体中包含的语句。printf(Hello,world.n);该语句用到了 printf函数。此函数代表一组操作。当想要调用这些 操作时,只要使用其函数名就可以一起引用此函数。在程序设计中,通过使用函数名来调用第2章-2该函数的行为称为调用函数。printf(Hel
6、lo,world.n)就是对函数printf的调用。该函数调用的 结尾加上“;”就构成了一条语句。本节小结1. C程序的典型结构注释 库包含main ()语句;2每个程序都应有注释,注释可以有效增强程序的可读性。3库包含4.每个C程序是函数的集合,且每个 C程序有且仅有一个 main函数,它是程序的入口5语句2.2求圆周长的程序为使大家对C语言程序的工作过程有更好的了解,现在来看一个稍复杂的例子。 【例2-2】使用C语言编程,程序根据用户输入的某圆的半径值,求该圆的周长。【分析】根据数学知识可知,c = 2 x PI x r根据题目要求可知流程图如下:确定输出什么圆周长确定输入什么 圆半径引入
7、常量和变量概念:根据数学知识和题目要求,2、PI为常量,在整个程序运行期间 不变;S和r是变量,r随着用户的输入而不同,S随着输入的r不同而不同。引入数据类型:数据类型用来说明变量所存储的数据的种类。半径r取整型int,圆周长L取实型double。【伪代码】#i nclude mai n()定义变量;输入半径;计算周长;输出周长;:【源代码】#include mai n()int radius ;double c;printf( “ Plesae in put the radius: ” );scanf( “%d ”,&radius);c = 2 * 3.14 * radius ;printf
8、( The c is %f .n ” ,c);221初识变量和常量1. 变量变量(Variable)是一些在编写程序时值未知的数据的存放处。例如,在编程时,程序员 尚不知道用户要对半径为多大的圆求周长。当程序运行时,用户才会输入半径,程序才求出 周长。为了在程序中引用这些目前尚未确定的数,我们可以创建一个变量来保存这些需要记 住的值,并给该变量命名。一旦要用到它包含的值时,可使用其变量名。变量的名称要用心 选择,以便将来阅读程序的程序员能容易地分辨出每个变量的作用。本程序中,变量radius代表半径,变量c代表周长。在C语言中,使用变量前,必须先声明该变量。声明一个变量就是告之编译器引用了一
9、个新的变量名,并指定了该变量可以保存的数据类型。例如:int radius;2. 常量常量是一种在程序中保持固定类型和固定值的数据。例如,本程序中的2, 3.14。2.2.2输入阶段本程序在输入阶段必须要求用户输入一个半径值保存在radius变量中。变量值的输入过程包括2步。(1) 程序应在屏幕上显示一个消息以使用户了解程序需要什么,这种类型的消息通常称 为提示消息。例如:printf( “ Plesae in put the radius: ” );(2)读取用户输入的数据。例如:scanf( “%d ”,&radius);C中所有的输入输出操作都由称作输入输出函数来完成。本部分将介绍输入函
10、数scanf,它是C的标准输入输出库中的一部分,可以通过预处理指令#i nclude 来访问。scanf函数用来把从输入设备输入的数据复制到变量中。该函数调用包含函数名和函数参数两部分。函数参数由格式字符串(包含在“”)和输入列表组成。例:int sum;scanf( %d”, &sum);在程序执行时,sca nf函数将程序用户在键盘上键入的数据复制到内存中。关于scanf函数的具体说明见。2.2.3计算阶段本程序的计算阶段由计算圆周长组成。在程序设计中,计算是通过写一个表达式来指定第2章-5的,该表达式指定了必须的操作步骤。表达式的结构由赋值语句存储于一个变量中,以便程 序后面的部分使用该
11、结果。本章2.4节将详细定义表达式的结构。然而,即使没有一个完整的定义,理解C语言的表达式如何工作也很容易,它与传统的数学表达式非常类似:c = 2 * 3.14 * radius ;2.2.4输出阶段程序的输出阶段由显示计算结果组成。例如:printf( The c is %f .n”,c);printf函数在屏幕上显示参数字符串中的每一个字符。但到了处就有所不同了。及其后面的字母f称为格式码。在本例中,格式码是 %f。printf函数的格式码的作用就是作为值的 占位符,在输出过程中,值将被插入到该位置。格式码中的字母用于指定输出格式。本例中 的%f表示输出结果应显示为浮点数。此时的程序将显
12、示以下信息:The c is.其中,下划线部分将由一个浮点数代替。要想知道显示的是什么样的整数,printf函数取调用时传来的第二个参数值,本例中是变 量c。它的值显示在屏幕上,换行符使光标移至下一行。2.3变量、常量和数据类型2.3.1变量和常量定义1 变量大多数程序在产生输出之前往往需要执行一系列的计算,因此需要在程序执行过程中有 一种临时存储数据的方法。C语言中的这类存储单元称为变量。变量是程序执行过程中可以改变、可以赋值的量。具体说,变量是用于存储程序的输入 数据和计算结果的存储单元。2常量常量是一种在程序中保持固定类型和固定值的数据。2.3.2数据类型为了能在各种应用中使用,程序必须
13、能够存储多种不同类型的数据。程序中每一个变量 都必须有一个类型。类型用来说明变量所存储的数据的种类。C语言拥有广泛多样的类型。无论何时使用数据,无论使用的是整数、小数还是字符,c编译器都应该了解其数据类型。从整体上讲,数据类型是一组值及这组值上的一组操作。数据类型包括:一组值,即值的集合:例如:整型数据的集合就是机器硬件所能构造的所有整数(,-1,0,1,2,.)例如:字符型数据的集合就是键盘上出现的或可显示在屏幕上的符号的集合 这组值上的操作集合:例如:给出两个整数,可以将它们相加、相乘等例如:给出两个字符数据,可以对两者进行比较,看它们字母顺序如何 操作必须与值的集合项对应。本节只限定介绍
14、int、double和char数据类型,详细内容将在后面章节介绍。数据类型的对象可以是变量或常量。1. i nt数据类型数学中整数就是非分数和小数的数。Int类型在C语言中代表整数。因为一个存储单元的大小是有限的,所以不是所有的整数都可以由int型表示。Int型数据通常与程序的执行环境的字长相同,对于 16位环境,如DOS下的TC2.0, int型数据在内 存中占16位,即2个字节;对于大多数32位环境,如windows XP等,int型数据在内存中 占32位,即4个字节。VC6中int型数据在内存中占4个字节,取值范围是-2147483648至 2147483647整数可以存储在int型变量
15、中,进行常用的算术运算,加减乘除等,还可以比较两个整数 的大小。2. double数据类型实数拥有一个整数部分和一个小数部分,并由小数隔开。C中数据类型double用于表示实数,如 3.14159 0.005、15.8。实数可以存储在double型变量中,进行常用的算术运算,还可以比较两个整数的大小。VC6中double型数据在内存中占8个字节,15位有效数字,数值范围为-1.7*10-308至1.7*10308数据类型double是实数的一个抽象,因为它不包括所有的实数,一些实数太大或太小, 还有一些实数不能在大小有限的存储单元内精确表示。然而,C中绝对可以表示足够多的实数来执行大部分具有相
16、当精度的计算。3. char数据类型char类型表示一个字符值字母、数字或专用符号。每个char型数据都包含在单引号内,如:A Z 5字符可以存储在char型变量中,并可以比较字符数据的大小。char型数据占1字节。C语言将char型数据对应的ASCII码值保存在1个字节的内存空间中,所以C语言甚至 允许对char型数据进行算术运算,但必须小心使用。2.3.3变量声明与初始化变量(Variable)是一个值的存放处,它有三个重要属性:名称、值和数据类型为了理解名称、值和数据类型三者之间的关系,可以将变量看做一个 外部贴有标签的盒子。名称:变量的名字写在标签上,以区分不同的盒子 值:变量的值对应
17、于盒子内装的东西。数据类型:变量类型表明什么类型的数据可存储在盒子中。盒子标签上的名称从不改变,但可以经常从盒子中取出值或放入新值。在C语言中,使用变量之前,必须先声明该变量。声明(declaring) 个变量就是告诉 C编译器引用了一个新的变量名,并指定该变量可以保存的数据类型。变量定义语法格式:类型关键字 变量名1,变量名2;例:int count;double area;char firstnitial;int i,j,k;【说明】使用变量必须“先定义后使用”变量名是由用户定义的标识符,它的构成应符合以下规则名称必须以字母或下划线字符开头。名称的其他字符必须是字母、数字或下划线,不得使用
18、空格和其他特殊符号名称不可以是关键字。变量名可以为任意长度,但C编译器只认为前31个字符有意义。在C语言中,变量名中出现的大写和小写字母被视为不同的字符。 变量名应使读者易于明白其中存储的值是什么。实例操作【例2-2】使用C语言编程,程序根据用户输入的某圆的半径值,求该圆的周长。#include mai n()int radius;double c ;输入半径;计算周长;输出周长;在定义变量的同时可以为其赋初值,即C语言允许在定义变量的同时对变量进行初始化例:int sum = 0;double source = 87.3;char grade = A ; 定义但未赋初值的变量中,一般存放的是
19、随机数(静态变量除外) 。2.3.4 常量 常量是一种在程序中保持固定类型和固定值的数据。1. 整型常量 计算机中的数据都以二进制形式存储。在 C 程序中,为便于表示和使用,整型常量可以 用十进制、 八进制和十六进制三种形式来表示, 编译系统会自动将其转换为二进制形式存储。C 语言的编译器将整型常量按照 int 型变量的长度来存储。2. 实型常量 由于计算机中的实型数以浮点形式表示,即小数点位置可以是浮动的,因此实型常量可 以称为实数或浮点数。在 C 程序中,实型常量的表示方法如下:(1)十进制小数形式(2)指数形式实型常量在存储时按double类型存储,即占8个字节。3. 字符型常量C 语言
20、中的字符常量是由单引号括起来的一个字符。 对于某些控制字符(如回车符、换行符等)无法通过键盘输入,因此, C 语言还引入了 另外一种特殊形式的字符常量转义字符。4. 字符串常量 字符串常量是由一对双引号括起来的一个字符序列。为便于 C 程序判断字符串是否结束,系统对每个用双引号括起来的字符串常量都添加一 个字符串结束标识 0。它不引起任何控制动作,也不显示。2.4 运算符与表达式 当希望程序执行计算时,应写出一个表达式以指定必要的操作,其形式类似于数学表达 式。例:n1 + n2C 语言中的表达式由项和运算符组成。 项:表示一个单独的数据值,如 n1 , n2常量变量函数调用括号中的表达式运算
21、符:一个表示运算的字符或一个字符序列,如+, -, *, /, +,-当程序运行时,执行表达式中每一个特定操作的过程称为求值。当对表达式进行求值时,每一个运算符都对两边项所表示的数据值进行运算。当所有运算符求值完毕后,剩下的一个 数据就是计算结果。2.4.1算术运算符与算术表达式1. 算术运算符算术运算符主要有+ - * / % (取余运算)2. 操作对象算法运算符的操作符可能是常量、变量或其他算术表达式。例:3.14 * 2 * 25 + count -34 * num -35 % 2 (值为1)3. 操作数数据类型运算符+ - * /既允许操作数是int型或double型,或允许两者的混合
22、。当把int型操作数 和double型操作数混合在一起使用时,运算结果是 double型。运算符可以与整数操作数一起使用,用于找出普通除法的余数。例:2 + 7 (值为9)2 + 7.0 (值为 9.0)6 * 3.2 (值为 19.2)5 / 2 (值为2)2 / 5 (值为0) 2.0 / 5 (值为 0.4)5 % 2 (值为1)【注意】当两个操作数都是整数时,/通过丢掉分数部分的方法截取结果。%要求整数操作数;如果两个操作数中有一个不是整数,那么程序将无法编译通过。%左侧的操作数为被除数,右侧的操作数为除数,运算的结果为整除后的余数,余数 的符号与被除数的符号相同。4. 运算符的优先级
23、在C语言中,优先级顺序由符合标准数学用法的一系列排序规则决定,称之为优先级法 则。对算术表达式来说,常见的规则有:(1) C编译器首先执行任何一元运算符(如-)第2章-10(2) C编译器接下来执行乘法运算符* / %。若两个乘法运算符作用于同一操作数, 则优 先执行最左边的运算符(3) 再接下来执行加法运算符+ -。同样,若两个加法运算符作用于同一操作数, 则优先 执行最左边的运算符5. 运算符的结合性当一个表达式中出现不同类型的运算符时,首先按照他们的优先级顺序进行运算。当两类运算符的优先级相同时,则要根据运算符的结合性确定运算顺序。结合性表明运 算时的结合分向。算术运算符的结合性为左结合
24、。2.4.2赋值运算符与赋值表达式1.简单赋值一旦计算出表达式的值就常常需要把这个值存储在变量中,以便以后使用。c语言中,简单赋值运算符(=)可以用于此目的。简单赋值运算符(=)与数学中的等号不同,所以应将它读作“变为”、“赋值为”。在数 学领域,=表示两个值之间的关系,但是在 C中它表示由计算机执行的一个操作。变量的值是用赋值表达式获得的。C语言中的赋值表达式形式如下:变量=表达式在写赋值表达式时,等号的左边可以是任何变量名,等号右边可以是任何表达式。【注意】二右侧的表达式的值会赋给 二左侧的变量,变量原来的值就消失了。 赋值表达式最后以;结束就形成了赋值语句。变量=表达式;【例】int i
25、tem,sum;sum = 5;item = 10;sum = item + sum;实例操作【例2-2】使用C语言编程,程序根据用户输入的某圆的半径值,求该圆的周长。#i nclude mai n()int radius,l;输入半径;l = 2 * 3.14 * radius输出周长;2. 复合赋值例:假设变量balanee保存某人银行账户的余额,他想往账户中存一笔钱,数额保存在变 量desposit中。新的余额由表达式 balance+desposit给出。于是可以写出如下赋值语句:n ewbala nee = bala nee + desposit然而在大多数情况下,人们不愿用一个新变
26、量来存储结果。存钱的效果就是改变银行账 户中的余额,我们可以把 balance+desposit的值存入变量balanee中,赋值语句改为:bala nee = bala nee + desposit像这样对一个变量执行一些操作并将结果重新存入变量的语句在程序设计时使用十分频 繁,因此C语言的设计者特意加入了它的一种习惯的简记方式,即将balanee = balanee +desposit;写成bala nee += desposit凡是二元运算符,都可以与赋值符(=)一起组合成复合赋值符。C语言规定可以使用 10种复合赋值运算符,即:+= -= *= /= %= = &= A= |=3. 赋
27、值运算符的结合性赋值运算符的结合性是自右向左。2.4.3自增和自减运算符c语言提供了自增运算符(+)与自减运算符(-)。(1)自增运算符+i+:在使用i之后,使i的值加1+i:在使用i之前,先使i的值加1例:int m;int n = 3;m = n+ ;m = +n ;(2)自减运算符一i-:在使用i之后,使i的值减1第2章-12-i :在使用 i 之前,先使 i 的值减 1 例:int m;int n = 3; m = n- ; m = -n ;自增和自减运算符只能用于变量。自增和自减运算符的优先级与负号优先级相同。 自增和自减的结合方向是“自右至左” 。例: int m;int n =
28、3;m = -n+ ;提示:良好的程序设计风格提倡在一行语句中,一个变量最多只出现一次增 1或减 1运算。因 为过多的 +、 -混合运算,会导致程序的可读性变差。同时, C 语言规定表达式中的子表达 式以未定顺序求值,这就允许编译程序自由重排表达式的顺序,以便产生最优代码。这也导 致相同的表达式用不同的编译器编译时,可能产生不同的运算结果。例如:Sum = ( +a)+( +a);Printf (“%d%d”,a,a+,a+);建议不要采用。2.4.4 强制转换运算符使用强制转换运算符可以把表达式的结果硬性转换为一个用户指定的类型值。 (类型)表达式例:Int n;Double d;d = (
29、 double) n / 2 ;2.4.5 求字节数运算符不能对变量所占的字节数想当然,要想获知int型数据的准确字节数信息,可以使用sizeof 运算符计算其在内存中所占的字节数。sizeof (表达式)其中,表示可以是变量名、常量以及数据类型名。该运算符的功能:求表达式中变量名所代表的内存单元所占的字节数;或求表达式中常 量所占内存单元的字节数; 或求表达式中的数据类型表示的数据在内存单元中所占的字节数。第 2 章 -132.5格式化输入与输出数据可以以两种方式存储在内存中,赋值给变量或利用函数将数据从输入设备复制到变 量中。数据从输入设备传送到内存的指令称为输入操作。当程序执行时,会进行计算,并将结果保存到内存中。程序结果可以通过输出操作显示 给程序用户。显示存储在内存中的信息的指令为输出操作。C中所有的输入输出操作都由称作输入输出函数来完成。本节将介绍输入函数scanf和输 出函数printf。它们是C的标准输入输出库中的一部分,可以通过预处理指令#i n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《扩展现实(XR)沉浸式LED显示屏》征求意见稿
- 人教河南 九年级 下册 语文 期末专题训练《 专题九 古诗词鉴赏》习题课 课件
- 买卖猪仔笼子合同范例
- 农村粉刷墙体合同范例
- 加油站充电桩安装合同范例
- 劳动合同聘用合同范本
- 借贷利息合同范例
- 中考语文复习热点题型专项训练:衔接与排序、标点与修辞(原卷版)
- 重庆市丰都县某中学2024-2025学年七年级上学期第二次月考地理试题(含答案)
- 中考英语一轮复习:句型转换(讲义)(解析版)
- 血液透析个案护理
- GB/T 4706.28-2024家用和类似用途电器的安全第28部分:吸油烟机及其他烹饪烟气吸排装置的特殊要求
- 2024江苏苏州市浒墅关经开区招聘村(社区)人员笔试历年典型考题及考点剖析附答案带详解
- 中医医疗技术手册2013普及版
- 华东政法大学2017-2018学年期末测试《国际经济法概论》试卷
- 文化创意与策划实训报告总结
- 江城镇矛盾纠纷排查调处考核奖惩办法(试行)
- 2024年江西农业工程职业学院单招职业适应性测试题库含答案
- 工程文化概论机械工程与文化
- 2024年中华全国总工会文工团用人员招聘笔试冲刺题(带答案解析)
- 精神科出院康复指导与随访制度
评论
0/150
提交评论