【文档说明】C语言基本语法课件.ppt,共(74)页,2.242 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44568.html
以下为本文档部分文字说明:
北京理工大学珠海学院第二讲C语言的基本语法1本讲主要内容2C语言的基本元素1C语言的数据类型2C语言的常量和变量3C语言的运算符和表达式4C语言的基本输入输出语句531、基本字符集数字:0123456789字母:abc……zAB
C……Z运算符:+-*/%=<><=>=!===<<>>&|&&||^~()[]{}.!?:,;''''''特殊符号:_(下划线)、回车(\r)、换行(\n)制表符(\t)等ASCII字符集一、C语言的基本元素--142.标识符标识
符内容:常量名、变量名、数组名、类型名、存储方式名、函数名、文件名等。标识符规则:字母或_(下划线)开头,后面是字母、_(下划线)或数字组成的字符串,要求见名知意。call_ntest39_string1ab
ccall..n39test-string1c2.0例合法非法一、C语言的基本元素--2√×5标识符说明(1)在C语言中,标识符中大小写字母是有区别的。程序中基本上都采用小写字母表示各种标识符,如变量名、数组名、函数名等。书写的各种语句也均用小写字母,而大写字母
只用来定义宏名等,用的不多。(2)不同的系统对标识符的长度有不同的要求,有的要求为6个字符,有的允许使用8个字符,而VS2012的标识符有效长度不受限制。(3)除了少数情况下使用单个字符作标识符外(如:循环变量名),一般的应做到
见名知意,以提高程序的可读性。如用sum表示和,score表示成绩,max表示最大等等。63.关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterretur
nshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile又称标准标识符或保留字(32个)由C语言系统定义一、C语言的基本元素--374
.运算符进行运算处理的符号[](数组下标)、()、.、->(成员选择)-(负号)、~(求反)、++(递增)、--(递减)、*(指针取值)、&(指针取地址)!(逻辑非)、sizeof(求数据类型或变量对应内存的字节数)、/(除法)、*(乘法)、%(取模)、+(加法)、-
(减法)、<<(左移)、>>(右移)<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)&(位与)、^(异或)、|(位或)、&&(逻辑与)、||(逻辑或)?:(条件运算符)=(赋值)、+=、-=、*=、/=、%=、<<
=、>>=、&=、^=、|=,(逗号运算符)x+yx%y2*x-ya>bx=a+=3x>y&&a>ba=2,a+3,a++--i例一、C语言的基本元素--485.分隔符用来分隔标识符间或标识符与关键字间的符号分隔符内容:空格字符、水平制表符、垂直制表符、换行符
、换页符及注释和逗号等,也称为空白字符。分隔规则:在相邻的变量、关键字和常量、函数之间需要用一个或多个空白字符(其效果是一样的)将其分开。逗号也是分隔符,用于相邻同类项之间的分隔。例如编程计算1+2案例中定义变量语句:intx=1,y=2
,z;一、C语言的基本元素--59C语言把处理的数据进行分类,从数据的表示、取值范围和对应的操作等方面进行划分,形成不同的数据类型通过程序中数据类型的描述确定存放数据的空间大小,确保C程序中的每个数据都属于一个确定的、具体的数据类型。不同类型数据采取
不同的存储形式;不同类型数据在内存中占有不同的存储空间;不同类型数据对应不同的取值范围;不同类型数据确定了允许对其进行不同的操作类型。1、数据类型的含义二、数据类型10数据类型构造类型指针类型空类型(无值类型)void枚举类型enum数组类型结构类型struct联合
类型union基本类型整型int字符型char实型(浮点型)单精度实型float双精度实型double二、数据类型11按照数据在程序中的取值分为两类:值保持不变-----常量x=2+y值随程序运行变化-----变量基本类型整型int字符型char实型单精度float双精度double基
本数据类型121、整型数据--1整型数据包括整型常量和整型变量六种形式基本整型短整型长整型无符号整型无符号短整型无符号长整型intshortintlongintunsignedintunsignedshortunsigne
dlong13类型说明符长度数的范围基本型int4字节-231~231-1短整型short2字节-215~215-1长整型long4字节-231~231-1无符号整型unsigned4字节0~232-1无符号短整型unsignedshort2字节0
~216-1无符号长整型unsignedlong4字节0~232-1整型变量的取值范围(在VS2010中)1、整型数据--214有符号与无符号整型数的区别11111111111111111111111111111111a=则:uns
igneda=232-1=4294967295,而inta=-111111111111111111000000000000000a=则:unsigneda=215=32768,而inta=-215=-32768int带符号整数,最高位为符号位1为负数补码uns
igned无符号整数,最高位为数值位=232-1=4294967295151.求法:正数的补码与原码相同;负数的补码对原码除符号位外,按位变反,末位加1,即得补码。或者由反码加1也可求得补码。[+0]补=[-0]补=0[0]补的两种表示是什么?数的补码表示2.补码的表示范围当n=16时,补
码的表示范围是:[+127]补=0000000001111111[-128]补=1111111110000000-128~+127由此可得补码表示范围的公式是–2n–1~(2n–1–1)16数的补码举例问题:已知a=4
,b=16,计算4-16根据[a]补+[b]补=[a+b]补有:[a+b]补=[+4]补+[–16]补1111010000000100+11110000结果为负时得到负数的补码,需再求补得原码:100011
00[–16]原=10010000连同符号一起运算解答[4]补=00000100[–16]反=11101111[–16]补=11110000171)定义形式三种形式单精度双精度长双精度floatdoublelongdouble2)占存储空间4816注意:实型常量不区分单精度和双精度!
2、实型数据--1实型数据就是数学中的实数,一律作为有符号的数据使用。184)输入输出形式%f,%lf3)变量的取值范围类型长度数的范围有效数字单精度float410-38~10386~7位双精度double810-308~1030815~16位长双精度longdouble
1610-4931~10493218~19位2、实型数据--219实型数据在计算机中以指数形式存储,单精度float变量占四个字节。一个字节存放指数部分,三个字节存数值部分。2-23<=|尾数|<=1-2-235)float型数的表示范围
000000000000000000000001最小尾数=2-23二进制7位二进制23位单精度实型数符尾数阶码阶符最大尾数=1-2-230111111111111111111111112、实型数据--3203、字符型字符型常量:'a'、'b'字符型变量:charch;C语言采用
ASCII码字符集,即用1个字节存放1个字符的ASCII码值。字符型使用关键字char表示,ASCII码值的范围为0~255。211)在程序运行中,其值保持不变2)表示方法:3)符号常量:#definePI3.14159又称为宏定义,给常量定义一个标识符,称宏名,大写。
三、C语言的常量和变量整型100,125,-100实型3.14,0.125字符型'a','b'字符串常量"string"1、常量22宏定义应用举例/*符号常量(宏定义)的使用*/#include<stdio.h>//定
义符号常量PRICE,值为30#definePRICE30voidmain(){intnum,total;num=10;total=num*PRICE;//使用符号常量printf("total=%d
",total);}#include<stdio.h>//定义符号常量PI,值为3.1415926#definePI3.1415926voidmain(){floatr,s;r=2.3;s=PI*r*r;printf("%f"
,s);}233.变量通过变量名来标识。1.在程序运行中,值发生变化;2.必须先定义,再使用;inta=3,b=10;类型变量名表内存a3变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。2、变量b1024(1)以字母或下
划线开头,后面可以跟字母、下划线和数字(2)不能用系统中的关键字作为变量名(3)变量名中的字母是区分大小写的:sum、stu_name、_age、Lts_1_2、a232c、x.y、start+9、c
2.0非法NAMEname表示两个不同的标识符。有关变量名的规定25变量定义格式[存储类型]数据类型关键字变量名标识符;【例】定义变量示例inta;unsignedlongsum;floatr;charch;inta,b,c=4;26定义多个同类型变量方法在同一个语句中可以定义两个及两个
以上相同类型的变量。规定:变量名之间用逗号作为间隔符,第一个变量名与数据类型关键字之间用空格(空格的个数不限)作为间隔符。例如:doublex,y;271)定义形式:2)占存储空间:1个字节char变量表
;3)输入输出形式:%c'a'ASCII值为97内存中存储形式011000014)字符型数据在内存中以相应的ASCII值存储3.字符型变量28以“\”开头后跟一个特殊字符或数字称为转义字符。\n换行\t
横向跳格(制表符)\r回车\\反斜杠\dddddd表示1到3个八进制数字\xhhhhhh表示1到3个十六进制数字printf("%d\t%d\t",a,b);printf("%d\n%d\n",a,b);若:a为1
,b为0,则4、转义字符输出:101029转义字符表示法30\ddd表示1到3个八进制数字对应ASCII字符\xhhh表示1到3个十六进制数字对应ASCII字符\101\141\60\x41\x61\x30printf("%c,%c,%c\n"
,a,b,c);printf("%c,%c,%c\n",x,y,z);若:a='\101',b='\141',c='\60';若:x='\x41',y='\x61',z='\x30';转义字符举例输出:A,a,
0输出:A,a,0表示'A'八进制101十进制的65表示'a'表示'0'表示'A'十六进制41十进制的65表示'a'表示'0'31分析程序看结果【例】转义字符应用举例。/*字符输出与转义字符应用*/#include<st
dio.h>voidmain(){printf("abc\tdef\rg\th\n");printf("i\tjk\b\b\blm");printf("Y\b=\n");}1.运算符运算符x=5+b*c算术运算符赋值运算
符关系运算符逻辑运算符逗号运算符条件运算符……C中运算符四、C语言的运算符和表达式322、运算符的优先级顺序33优先级高优先级低34*优先级:运算符的执行顺序*结合性:优先级相同时的结合方向一元运算符的优先级高于二元运算符,二元运算符的优先级高于三元运算符
;算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符一元运算符从右向左结合(右结合)多数二元运算符从左向右结合(左结合)运算符的优先级与结合性353、表达式书写方法必须在一行内书写,没有上(下)角标。为保证运算次序,必要时可以加小括号进行限定,并且只能用
小括号。不能出现C语言中不允许的字符,如≤、≠等。361)算数表达式•用算术运算符和小括号将运算量连接起来的、符合C语言语法规则的式子,称为C语言的算术表达式。•举例:–4+8–'A'1–8/5–5.5*4–5%2–(b+sqrt(b*b4*a*c))/(2*a)–5.6%
2(不正确)371)将一个常量或一个表达式的值赋给一个变量称为赋值,含有赋值运算符的表达式称为赋值表达式。x=5y=x+102)可以将一个实型赋给一个整型,或将一个整型赋给一个实型intx;x=5.3;x的值为
5floaty;y=5;y的值为5.0000003)赋值运算的优先级比算术运算低4)赋值运算的结合性从右向左x=y=52)赋值运算符与赋值表达式38关于赋值表达式的几点说明:赋值号“=”的左边必须是一个变量名
(一般称为左值),赋值号的右边必须是C语言中合法的表达式。赋值运算符的优先级只比逗号运算符高,比其他所有运算符优先级别都低(14级)。赋值运算符具有右结合性。赋值运算的功能是先求出右边表达式的值,然后把此值赋给左边的变量。确切地讲,就是把数据(表达式计算结果)
放入该变量的存储单元中去。赋值表达式的值就是被赋值的变量的值。在定义变量时不允许连续赋值。例如,inta=b=c=5;是不合法的。如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型转换成左边的类型。39赋值表达式应用举例【例】分析下列程序
。/*赋值时类型转换示例*/#include<stdio.h>voidmain(){inta,b=322;floatx,y=8.88;charc1='a',c2;a=y;x=b;a=c1;c2=b;printf("%d,%f,%d,%c",a,x,a,c2);}40a+=5a=a+
5赋值运算符两侧出现相同的变量算术运算与赋值运算相结合3)复合赋值运算符和赋值表达式格式:变量双目操作符=表达式;二元操作符:+、-、*、/、%、>>、<<、&、¦、∧功能等价于:变量=变量双目操作符表达式;复合赋值运算符x=x+nx=x-
nx=x*nx=x/nx=x%nx+=nx-=nx*=nx/=nx%=n相当于41k=k+1k++先使用变量k的值,再加1++k先加1,再使用变量k的值k=k-1k--先使用变量k的值,再减1--k先减1,再使用变量k的值k=3;printf("
%d",k++);输出3后,k的值为4i=3;printf("%d",++i);输出4a)变量自身加(减)1:++与--4)自增、自减运算符--142b)只能用于变量,不能用于表达式和常量(i+k)++,--3c)优先级:2级,高于二元算术运算符d)结合性:从右向
左,例如-i++相当于-(i++)4)自增、自减运算符--243voidmain(){inta,b,s;a=5;b=5;s=a+b;printf("%d,%d,%d\n",a,b,s);s=a+++b;printf("%d,%d,%d\n",a,b,s);s=++a+b;printf("%d,%d
,%d\n",a,b,s);s=--a+b;printf("%d,%d,%d\n",a,b,s);s=a--+b;printf("%d,%d,%d\n",a,b,s);s=a+b;printf("%d,%d,%d\n",a,b,
s);}4)自增、自减运算符--3441.逗号运算符(表达式1,表达式2,……,表达式n)用于连接几个表达式2.求解过程顺序求解几个表达式3.优先级逗号运算符的优先级最低4.结合性从左向右5.逗号表达式逗号表达式的值为最后一个表达式的值(表达式n的值)X=((
a=4*5,a*2),a+6)a为?x为?5)逗号运算符45逗号运算符应用举例下面两个表达式是否相同?x=1+1,2+2;x=(1+1,2+2);用逗号表达式语句交换a和b两个变量中的数值:t=a,a=b,b=t;46格式:sizeof(表达式或数据类型)功能:求运算对象在内存中所占的
字节数求:printf("%d,%d\n",sizeof(int),sizeof(char));结果:4,1求:printf("%d",sizeof("AST\n012\12\\"));结果:106)size
of运算符47a)隐式转换(自动完成的)(1)赋值表达式中的类型转换如果赋值运算符左侧变量的类型与右侧表达式的类型不一致,赋值时将进行自动转换。转换的原则:将右侧表达式的值转换成左侧变量的类型。intx;
floaty=5.3;x=y;intx=5;floaty;y=x;结果:x=5结果:y=5.0000007)数据类型转换与强制类型转换符48(2)算数运算表达式中的类型转换优先级低的向优先级高的转换(类型提升)类型提升方法:必定转换、操作时的转换例如:i
nti;floatf;doubled;longe;表达式:10+'a'+i*f-d/e的结果为:double数据类型转换与强制类型转换符doublefloatlongunsignedintchar,short49格式:(类型)表达式(i
nt)(10+'a'+i*f-d/e)将该结果强制转换为整型例:inti;floatf;求:(int)f%i取模运算要求运算分量是整数,所以先将f转换为整型(实际为使用f的整数部分),再做%运算b)显式转换(强制转换)注意
:在强制类型转换时,得到一个所需类型的中间值,原来变量的类型和值不发生变化。数据类型转换与强制类型转换符501)C中的基本数据类型,要掌握每一种类型的定义方式(关键字),在存储空间中所占的字节数,存储形式,取值范围。2)
C中的运算符的几个要点(功能、与运算分量的关系、优先级、结合性、运算结果的类型)。3)算术运算符中的%只使用在int类型。4)自增,自减运算的特点,灵活使用k++,++k。数据类型与运算符总结5)复合的赋值运算规则。6)逗号运算表达式的值是最后一个表达式的值。7)不同
类型数据转换时的优先顺序。8)算术运算、赋值运算、逗号运算的优先级。9)常用转义字符的特点:\ddd、\xhhh等只占一个字节。51运算符的优先级和结合方向--152运算符的优先级和结合方向--253值得注意的几个问题求:10%3=10%-3=-10%
3=-10%-3=11-1-12.自反赋值变量双目操作=表达式功能变量=变量双目操作表达式inta=10,b=5;求:a*=b+1;printf("a=%d\n",a);a=a*(b+1)a=60计算结果如下:结论:表达式作为整体参加运算1.取模(求余数
)54程序设计基本思想:任何事情都是一件一件完成的,编写程序也不例外。每件事情用一到多条语句实现,顺序书写出来就形成程序。程序的结构清晰、易读,可以提高程序设计质量和效率。程序基本结构分为三种:顺序结构选择结构循环结构五、C
语言基本的输入输出程序结构55AB顺序结构条件ABYNaa>0?打印a的值选择结构YNX<=100?x=1sum=0语句条件循环结构56一般每个程序都要用到数据的输入输出。数据输入:通过外设将数据输入内存。数据输出:将内存的数据通过外设输出。C语言的输入
输出通过调用系统函数实现,这些输入输出函数一般存于stdio.h库文件。使用输入输出函数要用预译命令指出连接的库文件,程序编译连接时将其与用户程序相连。如:#include<stdio.h>或#include"stdio.h"1、输入输出的含义572、格式输
入输出函数【例】输入一个整数半径,以单精度数形式输出圆的面积。#include<stdio.h>intmain(){intr;floats=0;printf("请输入圆的半径:");scanf("%d",&r);s=3.1415926*r*r;printf("圆的面积是:%f\n",s);
return0;}58格式:printf("格式控制串",输出表)功能:按指定格式向显示器输出数据返值:正常,返回输出字节数;出错,返回EOF(-1)输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%
[修饰符]格式字符,用于指定输出格式普通字符或转义序列:原样输出3、格式输出函数--159inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf
(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);float
a=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+002567.789000567.789%3、格式输出函数--2说明:除X、E、G外,格式字符要用小写
格式字符与输出项个数应相同,按先后顺序一一对应,否则,若格式字符少,按其个数自左向右输出值,若格式字符多,多出的将输出不确定值.输出转换:格式字符与输出项类型不一致,自动按指定格式输出,但int与float不能互用。60附加格式说明符(修饰符)61
4、格式输入函数--1格式:scanf("格式控制参数",地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返回值:正常,返回输入数据个数地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f
,e例scanf("%d",&a);输入:10则a=10例scanf("%x",&a);输入:11则a=17624、格式输入函数--2d,i输入有符号的十进制数u输入无符号的十进制数o输入无符号的八进制数x,X输入无符号的十六进制数c输入单个字符,空格、回车、制表符等也作为有效字符输入
s输入字符串,以非空白字符开始,遇到第一个空白字符(包括空格、回车、制表符)时结束f输入实数,小数、指数形式均可E,e,g,G与f作用相同63附加格式说明符(修饰符)l修饰符功能hm*用于d,o,x前,指定输入为short型整数用于d,o,x前,指定输
入为long型整数用于e,f前,指定输入为longdouble型实数指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量例scanf(“%4d%2d%2d”,&yy,&mm,&dd);
输入19991015则1999yy,10mm,15dd例scanf(“%3d%*4d%f”,&k,&f);输入12345678765.43则123k,8765.43f例scanf(“%2d•%*3d•%2d”,&a,&b);输入12•345•
67则12a,67b例scanf(“%3c%2c”,&c1,&c2);输入abcde则‘a‟c1,„d‟c264一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例scanf("%d%
o%x",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);输入123123123输出a=123,b=83,c=291例scanf("a=%d,b=%d,c=%d",&a,&b,&c);输入a=12,b=24,c=36输入分隔符的指定--1例scanf(
"%d:%d:%d",&h,&m,&s);输入12:30:45则12h,30m,45s例scanf("%d,%d",&a,&b)输入3,4则3a,4b65•说明:–用“%c”格式符时,空格和转义字符作为有效字符输入输入数据时,遇以下情况认为该数
据结束:遇空格、TAB、或回车遇宽度结束遇非法输入输入函数留下的“垃圾”:解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容(3)用格式串中空格或“%*c”来“吃掉”(4)用%1s代替%c,因为它完全忽略空
格和回车符输入分隔符的指定--2例intx;charch;scanf("%d",&x);scanf("%c",&ch);或scanf("%*c%c",&ch);scanf("%1s",&ch);例intx;charch;scanf("%d",&x);ch=getchar();prin
tf("x=%d,ch=%d\n",x,ch);执行:123输出:x=123,ch=10例intx;charch;scanf("%d",&x);scanf("%c",&ch);printf("x=%d,ch=%d\n",x,ch);执行:123
输出:x=123,ch=1066例:scanf("%c%c%c",&c1,&c2,&c3);若输入a•b•c则ac1,c2,bc3例:scanf("%d%c%f",&a,&b,&c);若输入
1234a123o.26则1234a,„a‟b,123c输入分隔符的示例67格式:getchar()功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1)getchar函数注意:getchar()
函数没有参数,本身不能提供用于存放字符的变量,因此一般使用形式为:变量=getchar()利用getchar()读入字符时,不是读入一个字符后立刻响应,而是先读入缓冲区,待回车后再一并执行。通常用前置printf()
函数加入提示信息。getchar()从键盘缓冲区中自左向右顺序读取数据的(这被称为数据流)。5、字符输入函数68#include<stdio.h>intmain(){charch1,ch2,ch3;ch1=getchar();//从键盘输入一个字符并
存到ch1中getchar();//消除回车符的影响,即吃掉回车符号ch2=getchar();//从键盘输入一个字符并存到ch2中getchar();ch3=getchar();//从键盘输入一个字符并存到ch3中printf("%c%c%c\n",c
h1,ch2,ch3);return0;}getchar函数使用示例696、字符输出函数putchar函数(字符输出函数)功能:向显示器显示输出一个字符。格式:putchar(C);参数C:一个实参,可以是字符变量、整型变量、整型常量及整型表达式操作:输出C值,或整数对应的ASCII码
所表示的字符正常,函数值为显示的代码值;出错,为EOF(-1)70注:使用该函数必须将库函数stdio.h用预编译命令说明格式#include"stdio.h"或#include<stdio.h>例:#include<stdio.h>intma
in(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);return0;}输出结果BOY例:putchar('\n');输出换行putchar('\101');putchar('A');putchar(65);输
出AAAputchar函数示例71【例】putchar()函数应用。/*输出字符函数的应用*/#include<stdio.h>intmain(){charch1='a',ch2;inty=98;ch2=getchar();putchar(ch1);putchar('\n');putchar
(ch2);//输出ch2存储的字符putchar(getchar());//输出从键盘得到的字符putchar(y);putchar(65);return0;}putchar函数示例72应用示例:从键盘输入一个大写字母,转换成小写字母输出。#includ
e<stdio.h>intmain(){charch1;printf("inputachar:");ch1=getchar();ch1+=32;putchar(ch1);putchar('\n');return0;}
putchar函数示例本讲小结C语言的基本元素有:字符集、标识符、关键字、运算符、分隔符基本数据类型:int、float、double、charC语言的变量要先声明后使用C语言的常量是指其值不变的量,也
可以用宏定义#define来定义常量C语言的运算符非常丰富,有15个优先等级C语言的输入输出是要系统函数来实现的:scanf、printf、getchar、putchar73此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!