




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二讲C语言的基本语法1第二讲C语言的基本语法1本讲主要内容2 C语言的基本元素1 C语言的数据类型2 C语言的常量和变量3 C语言的运算符和表达式4 C语言的基本输入输出语句5本讲主要内容2 C语言的基本元素1 C语言的数据类型2 31、基本字符集 数 字:0 1 2 3 4 5 6 7 8 9 字 母:a b c z A B C Z 运算符:+ - * / % = = != = & | & | ( ) . ! ? : , ; 特殊符号:_(下划线) 、回车(r)、换行(n) 制表符(t)等ASCII字符集一、C语言的基本元素-131、基本字符集 数 字:0 1 2 3 4 5 6 42.
2、标识符标识符内容:常量名、变量名、数组名、类型名、存储方式名、函数名、文件名等。标识符规则:字母或_(下划线)开头,后面是字母、 _(下划线)或数字组成的字符串,要求见名知意。call_n test39 _string1 abccall.n 39test -string1 c2.0例合法非法一、C语言的基本元素-242. 标识符标识符内容:常量名、变量名、数组名、类型名、存5标识符说明 (1) 在C语言中, 标识符中大小写字母是有区别的。程序中基本上都采用小写字母表示各种标识符,如变量名、数组名、函数名等。书写的各种语句也均用小写字母,而大写字母只用来定义宏名等,用的不多。 (2) 不同的系统
3、对标识符的长度有不同的要求, 有的要求为6个字符,有的允许使用8个字符,而VS2012的标识符有效长度不受限制。 (3) 除了少数情况下使用单个字符作标识符外(如:循环变量名),一般的应做到见名知意,以提高程序的可读性。如用sum表示和,score表示成绩, max表示最大等等。5标识符说明 (1) 在C语言中, 标识符中大小63. 关键字autobreakcase charconstcontinuedefaultdo double elseenumexternfloat for gotoifintlong register returnshortsignedsizeof static str
4、uctswitchtypedefunion unsigned voidvolatilewhile又称标准标识符或保留字(32个)不能用关键字作标识符由C语言系统定义一、C语言的基本元素-363. 关键字autobreakcase ch74. 运算符进行运算处理的符号 (数组下标)、( )、 .、-(成员选择)-(负号)、(求反)、+(递增)、-(递减) 、*(指针取值) 、&(指针取地址)!(逻辑非)、sizeof(求数据类型或变量对应内存的字节数)、/(除法)、*(乘法)、% (取模)、 +(加法)、-(减法)、 (右移)(小于) 、 (大于) 、=(大于等于)、=(等于)、!=(不等于)&
5、(位与)、(异或)、|(位或)、&(逻辑与)、|(逻辑或) ?: (条件运算符)= (赋值)、+=、-=、*= 、/=、 %= 、=、&= 、=、 |=, (逗号运算符)x+y x%y 2*x-yab x=a+=3xy & ab a=2,a+3,a+ -i例一、C语言的基本元素-474. 运算符进行运算处理的符号 (数组下标)、( )、85. 分隔符用来分隔标识符间或标识符与关键字间的符号 分隔符内容:空格字符、水平制表符、垂直制表符、换行符、换页符及注释和逗号等,也称为空白字符。分隔规则:在相邻的变量、关键字和常量、函数之间需要用一个或多个空白字符(其效果是一样的)将其分开 。逗号也是分隔符
6、,用于相邻同类项之间的分隔。例如编程计算1+2案例中定义变量语句: int x=1, y=2, z;一、C语言的基本元素-585. 分隔符用来分隔标识符间或标识符与关键字间的符号 分隔9C语言把处理的数据进行分类,从数据的表示、取值范围和对应的操作等方面进行划分,形成不同的数据类型通过程序中数据类型的描述确定存放数据的空间大小,确保C程序中的每个数据都属于一个确定的、具体的数据类型。不同类型数据采取不同的存储形式;不同类型数据在内存中占有不同的存储空间;不同类型数据对应不同的取值范围;不同类型数据确定了允许对其进行不同的操作类型。1、数据类型的含义二、数据类型9C语言把处理的数据进行分类,从数
7、据的表示、取值范围和对应的10数据类型构造类型指针类型空类型(无值类型) void 枚举类型 enum数组类型结构类型 struct联合类型 union基本类型整型 int字符型 char实型(浮点型) 单精度实型 float双精度实型double二、数据类型10数据类型构造类型指针类型空类型(无值类型) void 11按照数据在程序中的取值分为两类:值保持不变-常量 x = 2 + y值随程序运行变化-变量基本类型整型 int字符型 char实型单精度 float双精度 double基本数据类型11按照数据在程序中的取值分为两类:基本类型整型 121、整型数据-1整型数据包括整型常量和整型变
8、量 六种形式基本整型短整型长整型无符号整型无符号短整型无符号长整型int short intlong int unsigned intunsigned short unsigned long121、整型数据-1整型数据包括整型常量和整型变量 六种形13 类 型 说明符 长度 数的范围基本型 int 4字节 -231231-1短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1无符号整型 unsigned 4字节 0232-1无符号短整型 unsigned short 2字节 0216-1无符号长整型 unsigned long 4字节 0232-1整型变
9、量的取值范围(在VS2010中)1、整型数据-213 类 型 14有符号与无符号整型数的区别11111111111111111111111111111111 a=则:unsigned a= 232-1=4294967295,而 int a=-111111111111111111000000000000000 a=则:unsigned a= 215=32768,而 int a=-215=-32768int 带符号整数,最高位为符号位1为负数补码unsigned 无符号整数,最高位为数值位=232-1=429496729514有符号与无符号整型数的区别111111111111111151. 求法:
10、正数的补码与原码相同;负数的补码对原码除符号位外,按位变反,末位加1,即得补码。或者由反码加1也可求得补码。+0补 = - 0补 =00补的两种表示是什么?数的补码表示2. 补码的表示范围 当n=16时,补码的表示范围是:+127补= 0000 0000 0111 1111 -128补= 1111 1111 1000 0000-128+127由此可得补码表示范围的公式是2n1(2n11)151. 求法:正数的补码与原码相同;负数的补码对原码除符号16数的补码举例问题:已知a=4,b=16,计算 4 -16 根据 a补+b补= a+b补有: a+b补 =+4补+16补 1 1 1 1 0 1 0
11、 0 0 0 0 0 0 1 0 0 + 1 1 1 1 0 0 0 0 结果为负时得到负数的补码,需再求补得原码:1000110016 原= 10010000 连同符号一起运算解答4 补 = 00000100 16 反= 11101111 16 补= 11110000 -1216数的补码举例问题:已知a=4,b=16,计算 4 -16171)定义形式三种形式单精度双精度长双精度 floatdoublelong double2)占存储空间4816字节注意:实型常量不区分单精度和双精度!2、实型数据-1 实型数据就是数学中的实数,一律作为有符号的数据使用。 171)定义形式三种形式单精度 flo
12、at2)占存储空间4字184)输入输出形式 %f, %lf 3)变量的取值范围 类型 长度数的范围有效数字单精度float4 10- 38 10386 7位双精度double8 10- 308 1030815 16位长双精度long double16 10- 4931 10493218 19位2、实型数据-2184)输入输出形式 %f, %lf 3)变量的取值19 实型数据在计算机中以指数形式存储,单精度float变量占四个字节。一个字节存放指数部分, 三个字节存数值部分。2-23 = |尾数| = 1-2-235)float型数的表示范围0 000 0000 0000 0000 0000 0
13、001 最小尾数= 2-23 二进制 7位 二进制 23位单精度实型数符 尾数阶码阶符最大尾数= 1-2-230 111 1111 1111 1111 1111 1111 2、实型数据-319 实型数据在计算机中以指数形式存储,单精度f203、字符型字符型常量: a 、b 字符型变量: char ch;C语言采用ASCII码字符集,即用1个字节存放1个字符的ASCII码值。字符型使用关键字char表示,ASCII码值的范围为0255。203、字符型字符型常量: a 、b C语言采用AS211)在程序运行中,其值保持不变2)表示方法: 3)符号常量: #define PI 3.14159又称为宏
14、定义,给常量定义一个标识符,称宏名,大写。三、C语言的常量和变量整型 100,125,-100实型 3.14 , 0.125字符型 a, b字符串常量 string1、常量211)在程序运行中,其值保持不变 3)符号常量: #de22宏定义应用举例/* 符号常量(宏定义)的使用 */#include /定义符号常量PRICE,值为30 #define PRICE 30void main() int num,total; num=10; total=num* PRICE; /使用符号常量 printf(total=%d,total);#include /定义符号常量PI,值为3.1415926#
15、define PI 3.1415926void main() float r,s; r=2.3; s=PI*r*r; printf(%f,s);22宏定义应用举例/* 符号常量(宏定义)的使用 */#in23 3. 变量通过变量名来标识。 1. 在程序运行中,值发生变化;2. 必须先定义,再使用;int a=3,b=10;类型 变量名表内存a3 变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。2、变量b1023 3. 变量通过变量名来标识。 1. 在程序运行中,值发24 (1)以字母或下划线开头,后面可以跟字母、下划线和数字(2)不能用系统中的关键字作为变量名(3)变量名
16、中的字母是区分大小写的: sum、stu_name、_age、Lts_1_2、a2 32c、x.y、start+9、c2.0 非法 NAME name 表示两个不同的标识符。有关变量名的规定24 (1)以字母或下划线开头,后面可以跟字母、下划线和数字25变量定义格式存储类型 数据类型关键字 变量名标识符; 【例】定义变量示例int a; unsigned long sum; float r; char ch;int a, b, c=4; 25变量定义格式存储类型 数据类型关键字 变量名标26定义多个同类型变量方法在同一个语句中可以定义两个及两个以上相同类型的变量。规定:变量名之间用逗号作为间隔
17、符,第一个变量名与数据类型关键字之间用空格(空格的个数不限)作为间隔符。例如:double x, y;26定义多个同类型变量方法在同一个语句中可以定义两个及两个以271) 定义形式:2)占存储空间:1个字节char 变量表;3)输入输出形式: %c a ASCII值为 97 内存中存储形式0 1 1 0 0 0 0 14)字符型数据在内存中以相应的ASCII值存储3. 字符型变量271) 定义形式:2)占存储空间:1个字节char 变量表28 以“”开头后跟一个特殊字符或数字称为转义字符。n 换行t 横向跳格(制表符)r 回车反斜杠ddd ddd表示1到3个八进制数字xhhh hhh表示1到3
18、个十六进制数字printf(%d t %d t,a,b); printf(%d n%d n,a,b);若:a为1,b为0, 则4、转义字符输出:101028 以“”开头后跟一个特殊字符或数字称为转义字符。29转义字符表示法29转义字符表示法30ddd 表示1到3个八进制数字对应ASCII字符xhhh 表示1到3个十六进制数字对应ASCII字符10114160 x41x61x30printf(%c,%c,%cn,a,b,c); printf(%c,%c,%cn,x,y,z);若:a =101 ,b =141,c= 60;若:x =x41,y =x61,z=x30; 转义字符举例输出: A,a,0
19、输出: A,a,0表示 A 八进制101十进制的65表示 a表示 0表示 A 十六进制41十进制的65表示 a表示 030ddd 表示1到3个八进制数字对应ASCII字符pr31分析程序看结果【例】转义字符应用举例。/* 字符输出与转义字符应用 */#include void main( ) printf(abct defrgthn); printf(it jkbbbl m); printf(Yb=n);31分析程序看结果【例】转义字符应用举例。1. 运算符运算符 x = 5 + b * c 算术运算符赋值运算符关系运算符逻辑运算符逗号运算符条件运算符 C 中运算符四、C语言的运算符和表达式3
20、21. 运算符运算符 x = 5 + b * c 算术运算2、运算符的优先级顺序33优先级高优先级低2、运算符的优先级顺序33优先级高优先级低34* 优先级:运算符的执行顺序 * 结合性:优先级相同时的结合方向一元运算符的优先级高于二元运算符,二元运算符的优先级高于三元运算符;算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符一元运算符从右向左结合(右结合)多数二元运算符从左向右结合(左结合)运算符的优先级与结合性34* 优先级:运算符的执行顺序 * 结合性:优先级相同时353、表达式书写方法必须在一行内书写,没有上(下)角标。为保证运算次序,必要时可以加小括号进行限定,并且只
21、能用小括号。不能出现C语言中不允许的字符,如、等。353、表达式书写方法必须在一行内书写,没有上(下)角标。361)算数表达式用算术运算符和小括号将运算量连接起来的、符合C语言语法规则的式子,称为C语言的算术表达式。 举例:4+8A18/55.5*45%2(b+sqrt(b*b4*a*c)/(2*a) 5.6%2 (不正确)361)算数表达式用算术运算符和小括号将运算量连接起来的、符371)将一个常量或一个表达式的值赋给一个变量称为赋值,含有赋值运算符的表达式称为赋值表达式 。x = 5 y = x + 10 2)可以将一个实型赋给一个整型,或将一个整型赋给一个实型int x; x=5.3;
22、x的值为 5float y; y=5; y的值为 5.0000003)赋值运算的优先级比算术运算低4)赋值运算的结合性从右向左x = y = 52)赋值运算符与赋值表达式371)将一个常量或一个表达式的值赋给一个变量称为赋值,含有38关于赋值表达式的几点说明:赋值号“=”的左边必须是一个变量名(一般称为左值),赋值号的右边必须是C语言中合法的表达式。赋值运算符的优先级只比逗号运算符高,比其他所有运算符优先级别都低(14级)。赋值运算符具有右结合性。赋值运算的功能是先求出右边表达式的值,然后把此值赋给左边的变量。确切地讲,就是把数据(表达式计算结果)放入该变量的存储单元中去。赋值表达式的值就是被
23、赋值的变量的值。在定义变量时不允许连续赋值。例如,int a=b=c=5; 是不合法的。如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型转换成左边的类型。 38关于赋值表达式的几点说明:赋值号“=”的左边必须是一个变39赋值表达式应用举例【例】 分析下列程序。/* 赋值时类型转换示例 */#include void main() int a,b=322; float x,y=8.88; char c1=a,c2; a=y; x=b; a=c1; c2=b; printf(%d,%f,%d,%c,a,x,a,c2);39赋值表达式应用举例【例】 分析下列程序。40
24、a+=5 a=a+5赋值运算符两侧出现相同的变量 算术运算与赋值运算相结合3)复合赋值运算符和赋值表达式格式:变量 双目操作符= 表达式;二元操作符:+、-、*、/、%、0?打印a的值选择结构YNX0?打印a的值选择56一般每个程序都要用到数据的输入输出。数据输入:通过外设将数据输入内存。数据输出:将内存的数据通过外设输出。 C语言的输入输出通过调用系统函数实现,这些输入输出函数一般存于stdio.h库文件。使用输入输出函数要用预译命令指出连接的库文件,程序编译连接时将其与用户程序相连。如:#include 或#include stdio.h 1、输入输出的含义56一般每个程序都要用到数据的输
25、入输出。 C语言的输入572、格式输入输出函数【例】输入一个整数半径,以单精度数形式输出圆的面积。 #include int main() int r; float s=0; printf(请输入圆的半径:); scanf(%d,&r); s=3.1415926*r*r; printf(圆的面积是:%fn, s); return 0;572、格式输入输出函数【例】输入一个整数半径,以单精度数形58格式:printf(格式控制串,输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息
26、格式说明:%修饰符格式字符 ,用于指定输出格式普通字符或转义序列:原样输出3、格式输出函数-158格式:printf(格式控制串,输出表)输出表:要输59int a=567;printf (“%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=567;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;p
27、rintf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+002567.789000567.789%3、格式输出函数-2说明:除X、E、G外,格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应,否则,若格式字符少,按其个数自左向右输出值,若格式字符多,多出的将输出不确定值.输出转换:格式字符与输出项类型不一致,自动按指定格式输出,但int与float不能互用 。59int a=567;printf (“%d”,a);in60附加格式说明符(修饰符)60附加格式说明符(修饰符)614、格式输入函数-1格式: scanf(格式控制参数,地址表
28、)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返回值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e例 scanf(%d,&a); 输入:10 则 a=10例 scanf(%x,&a); 输入:11 则 a=17614、格式输入函数-1格式: scanf(格式控制参数624、格式输入函数-2d, i输入有符号的十进制数u输入无符号的十进制数o输入无符号的八进制数x,X输入无符号的十六进制数c输入单个字符,空格、回车、制表符等也作为有效字符输入s输入字符串,以非空白字符开始,遇到第一个空白字符(包括空格、回车
29、、制表符)时结束f输入实数,小数、指数形式均可E,e,g,G与f作用相同624、格式输入函数-2d, i输入有符号的十进制数u输入63附加格式说明符(修饰符)l修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输入为long型整数用于e,f前,指定输入为long double型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 输入 19991015 则1999yy, 10 mm, 15 dd例 scanf(“%3d%*4d%f”,&k,&f); 输入 12345
30、678765.43 则123k, 8765.43f例 scanf(“%2d%*3d%2d”,&a,&b); 输入 1234567 则12a, 67b例 scanf(“%3c%2c”,&c1,&c2); 输入 abcde 则ac1, d c263附加格式说明符(修饰符)l修饰符功 64一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例 scanf(%d%o%x,&a,&b,&c); printf(a=%d,b=%d,c=%dn,a,b,c); 输入 123 123 123 输出 a=123,b=83,c=291例 scanf(a=%d,b=%d,c=%d, &a,
31、&b, &c); 输入 a=12,b=24,c=36 输入分隔符的指定-1例 scanf(%d:%d:%d, &h, &m, &s); 输入 12:30:45 则12 h, 30 m, 45 s例 scanf(%d,%d, &a, &b) 输入 3,4 则3a, 4 b64一般以空格、TAB或回车键作为分隔符例 scanf(65说明:用“%c”格式符时,空格和转义字符作为有效字符输入输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入输入函数留下的“垃圾”:解决方法:(1) 用getchar()清除(2) 用函数fflush(stdin)清除全部剩余内容(3) 用格
32、式串中空格或“%*c”来“吃掉”(4) 用%1s代替%c,因为它完全忽略空格和回车符输入分隔符的指定-265说明:输入数据时,遇以下情况认为该数据结束:解决方法:输例 int x; char ch; scanf(%d, &x); scanf(%c, &ch);或 scanf(%*c%c, &ch); scanf(%1s, &ch);例 int x; char ch; scanf(%d, &x); ch=getchar(); printf(x=%d,ch=%dn, x, ch);执行:123输出:x=123,ch=10例 int x; char ch; scanf(%d,&x); scanf(%
33、c,&ch); printf(x=%d,ch=%dn, x, ch);执行:123输出:x=123,ch=1066例: scanf(%c%c%c, &c1, &c2, &c3); 若输入abc 则ac1, c2, b c3例: scanf(%d%c%f,&a,&b,&c); 若输入1234a123o.26 则 1234 a, a b, 123 c输入分隔符的示例例 int x;例 int x;例 int x;66例67格式:getchar( )功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1)getchar函数注意:getchar( )函数没有参数,本身不能提供用于存放
34、字符的变量,因此一般使用形式为:变量=getchar()利用getchar( )读入字符时,不是读入一个字符后立刻响应,而是先读入缓冲区,待回车后再一并执行。通常用前置printf( )函数加入提示信息。getchar()从键盘缓冲区中自左向右顺序读取数据的(这被称为数据流)。5、字符输入函数67格式:getchar( )getchar函数注意:5、字68#include int main() char ch1,ch2,ch3; ch1=getchar( ); /从键盘输入一个字符并存到ch1中 getchar( ); /消除回车符的影响,即吃掉回车符号 ch2=getchar( ); /从键盘输入一个字符并存到ch2中 getchar( ); ch3=getchar( ); /从键盘输入一个字符并存到ch3中 printf(%c%c%cn,ch1,ch2,ch3); return 0;getchar函数使用示例68#includ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 子宫破裂的观察及护理
- 付款逾期责任协议
- 基因分析与研究培训协议
- 放射性同位素在医学影像中的应用
- 阿坝师范学院《回归分析》2023-2024学年第一学期期末试卷
- 阿里地区札达县2025届小升初全真数学模拟预测卷含解析
- 陕西工业职业技术学院《计算机组成与系统结构》2023-2024学年第二学期期末试卷
- 陕西师范大学附中2024-2025学年高三第一模拟考试物理试题含解析
- 陕西省咸阳市旬邑中学2025届高三5月调研考试(语文试题文)试题含解析
- 陕西省延安市宝塔区蟠龙镇初级中学2025年小升初数学综合练习卷含解析
- 2025-2030国内儿童绘本行业市场发展分析及发展前景与投资机会研究报告
- 2025年四川省建筑安全员C证(专职安全员)考试题库
- 2025年美丽中国第六届全国国家版图知识竞赛题库及答案(中小学组)
- 2024-2025学年北师大版数学七年级下第一次月考模拟练习(含答案)
- 2025年上半年芜湖市国企招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024年四川成都中考满分作文《爱拼才会赢》
- 2025年围手术期试题及答案三基
- 《婴幼儿心理发展》课件-任务一 婴幼儿心理学的研究对象与研究
- 第八章 统计与概率 第2节 概率 学案(含答案)2025年中考数学人教版一轮复习
- 《海事法规体系讲解》课件
- 2025年广西职业院校技能大赛高职组(智慧物流赛项)参考试题库及答案
评论
0/150
提交评论