1、,参考书:C程序设计第一、二、三、四章,第一讲 C语言基础,Page 1,本讲主要内容,C语言的程序格式及结构特点 数据类型 算术运算符与算术表达式 赋值运算符和赋值表达式 逗号运算和逗号表达式 逻辑运算与逻辑表达式 赋值语句 数据输入、输出 简单程序举例,实例 #include Void main() int x, y, z;x=2;y=3;z=x+y;printf(“x+y=%dn“,z); ,程序格式 关键字及编译预处理命令成。 以分号(;)作为语句的结束符, (不是分隔符)。 没有行的概念,可任意书写。 用大括号对表示程序的层次 范围,一个完整的程序模块要 用一对包括。 不能在变量名、
2、函数名、关键 字中插入空格和空行。,C语言的程序格式,Page 3,标识符,标识符可用作变量名、函数名、数组名、文件名等 标识符的命名有一定的规则: (1).标识符只能由字母、数字和下划线三类字符组成 (2).第一个字符不能是数字 (3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符 (4).标识符可以任意长,但只位前32位有效 (5).标识符不能是C的关键字,例,下列四组选项中,均是不合法的用户标识符的选项是 。 A) W P_0 do B) b-a for int C) float la0 _A D) -123 abc TEMP,例,下列可用于C语言用户标识符的一组
3、是 A)void, define, WORD B)a3_b3, _123,Car C)For, -abc, IF Case D)2a, DO, sizeof,整型常量,在c语言中,整型常量可以用十进制、八进制、十六进制来表示。 十进制常量用一串连续的数字,32767、-989,0等。 八进制用数字0开头(注意不是字母o),如010、016等,但不能写成018等 十六进制数用数字0和字母x(或大写X)开头,如0x10、0xf等,十六进制里的字母不区分大小写。 整型常量又有短整型(shot int)、基本整型(int)、长整型(long int)和无符号型(unsigned),以下均是合法整型常量
4、的是,A 160 -0xffff 011 B -0xcdf 01a 0xe C -01 986,012 0668 D -0x48a -068 0xf A,浮点型常量,就是平常所说的实数,有两种表示方法 (1)十进制小数形式。0.123、123.、123.0、0.0、都是十进制小数形式 (2)指数形式。如123e3或123E3都代表123*103 。 注意:字母e(或E)之前必须有数字,e后面的指数必须为整数,如e2、 3.2e2.8、 e2等都是不合法的,以下均是不合法浮点数的是,A 160. 0.12 e3 B 123e 2e4.2 .e5 C -.e18 123e4 0.0 D - e3
5、.e234 1e3B,例2:可作为C语言合法常量的是,A,80 B, 080 C,8e1.0 D,0x19hd3下列均是合法整形常量的选项是A,160 -0xfff 011 B,-0xcd 01a 0xeC,-01 9865 0668 D,-0x48a 2e5 0x,字符型数据,字符常量 单引号括起来的一个字符,如:a, D, ?, $ 字符变量 用来存放字符常量 例:char c1,c2; c1=a; c2=A; 字符数据在内存中的存储形式 以ASCII码存储,占1字节,用7个二进制位,Page 12,字符型数据,字符数据的使用方法 字符数据和整型数据之间可以通用,可以按 字符形式输出,也可
6、以按整型输出。,Page 13,字符数据与整型数据可以互相赋值。 char c = a ;printf(“%d”,c); 结果我97,字符串常量 例:“CHINA“ “a“ a,所以:char c; c=“a“;,例,main()char c1,c2;c1=97;c2=98;printf(“%c %dn“,c1,c2);结果:a 98,例,运行结果: a,97 a,97,main() int i;char c;i=a;c=97;printf(“%c,%dn“,c,c);printf(“%c,%dn“,i,i); ,例,下面正确的字符常量是a t b “A” c 65 d A下面不正确的字符串常
7、量是a abc b “1212” c “0” d “”a a,转义字符,转义字符 转义字符的意义 n 回车换行 t 横向跳到下一制表位置 v 竖向跳格 b 退格 r 回车 f 走纸换页 反斜线符“” 单引号符 a 鸣铃 ddd 13位八进制数所代表的字符如2 代表笑脸 , 22 代表箭头 xhh 12位十六进制数所代表的字符如 x23 代表#,例 6,设有语句char a=72,则变量a是 (1)包含1个字符 (2)包含2个字符 (3)包含3个字符 (4)说明不合法下列不正确的转义字符是 。 (1) (2)“ (3)74 (4)ddd,数据类型 变量赋初值,例: int a=3; float
8、f=3.56; char c=a; int a,b,c=5;,Page 19,数据类型 不同类型数据混合运算时的类型转换,数据参加运算前必须进行下列转换: char,shortint,floatdouble 混合运算时,数据类型由低级高级: int unsigned long double 低 高 例: int i; float f; double d; long e;运算次序:10+a + i*f - d/e 10+97 转换为double 转换为double 再相乘 再相除 107double 结果为double,Page 20,注1:除运算符左右两侧都为整数时,结果的类型也会转换为整数,
9、如:4/5的结果是0,而不是0.8。 注2:当赋值运算符左右两侧数据类型不一致时,会把右侧的数据类型转换为左侧的数据类型之后再进行赋值如:int x = 1.2; 则x实际得到的值是1,例,有定义:int a;double b;float c; char k;则表达式a/b+c-k值的类型是A,int B,double C,float D,char若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(A)A,2.500000 B,2.750000C,3.500000 D,0.000000,例,输出结果是:c main() doub
10、le d=3.2;int x,y;x = 1.2; y = (x+3.8)/5.0;printf(“%dn”,d*y); A,3 B,3.2 C,0 D,3.07,算术运算符与算术表达式,基本算术运算符+ - * / %(取余) (若整数相除,结果取整) 优先级与结合性 先乘除,后加减,同级自左至右 强制类型转换 例:(double)a, (int)(x+y), (float)(5%3) 变量本身未变化 +, - (P24),Page 24,例,main() float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%dn“,x,i); 结果:x=3.600000
11、,i=3,赋值运算符和赋值表达式 简单的赋值运算符“=”,“=”两侧类型不一致时,要进行类型转换: 整实:截掉小数部分 实(单、双精度)整:数值不变,存为浮点 整char:char转ASC码,Page 26,int i;float j=3.56;i=j;prtinf(“%d”,i);结果:3,int i=23;float j;j=i;printf(“%f“,j);结果23.000000,赋值运算符和赋值表达式 复合的赋值运算符,C语言中有10种复合运算符: +=, -=, *=, /=, %=, 例:a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8),Page 28,赋值运
12、算符和赋值表达式 赋值表达式,例: a=5 表达式值为5 a=b=c=5 表达式值为5,a,b,c均为5 a=5+(c=6) 表达式值为11,a为11,c为6 a=(b=4)+(c=6) 表达式值为10,a为10,b为4,c为6 a=(b=10)/(c=2) 表达式值为5,a为5,b为10,c为2 a+=a-=a*a 请同学计算:其中a=5 a*=a+=a-=a*a 请同学计算:其中a=5,Page 29,例,a+=a-=a*a; 第一步:先求a-=a*a 相当于a=a-a*a ,a值为5-25 第二步:a+= -20 相当于a=a+(-20) a值为-20-20=-40,逗号运算和逗号表达式
13、,格式: 表达式1,表达式2 求解顺序及结果: 先求解1,再求解2,最终结果为表达式2的值 例 a=3*5,a*4 最终结果为60,Page 31,例,已知有定义x=5则表达式(赋值表达式高于逗号表达式)a = 3 * 5 ,a * 4 的值是 60 ( a = 3 * 5 ,a * 4 ),a + 5 的值是 20若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 。x=(i=4,j=16,k=32)A) 4 B) 16 C) 32 D) 52,例,若有以下程序段,其输出结果是 。 int a=0,b=0 c=0; c=(c-=a-5),(a=b,b+3); printf(“%d
14、,%d,%dn”,a,b,c)A 3,0,-10 B 0,0,5 C -10,3,-10 D 3,0,3B,逻辑运算与逻辑表达式,关系运算与关系表达式关系运算是比较简单的一种逻辑运算,其优先次序为: (大于) = (大于或等于) = (等于) !=(不等于) 优先级相同(高) 优先级相同(低)关系表达式 其值只能为真或假,在 C 语言中用 整数1 和 0 表示。 逻辑运算府与逻辑表达式逻辑运算符: !(非) &(与) |(或) 优先次序:高 低逻辑表达式 例如:(ab)&(xy) 看书 P5051 举例,例13,设int x=3,y=4,z=5;则表达式的值为0的是A,x执行(m=ab)&(n
15、=cd)后,n的值是 (2),数据输入、输出,C语言本身没有I/O语句,所有I/O都由函数来实现。 C语言的标准库函数 由编译系统提供的一系列子程序 调用形式: 函数名(参数表),Page 36,数据输入、输出 常用字符I/O函数,putchar(参数)字符输出 功能:把一字节代码写入标准输出文件(显示器) 参数:int型 返回值:正常时为写入的代码值, 出错时为EOF(即-1),int型。,Page 37,getchar()字符输入 功能:从标准输入文件(键盘)读入一字节代码 参数:无 返回值:正常时为读到的代码值,出错时 或遇结束(Ctrl+z)为EOF(即-1), int型。,运行结果:
16、 BOY,例14,#include main() char a,b,c;a=B; b=O; c=Y;putchar(a); putchar(b); putchar(c);putchar(n); ,例 15,运行结果 输入: d 输出: d,#include main() char c;c=getchar();putchar(c);putchar(n); ,数据输入、输出 常用格式I/O函数,printf格式输出 printf(格式控制,输出表) 格式控制字符 看书 P36-41,上机实践 scanf格式输入 scanf(格式控制,地址表),Page 40,例16,运行结果: 输入: 12 34
17、 56 输出: 12 34 56,main() int a,b,c;scanf(“%d%d%d“, ,例,有定义语句:int b;char c10;则正确的是A,scanf(“%d%s“,&b,&c)B, scanf(“%d%s“,&b,c)C, scanf(“%d%s“,b,&c)D, scanf(“%d%s“,b,c),设有如下程序段,执行结果是 int x=1,y=5,z=8; if(xy)if(y0) z=0;else z+=1;printf(“%dn”,z);若w=1,x=2,y=3,z=4,则条件表达式wx?w:yz?y:z的值是:,有如下语句: int x=3,y=2,z=1;表达式:z* = (xy ? +x:y+)的值是:若有(exp) ? a+:b- ,则以下表达式能完全等价于表达式(exp)的是: A)(exp=0) B)(exp=1) C)(exp!=1) D)(exp!=0),main() int x,y; scanf(“%d”, ,