1 / 53

第 2 章 C 语言的基本知识

第 2 章 C 语言的基本知识. 2.1 字符集和标识符 2.1.1 字符集 字符集是高级语言的编译系统所能识别的字母、数字和特殊符号。 C 语言的字符集包括: ( 1 )大小写英文字母; ( 2 )数字; ( 3 )运算符: + - * / % > < = & | ? ^ ~ ( 4 )括号 : ( ) { } [ ] ( 5 )标点符号:’ “ : ; ( 6 )特殊符号: _ $ # ( 7 )空白符:空格符、换行符、制表符. 2.1.2 标识符.

cecily
Télécharger la présentation

第 2 章 C 语言的基本知识

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 C语言的基本知识 2.1 字符集和标识符 2.1.1 字符集 字符集是高级语言的编译系统所能识别的字母、数字和特殊符号。 C语言的字符集包括: (1)大小写英文字母; (2)数字; (3)运算符:+ - * / % > < = & | ? ^ ~ (4)括号: ( ) { } [ ] (5)标点符号:’ “ : ; (6)特殊符号:\ _ $ # (7)空白符:空格符、换行符、制表符

  2. 2.1.2 标识符 标识符  由字母、数字、下划线组成且由字母或下划线开头的字符串。 C语言的标识符有: 关键字:保留字,C编译程序预先登录的标识符,表示固定含义。 特定字:具有特殊含义的标识符,如:include、define等 用户自定义字:用户按语法规则定义的标识符

  3. 用户自定义标识符使用时应注意: (1)可用来命名变量及作为常量名、函数名、类型名、文件名等,一个程序内不得有重复名。 如: _sum, sum, student_name, price等 (2) 大小写代表不同的意义; (3)需注意标识符长度,视不同系统而定。 设允许8个字符。 则: student_ name、student_ number 为同一名字。 (4)避免使用易混淆的字符,如1和l、0和o等; (5)标识符最好“见名知义”

  4. §2.2 常量与变量 2.2.1变量 • 变量:程序执行过程中其值可以改变的量 • 变量有两个要素:变量名与变量值 • 变量名: 用标识符命名,大小写敏感,不能使用关键字 命名原则: • 见名知意: name/xm(姓名)、salary/gz(工资) • 不宜混淆 如l与I, o与0 • 例:判断下列标识符号合法性 • sum Sum M.D.John day Date 3days • student_name #33 lotus_1_2_3 • char a>b _above $123 M.D.John 3days #33 char a>b $123

  5. 其实定义一个变量就是请求分配一片存储区域(如同一个容器),并给这片存储区起一个名字(变量名),然后可以在这片存储区中存放数据(变量的值)。其实定义一个变量就是请求分配一片存储区域(如同一个容器),并给这片存储区起一个名字(变量名),然后可以在这片存储区中存放数据(变量的值)。 • 定义变量时必须指明其类型,类型不同则分配得到的存储区的大小不同(即占用的字节数不同)。 学习要点: 记住表示不同数据类型的关键字和它所分配得到的字节数

  6. C语言中, 变量须先定义,后使用 如: int student student=30; 则若写成student=30, 则未定义, 编译时指出其错。 一旦变量被定义,即可在编译时为其分配相应数量的单元。 一旦变量被定义, 其类型便确定。则可检查其运算的合法性。 如: a % b 表示a整除以b的余,则a,b必须为整型量。

  7. 2.2.2常量和符号常量 常量 程序运行过程中不能被改变的量。 一般的数据显式写法均表示常量。 如程序中: 20  整型常量 15.8  实型常量 'a'  字符常量

  8. 还可用一个符号表示一个常量  符号常量 定义格式: #define 标识符 常量 例2.1: #define PRICE 30 main ( ) { int num, total; num=10; total=num*PRICE; printf("total=%d",total); }

  9. #define PRICE 30 符号常量(一般用大写,以区分变量) 再如: =3.1415629 #define PAI 3.1415629 优点:一改全改

  10. 2.3 C语言数据类型 §2.3.1 数据类型 著名计算机科学家沃思提出: 程序=数据结构+算法

  11. 一个例子:以考生各科成绩及总分排队问题为列。  成绩的存放 ––– 以数组形式  排队方法 –––– 算法 所以,存放数据的方式直接反映了一种语言的数据表达能力。 数据的存储方式又称之为:数据类型。

  12. 前面已述. C数据类型丰富,分为: 整型 字符型 基本类型 单精度 实型 双精度 枚举 数组 构造类型 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 结构体 指针类型 共用体 空类型 数据有常量、变量之分,均为其中一种类型。 本章先学习前三种基本类型。

  13. §2.4 整型数据 2.4.1 整型常量 整型常量 整型常数 C语言提供了三种形式  十进制 如: 256, 308, -120等

  14.  八进制 以数字0开头表示的整数 例:0235, 0146 -012等. 0235=2×82+3×8+5=15710 0146=1×82+4×8+6=10210 -012=-(1×8+2)=-1010 十六进制 以"0x"开头的整型数 如: 0x16, 0x28

  15. 2.4.2 整型变量 一、分类: 分为四种:基本型、短整型、长整型、无符号型 1.基本型: 用"int"定义 2.短整型: 用"short int"或 "short"定义 3.长整型: 用"long "或 "long int "定义

  16. 4.无符号型: 不存放符号,则不带符号数. (1)无符号基本型:用unsigned int或unsigned定义; (2)无符号短整型:用unsigned short定义; (3)无符号长整型:用unsigned long定义。 上述各种类型所占内存单元数及取值范围视不同机器而不同。

  17. 表2-1 带限定词后不同类型整数的长度和范围(带方括号部分可以省略) 注意:不同版本的C,类型长度不一定完全相同。

  18. 二、定义方法 整型变量分别以下列方式定义 1.基本整型: int a, b, c; 2.短整型 short int 或 short a, b, c; 3.长整型 long int 或 long a, b, c;

  19. 4.无符号型 unsigned a, b, c; unsigned short a, b, c; unsigned long a, b, c; 例2-2: main ( ) {int a, b, c, d; /*指定a, b, c, d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12; b= –24; u=10;

  20. c=a+u; d=b+u; printf("a+u=%d, b+u=%d\n",c,d); } 运行结果为 a+u=22, b+u= –14 由此看到: 不同类型的整型数据可进行算术运算。

  21. 三、关于整型常量 程序中出现的整型常数, 系统按以下规则分配变量(内存单元)或赋值给相应变量 1.当常数(量)在 – 32768~32767之间,则可赋给int, long int 变量。 2.若超越,而在–2147483648~2147483647之间,则可赋给 long int 变量。

  22. 3.若int, short int 长度相同,则二者皆可赋值。 4.一个非负整数<32768 则可赋给 unsigned int。 5.一个常数后加 'l',或'L',表示长整数. 如123l. 主要用于函数调用时形、实参数传递。

  23. 四 数据的溢出 在 c中一个int型变量的最大允许值为32767,如果再加1,会出现什么情况? 例2-3: 整型数据的溢出。 main() { int a, b; a=32767; b=a+1; printf("%d,%d“, a, b); } 运行结果为 32767,-32768

  24. 2.4.3 用printf显示整型数据 • printf函数的功能是按照指定的格式显示数据。 • 为给要显示的数据指定格式需要用转换说明符%和转换字符,根据需要转换字符有不同,显示整型数据的转换字符有:d、o、x、u等,分别表示: %d:表示把数据按十进制整数输出; %o:表示把数据按八进制整数输出; %x:表示把数据按十六进制整数输出; %u:表示把数据按无符号整数输出。 如下例: 函数回顾

  25. 2.4.3 用printf显示整型数据(续) 例2-4:将整型变量按不同进制输出 #include “stdio.h” void main() { int x,y,z; x=129,y=0127,z=0x128; printf(“%d,%d,%d\n”,x,y,z); printf(“%o,%o,%o\n”,x,y,z); printf(“%x,%x,%x\n”,x,y,z); } 运行结果: 129,87,296 201,127,450 81,57,128

  26. 2.4.3 用printf显示整型数据(续) (1)d格式符,有以下几种用法: • %d:按整型数据的实际长度输出; • %md:m为指定的输出字段的宽度。 若数据位数小于m,则左端补空格; 若数据位数大于m,则按实际位数输出。 • %ld,输出长整型数据,也可指定宽度。

  27. 2.4.3 用printf显示整型数据(续) 例2-5:d格式符的不同使用方法。 #include “stdio.h” void main() { int a=123,b=12345; printf(“%4d,%4d \n”,a,b); long c=135870; printf(“%ld”,c); printf(“%8ld”,c); } 运行结果:

  28. 2.4.3 用printf显示整型数据(续) (2)o格式符,以八进制形式输出整数,不带符 号,即将符号位也一起作为八进制数的一部分输出。 (3)x格式符,以十六进制形式输出整数,也不带符号位。 (4)u格式符,用来输出unsigned型数据,以十进制形式输出。也可用来输出有符号的int型。 (5)在%后面加符号“-”,数据显示左对齐,否则右对齐。

  29. 2.4.3 用printf显示整型数据(续) 例2-6:o、x、u格式符的使用 • #include "stdio.h" • void main() • { • int a=-1; • printf("%x,%o,%d \n",a,a,a); • unsigned int b=65535; • int c=-2; • printf("%d,%o,%x,%u \n",b,b,b,b); • printf("%d,%o,%x,%u \n",c,c,c,c); • /* printf("%d",8*sizeof(int)); */ • } 运行结果:

  30. 2.4.4 用scanf输入整型数据 scanf 函数(格式输入函数) • scanf(格式说明,地址表列) 地址表列是用地址运算符”&”取变量的地址 例2-7:scanf输入整数 main() { int a,b,c; scanf(“%d,%d”,&a,&b); printf(“a=%d,b=%d”,a,b); 输入:10,15 输出:a=10,b=15 a 10 b 15

  31. 2.4.4 用scanf输入整型数据(续) • 使用scanf函数,要注意: • 一个输入域就是一个连续的非空白字符的数字串。 • 格式信息中除了%开始的转换说明符,还可以有普通字符,只是这些字符不是显示在屏幕上,而是要求用户在输入数据时,要在相应的位置输入相同的字符(除空格、tab或换行符)。

  32. 如:int a,b,c; • scanf(“%d%d%d”,&a,&b,&c); • 输入形式:10 17 181 • int a,b,c; • scanf(“%d,%d,%d\n”,&a,&b,&c); • 输入形式: 10,11,12 scanf(“a=%3db=%3oc=%x”,&a,&b,&c); 输入形式:a=123b=456c=10

  33. §2.5 实型数据 2.5.1 实型常量 有二种表示形式 1.十进制形式 如: 0.126, 523.64等 2.指数形式 对于较大或较小的数,可用指数形式 0.0000126 1.26E –5 1260000 1.26E+6 或1.26E6 ' E ', 'e ' 均可. (注:e或E之前必须有数字,且后指数必须为整数) 例如:3.5E-5 2e3 错误:E2 3.6e3.5 .e6 e

  34. 2.5.2 实型变量 分为单精度型与双精度型. 分别为 float x, y, z; (单精度) double a, b, c; (双精度) 有的版本还支持: long double 一般地: 单精度占4字节内存单元; 双精度占8字节内存单元.

  35. 注意:不同机器对实型变量的有效数字长度的限制注意:不同机器对实型变量的有效数字长度的限制 如: pc机, 单精度一般为7位, 双精度15位 于是: float a; a=123456.789 则实际赋值a123456.7 单精度数值: 10–38~1038 双精度数值: 10–308~10308

  36. 2.5.3 用%f格式符以小数形式输出实数 (1) %f :不指定字段宽度,由系统自动指定, 使整数部分全部如数输出,并输出6位小数。 注意float型和double型数据的有效位数, 如:float x=123456.123; printf(“%f”,x); 输出结果:123456.125000 %lf:输出双精度类型 如:double y=12345678.98765432 printf(“%lf”,y); 输出结果:12345678.987654

  37. main() { double x,y; x=1111111111111.111111111; y=1111111111111.111111111; printf(“%f”,x+y); } 2222222222222.222170

  38. 如:float f=123.456; printf(“%10.2f ,%-10.2f”,f); 输出结果: 123.46,123.46 (2) %m.nf :指定输出的数据共占m列,其中有n 位小数。若数据长度小于m,则左端补空格。 (3)%–m.nf : 与%m.nf 基本相同,只是使输出 的数值向左端靠,右端补空格。

  39. 2.5.3 用%e格式符以指数形式输出实数 (1) %e 如: printf(“%e”,123.456); 输出结果: 1.234560e+002 6位 3位 一般共占13列宽度 (2) % m.ne和 %–m.ne: m、n和“–”字符含义与 前相同。此处n指数据的数字部分(又称尾数) 的小数位数。

  40. 如:f=123.468; printf(“%f , %e , %g”, f , f, f); 输出如下: 123.468000 , 1.234680e+002 , 123.468 如:f=123.468; printf(“%f , %e , %g”, f , f, f); 输出如下: 123.468000 , 1.234680e+002 , 123.468 10列 10列 13列 %g格式符——用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。

  41. 转义字符及其含义: 转义字符 含义 转义字符 含义 \t \n 换行 水平制表 垂直制表 \b 退格 \v \r 回车 \f 换页 \a 响铃 \\ 反斜线 \‘ 单引号 \“ 双引号 < 2位16进制数代表的字符 \ddd 3位8进制数代表的字符 \xhh §2.6 字符型数据 2.6.1 字符常量 字符常量:用单引号括起来的一个字符 ‘a’,’b’ 字符常量在内存中以该字符的ASCII码值存储. 转义字符:非图形字符,如退格、换行等,用反斜线后面跟一个字符或一个代码值表示。 例 转义字符举例 main() { printf("How are you \n"); printf("\\C Program\\\n"); printf("Turbo \'C\'"); } 如 ‘a’ ‘A’ ‘?’ ‘\n’ ‘\101’ 如 ‘A’——65, ‘a’——97, ‘0’——48 , ‘\n’——10 运行结果:(屏幕显示) How are you \C Program\ Turbo ‘C’ 如 ‘\101’ -----------‘A’ ‘\012’ -----------’\n’ ‘\376’ -----------’’ ‘\x61’ -----------’a’ ‘\60’ -----------’0’ ‘\483’ ----------() 例: ‘A’-------’\101’-------’\x41’--------65

  42. 2.6.2 字符变量 用来存放一个字符的变量. 其定义方式为: char c1, c2; c1=' a '; c2= ' b '; 字符变量只占一个字节单元。其对应单元存放的是其ASCII码,即ASCII码的二进制形式。 由此: 字符变量中的数据是一整型数据。输出时既可输出字符,亦可输出整数,且字符变量可作整数运算。

  43. 看如下几个例子: 例1: main ( ) { char c1, c2; c1=97; c2=98; printf ("%c %c", c1, c2) } 用转换说明符%c可以输出单个字符 运行结果 a b

  44. 例2: main ( ) { char c1, c2; c1= ' a '; c2=' b '; c1=c1– 32; c2=c2– 32; printf ("%c %c", c1, c2) } 运行结果 A B

  45. 例3: main ( ) { int i; char c; i= ' a '; c=97; printf ("%c, %d \n", c, c); printf ("%c, %d \n", i, i); } 说明:一个整数,只要它的值在0~255范围内,也可以用字符形式输出,在输出前,将该整数转换成相应的ASCII字符;反之,一个字符数据也可以用整数形式输出。 运行结果: a , 97 a , 97

  46. 2.6.3 用scanf输入字符 使用%c作转换说明符输入字符时,scanf不会跳过空格、tab或换行,而是直接把下一个字符输入给参数,不论它是什么。 例:scanf(“%d%c”,&i,&m); 若从键盘输入29 w,则m的结果不是字符w,而是空格。 空格 解决方法是:scanf(“%d %c”,&i,&m); 空格

  47. 例: #include”stdio.h” void main() { char c; c=getchar(); printf(”%c”,c); } 1. getchar函数 2.6.4 用getchar输入字符和用putchar输出字符 功能∶从终端输入一个字符。 格式: getchar( ) ——没有参数 必须有预编译命令∶#include <stdio.h>

  48. 2. putchar 函数 功能:在屏幕上输出一个字符) 格式: putchar( 参数) ——需将输出字符作为参数 • 例: • #include <stdio.h> • void main( ) • { • char a,b,c; • a=‘B’; b=‘O’; c=‘Y’; • putchar(a); • putchar(b); • putchar(c); • putchar(‘\’’); • } 输出结果: BOY’

  49. 说明: getchar()和putchar()函数的返回值均为整型,返回值为字符的ASCII码值。 例:输入一个字符,按字符原封不动输出。 • #include”stdio.h” • void main() • { int c,i; • c=getchar(); • i=putchar(c); • printf("%d",i); • }

  50. 2.6.5 字符串常量 用双引号括起来的字符串。 例: "Good Morning! " 注意'A' 与"A"是不同 字符串存放时,在最后加上"/ 0" –– 空字符。 于是: Good Morning ! /0

More Related