C语言基本概念_第1页
C语言基本概念_第2页
C语言基本概念_第3页
C语言基本概念_第4页
C语言基本概念_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、百度文库-让每个人平等地提升自我第2章C语言基本概念初识Hello world ”程序为纪念C语言的设计者,第一个程序范例选自 C语言的定义文档 Brian Kernighan和 Dennis Ritchie合著的 The C Programming Language 该范例是 Hello world”程序,它是所有 C 程序员共有的财富,而你也即将成为其中的一员。【例2-1】 Hello程序/*File:*This program prints the message "Hello world" on the screen.*/#include <>main(

2、)printf("Hello,world.n");该程序作为一个文件存储在你所用的计算机系统的永久存储器中。文件名为,其中 .c说 明该文件为C语言源程序。下面介绍程序的组成部分:程序注释、库包含和主函数。2.1.1 程序注释C语言中,注释是在/*和*/之间的所有文字,可以占连续的几行。例中的注释描述了该程 序的作用。注释是写给人看的,而不是写给计算机的。注释向其他程序员传递该程序的有关信息。 当C语言编译器将程序转换为可由机器执行的形式时,注释被完全忽略。当程序越来越复杂时,读者会发现给出合适的注释是使程序易读的最好方法之一。2.1.2 库包含(预处理指令)C语言只明确定

