您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C程序设计教程(第二版式)1-2
第二章C语言的基础知识2.1标识符、变量与常量2.2C语言的数据类型2.3运算符和表达式2.4指针类型与指针运算符2.1标识符、变量与常量字符集字符集是高级语言的编译系统所能识别的字母、数字、和特殊符号。每种高级语言都有自己特定的字符集合。标识符标识符是用来标识在C程序中的变量、常量(指符号常量)、数据类型和函数的。通俗一点说,标识符是程序员为变量、常量或者函数起的名字,它实际上是一个字符序列。2.1.1标识符(1)大、小写英文字母:A,B,…,Z,a,b,…z(2)数字:0,1,2,…,9(3)运算符:+–*/%=&|?!^~(4)括号:(){}[](5)标点符号:'":;(6)特殊符号:\_$#(7)空白符:空格符、换行符、制表符。C语言的字符集合包括:(1)字母或下划线中的任一字符打头。(2)在第一个字符后,可以是任意的数字、字母、下划线组成的序列。长度不超过8个。关键字(保留字)标识符的分类:特定字用户定义字任何一个标识符必须符合下列语法规则:关键字:又称保留字,一般为小写字母。关键字是C编译程序预先登录的标识符,它们代表固定的意义,用户不能随便使用。若随便使用,可能出现意想不到的错误,编译能通过,但运行结果不对,且不容易检查错误之所在。关键字(保留字)特定字特定字:具有特殊含义的标识符。它们虽然不是关键字,但是在习惯上把它们看成关键字。所以一般用户定义的标识符也不要使用它们。特定字包括:defineundefincludeifdefifndefendifline用户按照语法规则定义的标识符。用户定义字可以用来标识用户自己使用的变量,符号常量、数据类型以及函数等。注意(1)不能使用关键字和特定字。(2)用户定义字为了标识不同的对象,标识符的前8个(甚至7个)字符要有区别。(3)标识符最好有含义。(4)避免使用容易混淆的字符。如l与1,0与o,z与2等。(5)大、小写代表不同的意义。(6)尽量不要与某个库函数同名。用户定义字2.1.2变量变量变量是由程序命名的一块计算机内存区域,是用来存储一个可以变化的数值。在使用一个变量之前,程序员必须为每个变量起个名字,同时还要声明它的数据类型,以便编译系统根据不同的数据类型为其静态地分配内存空间。我们称之为定义变量。定义变量的格式为:类型说明符变量名表;关于不定值定义变量2.1.3常量常量在程序的执行过程中数值不会发生改变的量。无名常量(或称文字常量)a=100;100是无名常量符号常量(用预处理命令#define为常量命名)#deineMAX1002.2C语言的数据类型整型int基本数据类型浮点型floatdouble字符型char数组以[]为标志结构struct构造类型复杂数据类型联合union枚举enum指针类型以*为标志C语言的数据类型整型短整型shortint长整型longint普通整型int浮点型普通浮点型float双精度浮点型double字符型char不同数据类型的数据由于其在内存的存储方式不同,存储所占的二进制位(bit)大多不相同。即使是相同类型的数据在不同种类的计算机所占位(bit)数也不完全相同。2.2.2问题的提出问题一:从键盘接收一个字符,输出该字符的按字典排列顺序的下一个字符,例如,输入a,输出b。问题二:从键盘接收两个整数,输出它们的和。问题三:从键盘接收两个浮点数,输出它们的乘积。2.2.3整型数据整型数据在内存中的存储方式整型变量整型常量整型数据的输出整型数据的输入在IBMPC机上,普通整型占16位(bit),短整型也占16位(bit),而长整型占32位(bit)。根据整型数据所占的位数,计算一个整型数据能表示的数据的取值范围。第0位是符号位,如果符号位为0,表示是正整数,从0到15位全为1时表示的数最大。0111……1+1=21515个1则16bit能表示的最大整数是215–1,即32767。整型数据在内存中的存储方式如果符号位为1,表示是负整数,从0到15位都为0时表示的数最小。10……0015个0在计算机中,这个数是-215的补码表示。因此,最小整数是-215,即-32768。按照整型变量所占的二进制位数来分类:short(短整型)int(普通整型)long(长整型)根据整型变量是否带符号位来分类:不带符号的整型变量带符号的整型变量无符号用关键字unsigned表示说明整型变量的语法是:限定词int变量名表;整型变量整型常量表示:十进制表示八进制表示以数字0开头十六进制表示以数字0和x开头。inta,b,c;a=10;b=010;c=0x10;长整型:要在数字后加上字母L。longs;s=10L;整型常量需要注意的是:如果整型常量超过机器所能表示的范围,则会发生溢出,而在C语言中的整数溢出并不会使程序出错,而是得到一个非正确的值。inta,b;a=10000;b=10000000;变量b的值会被系统认为是-27008。%d表示把数据按十进制整型输出;%o表示把数据按八进制整型输出;%x表示把数据按十六进制整型输出;%u表示把数据参数按无符号整型输出。注意:除了%d,其余的格式都将数据作为无符号数输出。printf(%ld,100000L);正确printf(%d,100000L);结果-31072整型数据的输出例2.1#includestdio.hvoidmain(){intx,y,z;x=12,y=012,z=0x12;printf(%d,%d,%d\n,x,y,z);printf(%o,%o,%o\n,x,y,z);printf(%x,%x,%x\n,x,y,z);}运行结果:12,10,1814,12,22c,a,12例2.2输出负数。#includestdio.hvoidmain(){intx,y,z;x=-12,y=-012,z=-0x12;printf(%d,%d,%d\n,x,y,z);printf(%o,%o,%o\n,x,y,z);printf(%x,%x,%x\n,x,y,z);}运行结果:-12,-10,-18177764,17766,177756fff4,fff6,ffee说明:本程序中的-012和-0x12并不是八进制和十六进制常量,“-”实际是运算符,y=-012,是取012的负数,使用%o和%x格式显示的数据是无符号数。scanf是格式输入函数,其功能是按指定的格式将标准输入设备(例如键盘)输入的内容送入变量中。scanf函数的使用格式:scanf(格式信息,输入项1,输入项2,…);其中,“格式信息”与printf的用法相似,可以在其中使用%和转换字符来指定数据的输入方式。需要注意的是,输入项必须使用地址,普通变量的地址是在变量名前加取地址符&。整型数据的输入输入整型数据的转换字符有d,o,x,u%d表示把数据按十进制整型输入;%o表示把数据按八进制整型输入;%x表示把数据按十六进制整型输入;%u表示把数据参数按无符号整型输入。与printf函数类似,如果希望输入的数据是长整型,需要在转换字符前加l。例2.3输入两个普通整型数,计算并输出它们的和。#includestdio.hvoidmain(){intx,y,sum;printf(\nPleaseentertwointegers:\n);scanf(%d%d,&x,&y);sum=x+y;printf(%d+%d=%d\n,x,y,sum);}运行情况:Pleaseentertwointegers:1020↙(回车符)10+20=30注意(1)scanf读入一组整数时,scanf扫视输入信息,跳过空格、tab或换行,寻找下一个输入域。一个输入域就是一个连续的非空白字符的数字串。例如,若输入为:78231920↙(回车符)38则输入域有四个。(2)格式信息中除了有%开始的转换说明,还可以有普通字符,只是这些字符不是显示在屏幕上的,而是要求使用者在输入数据时,要在相应位置输入相同的字符(除了空格、tab或换行符)。例2.4输入格式与键盘输入的匹配。#includestdio.hvoidmain(){intx,y,sum;printf(\nPleaseenterexpressionLikea+b=:\n);scanf(%d+%d=,&x,&y);sum=x+y;printf(%d\n,sum);}运行程序:PleaseenterexpressionLikea+b=:10+20=↙(回车符)30假设输入的内容是:1020将会得到一个意想不到的结果,例如可能是:510scanf(“%d+%d=”,&x,&y);一句要求在两个整数之间输入“+”号,并在第二个整数后面输入“=”;否则,x和y接收的数据就不正确,也就是说,并没有将10和20正确地送到x和y这两个变量中,从而得出一个奇怪的结果510。例2.5输入两个普通八进制整数,计算并输出它们的和。#includestdio.hvoidmain(){intx,y,sum;printf(\nPleaseentertwooctalintegers:\n);scanf(%o%o,&x,&y);sum=x+y;printf(0%o+0%o=0%o\n,x,y,sum);printf(%d+%d=%d\n,x,y,sum);}Pleaseentertwooctalintegers:1020↙(回车符)010+020=0308+16=24通过在%和转换说明符之前加整数数字就可以控制显示数字的域宽。在%后面加符号“-”,规定显示数据在显示区域内左对齐;没有符号“-”,数据显示时右对齐。通过控制域宽和对齐方式的目的是为了使输出的数字格式清晰明了,容易看懂。例2.6显示时整数增加域宽和左对齐。#includestdio.hvoidmain(){intx,y,sum;printf(\nPleaseentertwointegers:\n);scanf(%d%d,&x,&y);sum=x+y;printf(%4d+%4d=%4d\n,x,y,sum);printf(%-4d+%-4d=%-4d\n,x,y,sum);}Pleaseentertwointegers:1020↙(回车符)10+20=3010+20=302.2.4字符型数据字符变量与字符常量使用getchar和putchar函数对字符型数据进行输入和输出使用printf和scanf函数对字符型数据进行输入和输出字符串常量字符变量数据类型说明符char例如,charaloha,beta,c;一个字符变量能存储一个字节的信息,每个字符有固定的编码,最常用的就是ASCII编码。标准ASCII编码是把每个字符和与0~127的数值联系起来,用7位二进制表示,再将最高位充0,就是一个字节了。例如,在ASCII编码表中,A用数值65表示,其8位二进制表示是:01000001字符常量C语言中的字符常量是用单引号将一个字符括起来。例如'a'、'b'。可以用字符常量为字符变量赋值:charalpha='a';charbeta='b';注意:(1)引号中的字符只能是一个字符。(2)不能用双引号括起一个字符表示单个字符常量。(3)非图形字符,如退格,换行等,也可以表示成字符型常量。表示方法是使用转义符\与一些特殊字符构成转义序列。例如‘\n’就是一个转义序列,表示“回车换行”。(4)字符型数据可以像整型数据一样参与四则运算。'b'-'a'=198-97=1用getchar输入字符和用putchar输出字符putchar()函数的用法putchar()是向标准输入输出设备上输出一个字符,一般的标准输出设备是屏幕终端。注意,参数是不能缺省的。另外,尽管参数可以是整型数,但参数的值最好在0~127之间,否则,输出可能是一些乱码。例2.7输出字符a。#includestdio.hvoidmain(){intc='a',i;putchar(c);}getchar()函数的用法getchar()是接收一个从标准输入输出设备上输入的字符。一般的标准输入设备是键盘。该函数
本文标题:C程序设计教程(第二版式)1-2
链接地址:https://www.777doc.com/doc-2907593 .html