chC语言基础语法实用.pptx
2.以下叙述正确的是()A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句 D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误c第1页/共51页3.以下叙述不正确的是()A.一个C源程序可由一个或多个函数组成 B.一个C源程序必须包含一个main函数 C.C程序的基本组成单位是函数 D.在C程序中,注释说明只能位于一条语句的后面D第2页/共51页4.C语言规定:在一个源程序中,main函数的位置()A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后C第3页/共51页5.一个C语言程序是由()A.一个主程序和若干子程序组成 B.函数组成 C.若干过程组成 D.若干子程序组成B第4页/共51页6.C源程序的基本单位是()7.一个C源程序中至少应包括一个()函数主函数第5页/共51页编程题 编写一个C程序,输入a,b,c3个值,输出其中最大者。第6页/共51页#includevoid main()int a,b,c,max;printf(please input a,b,c:n);scanf(%d,%d,%d,&a,&b,&c);max=a;If(maxb)max=b;if(maxc)max=c;printf(the largest number is%d,max);参考代码:第7页/共51页第2 2章 数据类型和表达式2.1基本数据类型2.2常量与变量2.3整型数据2.4实型数据2.5字符型数据2.6数据类型转换2.7算术运算符和算术表达式2.8赋值运算符和赋值表达式2.9逗号运算符和逗号表达式第8页/共51页本章学习目标理解变量和常量的含义熟悉基本数据类型:int、char、float和double使用算术运算符理解类型转换熟练掌握自增和自减运算熟练掌握复合赋值表达式第9页/共51页2.12.1 基本数据类型数据属于不同类别AfricaThe quick brown foxTRUE数据 非数值数值整型非整型9002.129999/12/20032.175123Jackie Chanchar数据类型非数值数值整型intshort intlong intdoublefloat非整型第10页/共51页C数据类型指针类型空类型void定义类型typedef构造类型枚举类型enum数组结构体struct共用体union基本类型字符类型char整 型实型单精度型float双精度型double短整型short长整型long整型int数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作第11页/共51页常量字符串常量:”Hello”、”Good Morning!”整型:12、0、-3实型:4.6、-1.23字符型:a、d在程序运行过程中,其值不能改变的量称为常量不同的数据类型2.2 常量与变量第12页/共51页符号常量:标识符代表常量定义格式:#define 说明:符号常量一般使用大写英文字母表示,以区别一般用于小写字母表示的变量。符号常量定义举例#define PI 3.1415926#define STAR*第13页/共51页符号常量使用(例2.1)#define MONEY 500Void main()int year,month,total;year=4;month=9;total=year*month*MONEY;printf(total=%d,total);符号常量的使用能给程序员带来哪些好处?说明:说明:程序中用#define命令行定义MONEY代表常量30,此后凡在本文件中出现的MONEY都代表30,可以和常量一样进行运算。说明:说明:如再用赋值语句给MONEY赋值是错的。MONEY=400;/*错误,不能给符号常量赋值*/第14页/共51页注意:nC语言中常量习惯用大写字母!第15页/共51页在程序运行过程中,其值可以被改变的量称为变量。变量第16页/共51页变量定义的一般格式数据类型 变量1,变量2,变量n;决定分配字节数和数的表示范围变量定义举例:int a,b,c;float data;第17页/共51页变量的3个要素:(1)变量名。每个变量都必须有一个名称。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。(3)变量的类型 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1二进制数值不同编译器所占的位置不同例如:int a=23;变量的类型 int 变量名字:a 变量的值:23 在内存中存储单元占16位第18页/共51页变量命名在 C 语言中,变量命名需要遵循一定的规则变量的命名规则:变量名可以由字母、数字和 _(下划线)组合而成变量名不能包含除 _ 以外的任何特殊字符,如:%、#、逗号、空格等变量名必须以字母或 _(下划线)开头变量名不能包含空白字符(换行符、空格和制表符称为空白字符)C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名C 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量第19页/共51页变量命名有效名称principalcost_pricemarks_3lastnamecity无效名称123ratecurrency$discount%zip code变量的命名规则:变量名可以由字母、数字和 _(下划线)组合而成变量名不能包含除 _ 以外的任何特殊字符,如:%、#、逗号、空格等变量名必须以字母或 _(下划线)开头变量名不能包含空白字符(换行符、空格和制表符称为空白字符)C 语言中的某些词(例如 int 和 float 等)称为保留字,具有特殊意义,不能用作变量名C 语言区分大小写,因此变量 price 与变量 PRICE 是两个不同的变量专业提醒:标识符命名通常应选择能表示数据含义的英文单词(或缩写)作变量名,或汉语拼音字头作变量名。通过变量名就知道变量值的含义,做到“见名知意”。例如:name 姓名 sex 性别 age 年龄 salary 工资 第20页/共51页 讨论:判断下列标识符号合法性sumSumM.D.JohndayDate3days student_name#33lotus_1_2_3charababove$123 _toDayM.D.John3days#33char$123ab第21页/共51页变量的使用:“先定义,后使用”例1 int student;stadent=19;/Undefined symbol stadent in function main 例2 int a,b;/为a,b各分配两个字节,按整数方式存储数据例3 float a,b,c;c=a%b;/illegal use of floating point in function main(1)凡未被事先定义的,系统不把它认作变量名,这就能保证程序中变量名使用得正确。(2)每一个变量被指定为一个确定的类型,在编译时就能为其分配相应的存储单元。(3)指定每一个变量属于一种类型,这就便于在编译时据此检查在程序中要求对该变量进行的运算是否合法。第22页/共51页例例3.3 3.3 输出变量的数值。输出变量的数值。void main()int x,y;x=5;y=3;printf(“%d-%dn”,x,y);x=1;y=2;printf(“%d-%dn”,x,y);x、y是整型变量每个变量分配2个字节存储单元将数值5、3分别存放到x、y变量的存储单元x、y变量的值重新赋值运行结果:5-3 1-2思考下列代码的运行结果?第23页/共51页3.3.1整型常量的表示方法 整型常量即整数。在语言中,整常数可用整型常量即整数。在语言中,整常数可用3 3种形式种形式表示表示,并且各种数制均可有正(并且各种数制均可有正(+)负()负(-)之分,正数的)之分,正数的“+”可省略:可省略:形式表示方式举例十进制整数由数字09表示123,-456,0123,-456,0八进制整数由数字0开头,后跟数字07表示0123,0110123,011十六进制整数由0 x开头,后跟09,af,AF表示0 x123,0Xff0 x123,0Xff2.3 整型数据第24页/共51页25整型常量的输出实例#includemain()printf(“0 x80-%d n,0 x80);printf(“0200-%d n,0200);printf(128-%d n,128);printf(128-%o n,128);运行结果:0 x80-128 0200-128 128-128128-200第25页/共51页26真题再现(2009年9月)以下选项中可作为C语言合法整数的是()A.10110B B.0386C.0XffaD.x2a2C第26页/共51页27整型变量的分类名称全称类型说明符缩写类型说明符位数 范围整型整型intint16-32768 至+32767无符号整型无符号整型unsigned intunsigned160 至 65,535短整型短整型short intshort16-32768 至+32767无符号短整型无符号短整型unsigned short intunsigned short160 至 65,535长整型长整型long intlong32-2,147,483,648 至 2,147,483,647无符号长整型无符号长整型unsigned long intunsigned long320 至 4,294,967,295第27页/共51页28整型变量的定义声明:int page_number;long int population;unsigned int age;可按如下方式赋值:int page_number;page_number0;int max_marks=100;在同一语句中可以声明多个类型相同的变量:int page_number,copies,paper_width;第28页/共51页29例3.2 整型变量的定义与使用#include void main()int a,b,c,d;unsigned u;a=12;b=-24;u=10;c=a+u;d=b+u;printf(a+u=%d,b+u=%dn,c,d);运行结果:,说明说明:可以看到不同种类的整型数据可以进行算术运算 第29页/共51页30思考下列代码的执行结果?#include void main()short int a,b;a=32767;b=a+1;printf(%d,%dn,a,b);运行结果:32767,-32768说明:说明:一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。演示第30页/共51页31真题再现 在C语言中表示整型变量时,表示无符号短整型的是()。A.Unsigned longB.Unsigned shortC.Unsigned int D.shortB第31页/共51页2.4.1浮点型常量的表示方法十进制数形式实型常量0.123,.123,123.0,0.0,123.指数形式实型常量12.3e3,123E2,1.23e4,e-5 ,1.2E-3.5,.e32.4 2.4 实型数据 表示形式指数形式:E(e)(e或E之前必须有数字;指数为整数)十进制小数形式:由数字和小数点组成第32页/共51页真题再现(2004年4月)以下符合C语言语法的实型常量是()A.1.2E0.5B.3.14159EC.5E-3D.E15C第33页/共51页(2)实型数据的分类 类型类型比特数比特数有效数字有效数字数值范围数值范围float3267-10381038double641516-1030810308long double1281819-104932104932第34页/共51页单精度浮点型 float 在 C 语言中用于存储单精度浮点数float32 位-10+38 至 10+38,7位有效数字声明:float selling_price;初始化:float selling_price=11.3;selling_price=65.90;第35页/共51页双精度浮点型内存floatdouble213.5671435568967 64位取值范围:-10+308 至 1030816 位有效数字声明:double pressure_level;初始化:pressure_level=213.5671435568967;double dvalue=35.4;第36页/共51页37#include void main()double a;float b;a=123456789.1;b=a+1;printf(a=%fn,a);printf(b=%fn,b);说明:说明:一个浮点型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数(3)实型数据的误差 演示第37页/共51页在线保险单在线保险单年龄:_保险总额:_性别:_2398340 M int/floatchar2.5 字符型数据第38页/共51页转义字符:有些以“”开头的特殊字符称为转义字符。转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例 转义字符举例main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo Ca,A,1,?,$abc、“a”2.5.1 字符常量用单引号包含的一个字符是字符型常量,只能包含一个字符.第39页/共51页真题再现下列字符中不是C语言转义字符的是()A.n B.t C.065 D.089D第40页/共51页在下列字符常量中,表示回车的是()A.t B.b C.n D.rD第41页/共51页q字符变量的定义形式如下:char c1,c2q在程序中可以用2种方法给字符变量赋值,1是直接将字符赋给变量,2是将字符的ASCII码赋给变量:char c1a;char c197;q一个字符变量在内存中占1个字节。q字符变量用来存放字符常量,注意只能放1个字符。2.5.3 字符变量第42页/共51页43所以:根据需要,一个字符数据既可以以字符形式输出,也可以以整数形式输出。2.5.3 字符数据在内存的存储形式 一个字符常量存放到一个字符变量中,实际上并不是把该字符放到内存中去,而是将该字符的ASCII码放到存储单元中。第43页/共51页44qq说明:说明:在第和第4行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句:c1;c2;因为a和b的ASCII码为97和98例2.6 向字符变量赋以整数。#include void main()char c1,c2;c1=97;c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);q运行结果:97 98第44页/共51页45思考:下列程序实现了什么功能?#include#include void main()void main()char c1,c2 char c1,c2;c1=a;c1=a;c2=b;c2=b;c1=c1-32;c1=c1-32;c2=c2-32;c2=c2-32;printf(“printf(“c c cc,c1,c2c1,c2);qq说明:说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。每一个小写字母比它相应的大写字母的ASCII码大32。语言允许字符数据与整数直接进行算术运算。q运行结果:第45页/共51页46真题再现若有定义语句:char x=97;则()。A.x的值是97B.该定义是错误的C.x的值是aD.无法判断x的值C第46页/共51页47q合法的字符串常量:“How do you do.”,“CHINA”,“a”,“$123.45”q可以输出一个字符串,如printf(“How do you do.”);2.5.2 字符串常量字符串常量是一对双撇号括起来的字符序列。第47页/共51页48字符与字符串的区分 结论:不能把一个字符串常量赋给一个字符变量。C语言中不存在字符串变量!是字符常量,”是字符串常量 如:假设被指定为字符变量:char c c=a;”a”;c”CHINA”;第48页/共51页49 a 和“a”不同的主要原因“a”,他不是一个人!有东西附体!规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。规定以字符作为字符串结束标志。a a 0例 a“a”第49页/共51页50字符常量 与字符串常量 的区别:定界符不同:字符常量使用单引号 ,而字符串常量使用双引号 ;存储要求不同:字符常量存储的是一个字符,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志 0 。第50页/共51页51感谢您的欣赏!第51页/共51页