第2章C语言基本概念2.1 初识“Hello world”程序为纪念C语言的设计者,第一个程序范例选自C语言的定义文档——Brian Kernighan和Dennis Ritchie合著的The C Programming Language。
该范例是“Hello world”程序,它是所有C 程序员共有的财富,而你也即将成为其中的一员。
该程序作为一个文件存储在你所用的计算机系统的永久存储器中。
文件名为hello.c,其中.c说明该文件为C语言源程序。
下面介绍hello.c程序的组成部分:程序注释、库包含和主函数。
2.1.1 程序注释C语言中,注释是在/*和*/之间的所有文字,可以占连续的几行。
例2.1中的注释描述了该程序的作用。
注释是写给人看的,而不是写给计算机的。
注释向其他程序员传递该程序的有关信息。
当C语言编译器将程序转换为可由机器执行的形式时,注释被完全忽略。
当程序越来越复杂时,读者会发现给出合适的注释是使程序易读的最好方法之一。
2.1.2 库包含(预处理指令)C语言只明确定义了一小部分操作,在计算机程序中许多必要的操作并不是由C直接定义的(如C语言中没有内置的“读”或“写”命令),实际的做法是,在每个C实现中都包含了一些使用函数和符号的集合,称之为库。
C的ANSI(American National Standards Institute)标准要求在每个C实现中提供特定的标准库。
C系统可以通过提供附加库来扩展可执行操作stdio.h。
#include <stdio.h>这条预处理指令说明,在编译前把stdio.h中的信息“包含”到程序中。
该指令通知预处理器,程序中用到的某些内容,如printf,可以在标准头文件stdio.h中找到。
Stdio.h中包含了关于C标准输入/输出库的信息。
注意:●对每一个库使用一行#include●预处理指令结束时没有“;”预处理指令详细内容将在后面章节介绍。
2.1.3 主函数1. 函数术语“函数”来源于数学。
在数学中函数是一条根据一个或多个给定参数进行数值计算的规则:f(x) = x + 1g(y,z) = y – zC语言对“函数”的使用更加宽松。
C语言中,函数是一系列独立的程序步骤,将这些一个C程序是一个函数的集合。
函数分为两类:程序员编写的函数;由C语言的实现所提供的函数。
后一种函数也叫库函数,因为这些函数属于一个函数的“库”,而这个库是由编译器提供的。
每个C程序必须有一个main函数,在执行程序时系统会自动调用main函数,即该函数是程序的入口。
2. 语句函数所执行的步骤在{}中列出,这些步骤称为“语句”。
这些语句共同组成函数的主体。
大多数函数都有几个连续执行的语句。
当运行C语言程序时,计算机执行main函数主体中包含的语句。
printf("Hello,world.\n");该语句用到了printf函数。
此函数代表一组操作。
当想要调用这些该函数的行为称为调用函数。
printf("Hello,world.\n")就是对函数printf的调用。
该函数调用的结尾加上“;”就构成了一条语句。
本节小结1.C程序的典型结构2.每个程序都应有注释,注释可以有效增强程序的可读性。
3.库包含4.每个C程序是函数的集合,且每个C程序有且仅有一个main函数,它是程序的入口。
5.语句2.2 求圆周长的程序为使大家对C语言程序的工作过程有更好的了解,现在来看一个稍复杂的例子。
【例2-2】使用C 语言编程,程序根据用户输入的某圆的半径值,求该圆的周长。
【分析】根据数学知识可知,c = 2 ×PI ×r根据题目要求可知流程图如下:●确定输出什么——圆周长●确定输入什么——圆半径引入常量和变量概念:根据数学知识和题目要求,2、PI为常量,在整个程序运行期间不变;S和r是变量,r随着用户的输入而不同,S随着输入的r不同而不同。
引入数据类型:数据类型用来说明变量所存储的数据的种类。
半径r取整型int,圆周长L取实型double。
2.2.1 初识变量和常量1. 变量变量(Variable)是一些在编写程序时值未知的数据的存放处。
例如,在编程时,程序员尚不知道用户要对半径为多大的圆求周长。
当程序运行时,用户才会输入半径,程序才求出周长。
为了在程序中引用这些目前尚未确定的数,我们可以创建一个变量来保存这些需要记住的值,并给该变量命名。
一旦要用到它包含的值时,可使用其变量名。
变量的名称要用心选择,以便将来阅读程序的程序员能容易地分辨出每个变量的作用。
本程序中,变量radius 代表半径,变量c代表周长。
在C语言中,使用变量前,必须先声明该变量。
声明一个变量就是告之编译器引用了一个新的变量名,并指定了该变量可以保存的数据类型。
例如:int radius;2. 常量常量是一种在程序中保持固定类型和固定值的数据。
例如,本程序中的2,3.14。
2.2.2 输入阶段本程序在输入阶段必须要求用户输入一个半径值保存在radius变量中。
变量值的输入过程包括2步。
(1)程序应在屏幕上显示一个消息以使用户了解程序需要什么,这种类型的消息通常称为提示消息。
例如:printf(“Plesae input the radius:”);(2)读取用户输入的数据。
例如:scanf(“%d”,&radius);C中所有的输入输出操作都由称作输入输出函数来完成。
本部分将介绍输入函数scanf,它是C的标准输入输出库中的一部分,可以通过预处理指令#include <stdio.h>来访问。
scanf函数用来把从输入设备输入的数据复制到变量中。
该函数调用包含函数名和函数参数两部分。
函数参数由格式字符串(包含在“”)和输入列表组成。
例:int sum;scanf(“%d”, &sum);在程序执行时,scanf函数将程序用户在键盘上键入的数据复制到内存中。
关于scanf函数的具体说明见。
2.2.3 计算阶段的,该表达式指定了必须的操作步骤。
表达式的结构由赋值语句存储于一个变量中,以便程序后面的部分使用该结果。
本章2.4节将详细定义表达式的结构。
然而,即使没有一个完整的定义,理解C语言的表达式如何工作也很容易,它与传统的数学表达式非常类似:c = 2 * 3.14 * radius;2.2.4 输出阶段程序的输出阶段由显示计算结果组成。
例如:printf(“The c is %f .\n”,c);printf函数在屏幕上显示参数字符串中的每一个字符。
但到了%处就有所不同了。
%及其后面的字母f称为格式码。
在本例中,格式码是%f。
printf函数的格式码的作用就是作为值的占位符,在输出过程中,值将被插入到该位置。
格式码中的字母用于指定输出格式。
本例中的%f表示输出结果应显示为浮点数。
此时的程序将显示以下信息:The c is .其中,下划线部分将由一个浮点数代替。
要想知道显示的是什么样的整数,printf函数取调用时传来的第二个参数值,本例中是变量c。
它的值显示在屏幕上,换行符使光标移至下一行。
2.3 变量、常量和数据类型2.3.1 变量和常量定义1.变量大多数程序在产生输出之前往往需要执行一系列的计算,因此需要在程序执行过程中有一种临时存储数据的方法。
C语言中的这类存储单元称为变量。
变量是程序执行过程中可以改变、可以赋值的量。
具体说,变量是用于存储程序的输入数据和计算结果的存储单元。
2.常量常量是一种在程序中保持固定类型和固定值的数据。
2.3.2 数据类型为了能在各种应用中使用,程序必须能够存储多种不同类型的数据。
程序中每一个变量都必须有一个类型。
类型用来说明变量所存储的数据的种类。
C语言拥有广泛多样的类型。
无论何时使用数据,无论使用的是整数、小数还是字符,C编译器都应该了解其数据类型。
从整体上讲,数据类型是一组值及这组值上的一组操作。
数据类型包括:●一组值,即值的集合:⏹例如:整型数据的集合就是机器硬件所能构造的所有整数(…,-1,0,1,2,….)⏹例如:字符型数据的集合就是键盘上出现的或可显示在屏幕上的符号的集合⏹例如:给出两个整数,可以将它们相加、相乘等⏹例如:给出两个字符数据,可以对两者进行比较,看它们字母顺序如何⏹操作必须与值的集合项对应。
本节只限定介绍int、double和char数据类型,详细内容将在后面章节介绍。
数据类型的对象可以是变量或常量。
1.int数据类型数学中整数就是非分数和小数的数。
Int类型在C语言中代表整数。
因为一个存储单元的大小是有限的,所以不是所有的整数都可以由int型表示。
Int型数据通常与程序的执行环境的字长相同,对于16位环境,如DOS下的TC2.0,int型数据在内存中占16位,即2个字节;对于大多数32位环境,如windows XP等,int型数据在内存中占32位,即4个字节。
VC6中int型数据在内存中占4个字节,取值范围是-2147483648至2147483647整数可以存储在int型变量中,进行常用的算术运算,加减乘除等,还可以比较两个整数的大小。
2.double数据类型实数拥有一个整数部分和一个小数部分,并由小数隔开。
C中数据类型double用于表示实数,如3.14159、0.005、15.8。
实数可以存储在double型变量中,进行常用的算术运算,还可以比较两个整数的大小。
VC6中double型数据在内存中占8个字节,15位有效数字,数值范围为-1.7*10-308至1.7*10308数据类型double是实数的一个抽象,因为它不包括所有的实数,一些实数太大或太小,还有一些实数不能在大小有限的存储单元内精确表示。
然而,C中绝对可以表示足够多的实数来执行大部分具有相当精度的计算。
3.char数据类型char类型表示一个字符值——字母、数字或专用符号。
每个char型数据都包含在单引号内,如:‘A’‘z’‘5’‘*’‘’字符可以存储在char型变量中,并可以比较字符数据的大小。
char型数据占1字节。
C语言将char型数据对应的ASCII码值保存在1个字节的内存空间中,所以C语言甚至允许对char型数据进行算术运算,但必须小心使用。
2.3.3 变量声明与初始化。
在C语言中,使用变量之前,必须先声明该变量。
声明(declaring)一个变量就是告诉C编译器引用了一个新的变量名,并指定该变量可以保存的数据类型。
变量定义语法格式:类型关键字变量名1[,变量名2…];例:int count;double area;char first_initial;int i,j,k;【说明】●使用变量必须“先定义后使用”●变量名是由用户定义的标识符,它的构成应符合以下规则⏹名称必须以字母或下划线字符开头。