3、义了一小部分操作,在计算机程序中许多必要的操作并不是由C直接定义的(如C语言中没有内置的“读”或“写”命令),实际的做法是,在每个C实现中都包 含了一些使用函数和符号的集合, 称之为库。C的ANSI (American National Standards Institute 标准要求在每个C实现中提供特定的标准库。C系统可以通过提供附加库来扩展可执行操作 的数量,编程者也可以产生函数库。每个库都拥有一个文件名以.h结尾的标准头文件,如。1百度文库-让每个人平等地提升自我#include <>这条预处理指令说明,在编译前把中的信息“包含”到程序中。该指令通知预处理器,程序中用到的某

4、些内容,如 printf,可以在标准头文件中找到。中包含了关于 C 标准输入/输出库的信息。汪忠:对每一个库使用一行#include预处理指令结束时没有“;”预处理指令详细内容将在后面章节介绍2.1.3 主函数1 .函数术语“函数”来源于数学。在数学中函数是一条根据一个或多个给定参数进行数值计算 的规则:f(x) = x + 1g(y,z) = y zC语言对“函数”的使用更加宽松。C语言中,函数是一系列独立的程序步骤,将这些 程序步骤集合在一起,并且赋予了一个名字,就形成了一个函数。如:main()语句;一个C程序是一个函数的集合。函数分为两类:程序员编写的函数;由 C语言的实现所 提供的函

5、数。后一种函数也叫库函数,因为这些函数属于一个函数的“库”,而这个库是由编译器提供的。每个C程序必须有一个main函数,在执行程序时系统会自动调用 main函数,即该函数 是程序的入口。2 .语句函数所执行的步骤在中列出,这些步骤称为“语句”。这些语句共同组成函数的主体。 大多数函数都有几个连续执行的语句。当运行C语言程序时,计算机执行 main函数主体中包含的语句。printf("Hello,world.n");该语句用到了 printf函数。此函数代表一组操作。当想要调用这些 操作时,只要使用其函数名就可以一起引用此函数。在程序设计中,通过使用函数名来调用 该函数的行为

6、称为调用函数。printf("Hello,world.n")就是对函数printf的调用。该函数调用的结尾加上“;”就构成了一条语句。本节小结程序的典型结构注释库包含main ()语句;2 .每个程序都应有注释,注释可以有效增强程序的可读性。3 .库包含4 .每个C程序是函数的集合,且每个 C程序有且仅有一个 main函数,它是程序的入口5 .语句求圆周长的程序为使大家对C语言程序的工作过程有更好的了解,现在来看一个稍复杂的例子。【例2-2】使用C语言编程,程序根据用户输入的某圆的半径值,求该圆的周长。【分析】根据数学知识可知,c = 2 x PI x r根据题目要求可知流

7、程图如下:确定输出什么一一圆周长确定输入什么一一圆半径开始引入常量和变量概念:根据数学知识和题目要求,2、PI为常量,在整个程序运行期间 不变;S和r是变量,r随着用户的输入而不同,S随着输入的r不同而不同。引入数据类型:数据类型用来说明变量所存储的数据的种类。半径r取整型int,圆周长L取实型double 。【伪代码】#include <>main()定义变量;输入半径;计算周长;输出周长;【源代码】#include <>main()int radius ;double c;printf( "Plesae input the radius:" );

8、scanf( “d”,&radius);c = 2 * * radius ;printf( The c is %f .n ” ,c);2.2.1初识变量和常量1 .变量变量(Variable)是一些在编写程序时值未知的数据的存放处。例如,在编程时,程序员 尚不知道用户要对半径为多大的圆求周长。当程序运行时,用户才会输入半径,程序才求出 周长。为了在程序中引用这些目前尚未确定的数,我们可以创建一个变量来保存这些需要记 住的值,并给该变量命名。一旦要用到它包含的值时,可使用其变量名。变量的名称要用心 选择,以便将来阅读程序的程序员能容易地分辨出每个变量的作用。本程序中,变量 radius

9、代表半径,变量c代表周长。在C语言中,使用变量前,必须先声明该变量。声明一个变量就是告之编译器引用了一 个新的变量名,并指定了该变量可以保存的数据类型。例如:int radius;2 .常量常量是一种在程序中保持固定类型和固定值的数据。例如,本程序中的 2,o3 .2.2输入阶段本程序在输入阶段必须要求用户输入一个半径值保存在radius变量中。变量值的输入过程包括2步。(1)程序应在屏幕上显示一个消息以使用户了解程序需要什么,这种类型的消息通常称为提示消息。例如:printf( "Plesae input the radius:");(2)读取用户输入的数据。例如:sca

10、nf( “d”,&radius);C中所有的输入输出操作都由称作输入输出函数来完成。本部分将介绍输入函数scanf,它是C的标准输入输出库中的一部分,可以通过预处理指令#include <>来访问。scanf函数用来把从输入设备输入的数据复制到变量中。该函数调用包含函数名和函数参数两部分。函数参数由格式字符串(包含在)和输入列表组成。例:int sum;scanf( %d”, &sum);在程序执行时,scanf函数将程序用户在键盘上键入的数据复制到内存中。关于scanf函数的具体说明见。2.2.3 计算阶段本程序的计算阶段由计算圆周长组成。在程序设计中,计算是通过

11、写一个表达式来指定 的,该表达式指定了必须的操作步骤。表达式的结构由赋值语句存储于一个变量中,以便程 序后面的部分使用该结果。本章节将详细定义表达式的结构。然而,即使没有一个完整的定 义,理解C语言的表达式如何工作也很容易,它与传统的数学表达式非常类似:c = 2 * * radius;2.2.4 输由阶段程序的输出阶段由显示计算结果组成。例如:printf( The c is %f .n”,c);printf函数在屏幕上显示参数字符串中的每一个字符。但到了处就有所不同了。及其后面的字母f称为格式码。在本例中,格式码是 %f0 printf函数的格式码的作用就是作为值的 占位符,在输出过程中,

12、值将被插入到该位置。格式码中的字母用于指定输出格式。本例中 的£表示输出结果应显示为浮点数。此时的程序将显示以下信息:The c is.其中,下划线部分将由一个浮点数代替。要想知道显示的是什么样的整数,printf函数取调用时传来的第二个参数值,本例中是变 量c。它的值显示在屏幕上,换行符使光标移至下一行。变量、常量和数据类型2.3.1变量和常量定义1.1.1大多数程序在产生输出之前往往需要执行一系列的计算,因此需要在程序执行过程中有 一种临时存储数据的方法。C语言中的这类存储单元称为变量。变量是程序执行过程中可以改变、可以赋值的量。具体说,变量是用于存储程序的输入 数据和计算结果的

13、存储单元。1.1.2常量是一种在程序中保持固定类型和固定值的数据。1.1.3 数据类型为了能在各种应用中使用,程序必须能够存储多种不同类型的数据。程序中每一个变量都必须有一个类型。类型用来说明变量所存储的数据的种类。C语言拥有广泛多样的类型。无论何时使用数据,无论使用的是整数、小数还是字符,c编译器都应该了解其数据类型。从整体上讲,数据类型是一组值及这组值上的一组操作。数据类型包括:一组值,即值的集合:例如:整型数据的集合就是机器硬件所能构造的所有整数(,-1,0,1,2,.)例如:字符型数据的集合就是键盘上出现的或可显示在屏幕上的符号的集合 这组值上的操作集合:例如:给出两个整数,可以将它们

14、相加、相乘等 例如:给出两个字符数据,可以对两者进行比较,看它们字母顺序如何 操作必须与值的集合项对应。本节只限定介绍int、double和char数据类型,详细内容将在后面章节介绍。数据类型的对象可以是变量或常量。1. int数据类型数学中整数就是非分数和小数的数。Int类型在C语言中代表整数。因为一个存储单元的大小是有限的,所以不是所有的整数都可以由int型表示。Int型数据通常与程序的执行环境的字长相同,对于 16位环境,如DOS下的,int型数据在内存中占 16位,即2个字节;对于大多数32位环境,如windows XP等,int型数据在内存中占32位, 即4个字节。VC6中int型数

15、据在内存中占4个字节,取值范围是-48至47整数可以存储在int型变量中,进行常用的算术运算,加减乘除等,还可以比较两个整数 的大小。2. double数据类型实数拥有一个整数部分和一个小数部分,并由小数隔开。C中数据类型double用于表示实数,如、。实数可以存储在double型变量中,进行常用的算术运算,还可以比较两个整数的大小。VC6中double型数据在内存中占8个字节,15位有效数字,数值范围为*10-308S*10 308数据类型double是实数的一个抽象,因为它不包括所有的实数,一些实数太大或太小, 还有一些实数不能在大小有限的存储单元内精确表示。然而,C中绝对可以表示足够多的

16、实数来执行大部分具有相当精度的计算。3. char数据类型char类型表示一个字符值一一字母、数字或专用符号。每个char型数据都包含在单引号内,如:A Z'5' "'。字符可以存储在char型变量中,并可以比较字符数据的大小。char型数据占1字节。C语言将char型数据对应的ASCII码值保存在1个字节的内存空间中,所以C语言甚至 允许对char型数据进行算术运算,但必须小心使用。1.1.4 变量声明与初始化变量(Variable)是一个值的存放处,它有三个重要属性:名称、值和数据类型为了理解名称、值和数据类型三者之间的关系,可以将变量看做一个 外部贴有标

17、签的盒子。名称:变量的名字写在标签上,以区分不同的盒子值:变量的值对应于盒子内装的东西。数据类型:变量类型表明什么类型的数据可存储在盒子中。盒子标签上的名称从不改变,但可以经常从盒子中取出值或放入新值。在C语言中,使用变量之前,必须先声明该变量。声明(declaring) 一个变量就是告诉 C编译器引用了一个新的变量名,并指定该变量可以保存的数据类型。变量定义语法格式:类型关键字 变量名1,变量名2 - ;例:int count;double area;char first_initial;int i,j,k;【说明】使用变量必须“先定义后使用”变量名是由用户定义的标识符,它的构成应符合以下规

18、则名称必须以字母或下划线字符开头。名称的其他字符必须是字母、数字或下划线,不得使用空格和其他特殊符号名称不可以是关键字。变量名可以为任意长度,但C编译器只认为前31个字符有意义。在C语言中,变量名中出现的大写和小写字母被视为不同的字符。变量名应使读者易于明白其中存储的值是什么。实例操作【例2-2】使用C语言编程,程序根据用户输入的某圆的半径值,求该圆的周长。#include <>main()int radius;double c ;输入半径;计算周长;输出周长;在定义变量的同时可以为其赋初值,即C语言允许在定义变量的同时对变量进行初始化 例:int sum = 0;double s

19、ource =;char grade = 'A';定义但未赋初值的变量中,一般存放的是随机数(静态变量除外)。1.1.5 常量常量是一种在程序中保持固定类型和固定值的数据。1 .整型常量计算机中的数据都以二进制形式存储。在 c程序中,为便于表示和使用,整型常量可以 用十进制、八进制和十六进制三种形式来表示, 编译系统会自动将其转换为二进制形式存储。C语言的编译器将整型常量按照int型变量的长度来存储。2 .实型常量由于计算机中的实型数以浮点形式表示,即小数点位置可以是浮动的,因此实型常量可以称为实数或浮点数。在C程序中,实型常量的表示方法如下:(1)十进制小数形式(2)指数形式

20、实型常量在存储时按double类型存储,即占8个字节。3 .字符型常量C语言中的字符常量是由单引号括起来的一个字符。对于某些控制字符(如回车符、换行符等)无法通过键盘输入,因此, C语言还引入了 另外一种特殊形式的字符常量一一转义字符。4 .字符串常量字符串常量是由一对双引号括起来的一个字符序列。为便于C程序判断字符串是否结束,系统对每个用双引号括起来的字符串常量都添加一 个字符串结束标识一一0'。它不引起任何控制动作,也不显示。运算符与表达式当希望程序执行计算时,应写出一个表达式以指定必要的操作,其形式类似于数学表达 式。例:n1 + n2C语言中的表达式由项和运算符组成。项:表示一

21、个单独的数据值,如 n1 , n2常量变量函数调用括号中的表达式运算符:一个表示运算的字符或一个字符序列,如 +,-,*,/,+,-当程序运行时,执行表达式中每一个特定操作的过程称为求值。当对表达式进行求值时, 每一个运算符都对两边项所表示的数据值进行运算。当所有运算符求值完毕后,剩下的一个 数据就是计算结果。2.4.1 算术运算符与算术表达式1 .算术运算符算术运算符主要有+ - * / % (取余运算)2 .操作对象算法运算符的操作符可能是常量、变量或其他算术表达式。例:* 2 * 25 + count - 34 * num - 35 % 2 (值为1)3.操作数数据类型运算符+ - *

22、/既允许操作数是int型或double型,或允许两者的混合。当把int型操作数 和double型操作数混合在一起使用时,运算结果是double型。运算符可以与整数操作数一起使用,用于找出普通除法的余数。例:2 + 7 (值为9)3 + (值为)6 *(值为)7 / 2 (值为2)8 / 5 (值为0)/ 5 (值为)9 % 2 (值为1)【注意】当两个操作数都是整数时,/通过丢掉分数部分的方法截取结果。%要求整数操作数;如果两个操作数中有一个不是整数,那么程序将无法编译通过。%左侧的操作数为被除数,右侧的操作数为除数,运算的结果为整除后的余数,余数 的符号与被除数的符号相同。10 运算符的优先

23、级在C语言中,优先级顺序由符合标准数学用法的一系列排序规则决定,称之为优先级法 则。对算术表达式来说,常见的规则有:(1) C编译器首先执行任何一元运算符(如-)(2) C编译器接下来执行乘法运算符* / %。若两个乘法运算符作用于同一操作数, 则优 先执行最左边的运算符。(3)再接下来执行加法运算符+ -o同样,若两个加法运算符作用于同一操作数, 则优先 执行最左边的运算符。11 运算符的结合性当一个表达式中出现不同类型的运算符时,首先按照他们的优先级顺序进行运算。当两类运算符的优先级相同时,则要根据运算符的结合性确定运算顺序。结合性表明运 算时的结合分向。算术运算符的结合性为左结合。2.4

24、.2赋值运算符与赋值表达式1 .简单赋值一旦计算出表达式的值就常常需要把这个值存储在变量中,以便以后使用。c语言中,简单赋值运算符(=)可以用于此目的。简单赋值运算符(=)与数学中的等号不同,所以应将它读作“变为”、“赋值为"。在数 学领域,=表示两个值之间的关系,但是在 C中它表示由计算机执行的一个操作。变量的值是用赋值表达式获得的。 C语言中的赋值表达式形式如下:变量=表达式在写赋值表达式时,等号的左边可以是任何变量名,等号右边可以是任何表达式。【注意】二右侧的表达式的值会赋给 二左侧的变量,变量原来的值就消失了。赋值表达式最后以;结束就形成了赋值语句。变量=表达式;【例】int

25、 item,sum;sum = 5;item = 10;sum = item + sum;实例操作【例2-2】使用C语言编程,程序根据用户输入的某圆的半径值,求该圆的周片。#include <>main()int radius,l;输入半径;1 = 2 * radius ;输出周长;2 .复合赋值例:假设变量balance保存某人银行账户的余额,他想往账户中存一笔钱,数额保存在变 量desposit中。新的余额由表达式 balance+desposili合出。于是可以写出如下赋值语句:newbalance = balance + despos it然而在大多数情况下,人们不愿用一个

26、新变量来存储结果。存钱的效果就是改变银行账 户中的余额,我们可以把 balance+desposit的值存入变量balance中,赋值语句改为:balance = balance + despos it像这样对一个变量执行一些操作并将结果重新存入变量的语句在程序设计时使用十分频 繁,因此C语言的设计者特意加入了它的一种习惯的简记方式,即将 balance = balance + desposit;写成balance += desposit凡是二元运算符,都可以与赋值符(=)一起组合成复合赋值符。C语言规定可以使用 10种复合赋值运算符,即:+= -= *= /= %= << >

27、;>= &= A= |=3 .赋值运算符的结合性赋值运算符的结合性是自右向左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-i :在使用i之前,先使i的值减1例:int m;int n = 3;m = n-;m = -n ;一、/汪忠:自增和自减运算符只能用于变量。自增和自减运算符的优先级与负号优先级相同。自增和自减的结合方向是“自右至左”。例:in

28、t m;int n = 3;m = -n+ ;提示:良好的程序设计风格提倡在一行语句中,一个变量最多只出现一次增1或减1运算。因为过多的+、-混合运算,会导致程序的可读性变差。同时, C语言规定表达式中的子表达 式以未定顺序求值,这就允许编译程序自由重排表达式的顺序,以便产生最优代码。这也导 致相同的表达式用不同的编译器编译时,可能产生不同的运算结果。例如:Sum = (+a) + (+a);Printf ("d%d”, a, a+, a+);建议不要采用。2.4.4 强制转换运算符使用强制转换运算符可以把表达式的结果硬性转换为一个用户指定的类型值。(类型)表达式例:Int n ;D

29、ouble d;d = (double) n / 2 ;2.4.5 求字节数运算符不能对变量所占的字节数想当然,要想获知int型数据的准确字节数信息,可以使用sizeof 运算符计算其在内存中所占的字节数。sizeof (表达式)其中,表示可以是变量名、常量以及数据类型名。该运算符的功能:求表达式中变量名所代表的内存单元所占的字节数;或求表达式中常 量所占内存单元的字节数;或求表达式中的数据类型表示的数据在内存单元中所占的字节数。格式化输入与输出数据可以以两种方式存储在内存中,赋值给变量或利用函数将数据从输入设备复制到变 量中。数据从输入设备传送到内存的指令称为输入操作。当程序执行时,会进行计算,并将结果保存到内存中。程序结果可以通过输出操作显示 给程序用户。显示存储在内存中的信息的指令为输出操作。C中所有的输入输出操作都由称作输入输出函数来完成。本节将介绍输入函数scanf和输 出函数printf。它们是C的标准输入输出库中的一部分,可以通过预处理指令#include <>来访问。2.5.1 printf 函数prin

温馨提示

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

评论

0/150

提交评论