c语言教案第1-4章.ppt_第1页
c语言教案第1-4章.ppt_第2页
c语言教案第1-4章.ppt_第3页
c语言教案第1-4章.ppt_第4页
c语言教案第1-4章.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言程序设计,第一章 C语言概述,C语言的特点: 1、语言结构简单,使用方便、灵活,32个关键字 2、运算符丰富,共有34种运算符 3、数据结构丰富,具有现代语言的各种数据结构 4、具有结构化的控制语句 5、语法限制不严格,程序设计自由度大 6、C语言允许直接访问物理地址 7、生成目标代码质量高,程序执行效率高 8、用C语言写的程序可移植性好,第二章 上机步骤,菜单,编辑窗口,1、调用Turbo C程序 (1)进入DOS ,进入Turbo C子目录,调用TC 例如:C盘根目录下存放TC子目录 C: C:CD TC C:TCTC (2)我的电脑 或 资源管理器 TC.EXE 2、使用TC 编辑窗口和菜单之间切换 F10 Alt+f ,r,c,第三章 数据类型、运算符与表达式,3.1 C 的数据类型 3.2 常量与变量 3.3 整型数据 3.4 实型数据 3.5 字符型数据 3.6 变量赋初值 3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式 3.9 赋值运算符和赋值表达式 3.10 逗号运算符和逗号表达式,3.1 C的数据类型,整型 实型 基本类型 字符型 枚举型 数组类型 数据类型 构造类型 结构体 共用体 指针类型 空类型,3.2 常量与变量,1、常量:在程序运行过程中其值不能被改变的量 符号常量:用一个标识符代表一个常量。 #define PRICE 30 /* 习惯大写*/ main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); P39-3.1 注意:不能重新赋值 好处:1、含义清楚 2、一改全改 2、变量:其值可以改变的量 条件:1、变量应有一个名字 2、在内存中占据一定的存储空间,通过变量名找到相应的内存地址,从存储单元中读取数据 标识符:字母、数字和下滑线三种字符组成,且第一个字符必 须是字母或下滑线(除32各关键字) 用来标识变量名、符号常量名、函数名、数组名等 注意:1、区分大小写 sum和SUM是两个不同的变量名 一般变量名用小写字母表示 ,符号常量用大写 2、标识符的长度 ,Turbo C允许32个字符 为了可读性最好不好超过8个,强制定义: 在C中所有变量都要先定义后使用 目的: 1、保证程序中变量名使用正确 2、每个变量定义的时候指定一个确定的类型,编译的时候为 其分配相应的存储空间 3、指定每一个变量的类型,编译的时候检查变量所进行的运 算是否合法 如 a % b,3.3 整型数据,1、整型常量:十进制 八进制:以0开头的数-0123 十六进制:以0x开头的数-0x12 2、整型变量: 分类:基本型:int,2字节 -3276832767 短整型:short (int),2字节 长整型:long (int),4字节 无符号型:存储单元中全部存放数据本身,不 包括符号,数据范围扩大一倍。 无符号整型:unsigned int 065535 无符号短整型:unsigned short 无符号长整型:unsigned long,整型变量的定义:int a,b; unsigned short c,d,e; main() int a,b,c,d; unsigned int u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn“,c,d); p44 - 3.2 整形数据的溢出 main() int a,b; a=32767;b=a+1; printf(“%d,%d”,a,b); P44-3.3,溢出操作是将该数减去整形数据类型的模 65536,运行结果:32767 -32768 原因:整形数据存放形式:二进制,变反 加1,(4)整型常量的类型 1、一个整型常量其值在-215 -215-1范围之内,认为int 型,可赋值给int long int 2、一个整型常量其值在-231 -231-1范围之内,认为long 型,可赋值给long int 3、如short和int型数据在内存中占用相同长度,则short和 int 表示的数据范围相同 4、在一个整型常量后面加u,则认为unsigned型常量 如:1234u 5、在一个整型常量后面加L或l,则认为是long int型常量。 如:123L,3.4 实型数据,1、实型常量:又称浮点数 两种表示形式: 十进制数形式:由数字和小数点组成 0.123 、12.0 指数形式:如:123E3、123e3等 注意:E 、e前面必须有数字,且E后面必须是整数。 规范化形式:e、E前小数部分中小数点前有且只有一位非 零数字 2、实型变量: 单精度float(4个字节)、双精度double(8个字节) 存放形式:,float x,y; double e; 指定x,y为单精度实数, e为双精度实数 误差: main() float a,b; a=123456.789e5; b=a+20; printf(“%f”,b); 单精度实数提供7为有效数字 双精度实数提供15-16为有效数字 注意:实数常量不分float 型和double型,一个实数常量可以赋值给一个float型也可以赋值给 double型,根据变量的类型来截取有效位数字 float a; a=111111.111 a=111111.1,3.5 字符型数据,一、字符常量: 1、字符常量:用单引号括起来的一个字符。 a、A是不同的常量 2、转义字符:特殊形式的符号常量,以“”开头的字符序列。 n:代表一个“换行”符 t :跳到下一个输入区,一个输入区占8列 b:退格 r :回车,不换行,返回本行最左端 :反斜杠字符“” :单引号字符 ddd:1到3位8进制所代表的字符 101 A xhh:1到2位16进制所代表的字符 x41 A,二、字符变量:用来存放字符常量,只能放一个字符,不能 存放字符串(若干个字符),在内存中占 一个字节。 定义形式:char c1,c2;c1=a;c2=b; 三、字符数据在内存中的存储形式及使用方法: 存储形式:将字符常量存放到一个符号变量中,实际上将 字符相应的ASCII码放到存储单元中。 如: a的ASCII码为97,01100001 使用方法: 1、字符型数据与整型数据可以通用 2、字符型数据可以以字符形式输出先将存储单元 中的ASCII码转换成相应的字符,然后输出 也可以以整数形式输出直接将ASCII码作为整数 输出 3、字符数据可以进行算术运算,相当于对其ASCII码进 行算术运算,main() char c1,c2; c1=97; c2=98; printf(“%c,%cn”,c1,c2); printf(“%d,%dn”,c1,c2); P50-3.6 运行结果:a,b 97,98 注意:字符型数据只占一个字节,存储范围0255之间,main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c1-32; printf(“%c %c”,c1,c2); P51-3.7 运行结果:A B,字符数据与整型数据可以互相赋值 例如: int i; char c; i=a; c=97; printf(“%c %d”,c,c); printf(“%c %d”,i,i); 输出结果: a 97 a 97,四、字符串常量:一对双引号括起来的字符序列 例如:“how are you ”,“a” char c; c=a; c=“a”; 原因:a是字符常量,而“a”是字符串常量 规定在每一个字符串结尾处加一个“字符串结束标志”0( ASCII码为0,空操作字符,不引起任何控制动作,也不是一个可显示的字符。 a占一个字节,“a”占2个字节。 C H I N A 0 长度为6个字符,输出时,一个一个字符输出,直到遇到最后的0字符,停止输出。 注意:在书写字符串时不要加0,系统自动加。,a,3.6 变量赋初值,1、C规定,可以在定义变量的同时使变量初始化 例如: int a=3; a为整型变量,初值为3 float f=3.56; f为实型变量,初值为3.56 int a=b=c=5; 应改为int a=5,b=5,c=5; 或 int a,b,c;a=b=c=5; int a,b,c=5; a,b,c为整型变量,c 的值为5 2、初始化不是在编译阶段完成的,而是在程序运行时执行本 函数时赋以初值,相当于有一个赋值语句: int a=3;相当于:int a; a=3; int a,b,c=5; 相当于: int a,b,c; c=5;,3.7 各类数值型数据间的混合运算,整型、实型(单精度、双精度)、字符型数据可以进行混合运算,在进行运算时,不同类型数据要转化成 同一类型,然后运算。 Double float long unsigned int short、char 横行向右的箭头表示必定的转换。 纵向箭头表示当运算对象为不同类型时转换的方向。,例:int i; float f; double d; long e; 10+a+i*f-d/e 10+a a转换成整数97 ,运算结果为107 i*f i ,f转换成double 107+i*f 107转换成double d/e e转换成double 10+a+i*f-d/e 结果为double型 注意:转换是由系统自动进行的。,3.8 算术运算符和算术表达式,一、基本算术运算符 + 加法运算符 减法运算符 * 乘法运算符 / 除法运算符 说明:两个整数相除结果为整数,5/3=1 ,舍去余 数部分,但除数和被除数中有一个为负值, 舍去的方向是不固定的,-5/3=-1 或-2,多数 机器采取“向零取整”方法,即-5/3=-1 1/3=0 1.0/3=0.333333 % 模运算符或求余运算符 要求两侧均为整型数据 7%4=3,二、算术表达式和运算符的优先级与结合性 算术表达式: 用算术运算符和括号将操作数连接起来 优先级: 在表达式求值时,先按运算符的优先级高低次 序执行 * 、/、% + 、- 算术运算符的结合方向为“自左至右” 既先左后右,左结合性 三、利用强制类型转换运算符将表达式转换成所需类型 方法:(类型名)(表达式) (double) a 将a转换成double型 不要写成double (a) (int) (x+y)将x+y的值转换成整型 强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,main() float x; int i; x=3.6; i=(int) x; printf(“x=%f,i=%d”,x,i); 运行结果: x=3.6,i=3,四、自增、自减运算符 i+,i 在使用i 之后,先使i的值加(减)1 +i,i 在使用i 之前,先使i的值加(减)1 i=3; j=+i; ( j 的值为4,i的值是4) j=i+;( j 的值为3,然后i变为4) 注意: 1、自增运算符(+)、自减运算符(),只能用于变 量,不能用于常量或表达式 5+,(a+b)+都是不合法的 2、+和的结合方向是“自右至左” i+ 相当于(i+) i=3; printf(“%d”, i+) 输出结果是:-3,五、有关表达式使用中的问题说明 1、在表达式中包含自增或自减运算时,很容易出错 i=3; k=i+i+i+ k=9 i=6 k=+i+i+i k=18 i=6 2、运算符由两个字符组成时,结合性尽可能多地自左向右 i+j 相当于(i+)+j 3、调用函数时,实参的求值顺序 i=3; printf(“%d,%d”,i,i+); 有的系统从左向右求值,输出3,3 有的系统从右向左求值,输出4,3 多数采用此方法,3.9 赋值运算符和赋值表达式,一、赋值运算符 “=”是赋值符号 作用是将一个数据赋给一个变量。 a=3 是一个赋值表达式,将常量3赋值给变量 a a=3+5 是将一个表达式的值赋值给一个变量 二、类型转换 如果赋值运算符两侧类型不一致,且都是数值型或字符 型 ,在赋值时要进行类型转换 1、float double int 实型数据赋值给整型变量时,舍弃实数的小数部分。 int i; i=3.45;printf(“i=%d”,i); 结果:i=3,2、int float double 整型数据赋值给实型变量时,数值不变。 float f;f=23; 先将23转换成23.00000,7位,再存放到变量中 double d;d=23; 先将23转换成23.0000000000000,16位,再存放到变量中 3、char int 由于整型变量占2个字节,字符占1个字节,因此将字符数据放到整型变量低8位中,有两种情况: (1)、高8位补零。 (2)、高8位进行符号扩展,4、double float double float:截取前7位 float double:数值不变,有效位扩充到16位 5、int long:符号位扩充 long int:截取低16位 6、int short long char:截取低8位 7、unsigned int long int:只需将高位补零 8、signed unsigned :原样赋值,三、复合的赋值运算符 在赋值符“=”之前加上其他运算符就可以构成复 合运算符 a+=3 相当于 : a=a+3 x*=y+8 相当于 : x=x*(y+8) 作用:简化程序,提高编译效率。 四、赋值表达式 形式: 作用: 将赋值运算符右侧的“表达式”的值赋值给左边的变量. a=b=c=3 表达式值为3,a,b,c值均为3 a=(b=10)/(c=2) 表达式的值为5,a=5,b=10,c=2 a=12; a+=a-=a*a 最后 a=-264,3.10 逗号运算符和逗号表达式,逗号运算符:, 例如:3+5,4+9 形式:表达式1,表达式2,表达式n 求解过程:先求表达式1,再求表达式2, 整个逗号表达式的值是最后一个表达式的值。 a=3*5,a*4 表达式的值:60 原因:=的优先级高于,运算符 a=3; (a=a*5,a*4),a+5 表达式的值:20 赋值表达式:x=(a=3,6*3) x=18 x=a=3,6*a x=3 表达式的值为:18,作 业,3.09 3.10 3.12,第四章 顺序程序设计,4.1 C语句概述 4.2 程序的三种基本结构 4.3 赋值语句 4.4 数据输出 4.5 数据输入 4.6 程序举例,4.1 C 语句概述,C语句可以分为五类: 1、控制语句 if () else for() while() 2、函数调用语句 printf(“C 语言程序设计”); 3、表达式语句 由一个表达式加一个分号构成 a=3; i=i+; i+; x+y; 4、空语句 只有一个分号的语句 ; 什么都不做,5、可以用 把一些语句括起来成为复合语句 main() int t; t=2; int t=3; printf(“%d”,t); printf(“%d”,t); 输出结果: 3 2,4.2 程序的三种结构,有三种基本结构:顺序结构、选择结构、循环结构 1、顺序结构: 2、选择结构: 3、循环语句: 当型循环 直到型,4.2 赋值语句,赋值语句是由表达式加上一个分号构成 注意: 1、“=”是赋值运算符 2、赋值表达式和赋值语句不同。 如:if (a=b)0) t=a; if (a=b;)0) t=a; ,4.3 数据输入输出的概念及在C中的实现,1、输入:从外部向输入设备(键盘、磁盘等)输入数据 输出:从计算机向外部输出设备(显示器、打印机)输出 数据 2、C本身不提供输入输出语句,是由函数完成的 #include (standard input & output) #include “stdio.h” putchar(输出字符) gerchar(输入字符) pirntf(格式输出) scanf(格式输入)等,4.4 字符数据的输入输出,1、字符输出函数putchar() 作用:向终端输出一个字符 格式:putchar(c); 说明:将字符变量c输出 其中c可以是int 或 char (包括转义字符) #include main() char a,b,c; a=B;b=O;c=Y; putchar(a); putchar(b); putchar(c); 输出结果:BOY,#include main() char a,b,c; a=B;b=O;c=Y; putchar(a); putchar(n); putchar(b); putchar(n); putchar(c); putchar(n); 输出结果:B O Y,putchar(101);,2、字符输入函数 getchar() 作用:从终端输入一个字符 格式:getchar(); 说明:没有参数,函数值是从终端得到的字符 #include main() char c; c=getchar(); putchar(c); 输入:c 输出:c,注意: 1、 getchar()只能接收一个字符 2、 getchar()函数得到的字符可以 赋给字符变量 例如: char c; c=getchar(); 赋给整型变量 例如: int c; c=getchar(); 作为表达式的一部分 例如:putchar(getchar();,4.5 格式输入与输出,1、格式输出函数printf() 作用:向终端输出若干个任意类型数据 区分: putchar函数:只能输出字符,且只能输出一个字符 printf函数:可以输出多个数据,且为任意类型 格式: printf(格式控制,输出表列) 格式控制:用双引号括起来的字符串,包括两个信息: 格式说明:由“%”和格式字符组成,%d,%f,%u等 作用:将输出数据转换成指定的格式输出 普通字符:需要原样输出的字符。,输出表列:需要输出的一些数据,可以是表达式 例: printf(“a=%d , b=%d”,a,a+b); 格式说明 输出表列 格式字符:对不同类型的数据用不同的格式字符 (1)d格式符 % d:按整形数据的实际长度输出 %md:m为指定输出字段宽度,如数据的位数小于m ,则 左 端补空格,若大于m,按实际位数输出 a=123,d=12345 printf(“%4d,%4d”,a,d); 结果: %ld:输出长整型数据,如用%d输出长整型数据就会出错 long a=123456; printf(“%ld”,a); 结果: printf(“%8ld”,a); 结果: 注意:int型数据可以用%d或%ld格式输出,_123,12345,123456,_ _ 123456,(2)o格式符:以八进制数形式输出整数 按八进制形式输出的数值不带符号 int a=-1; printf(“%d,%o,%8o”,a,a,a); 输出结果: (3)x 格式符:以十六进制数输出整数,同样不会出现负数 int a=-1; printf(“%d,%o,%x”,a,a,a); 输出结果:,-1,177777, _ _177777,-1,177777,ffff,(4)u格式符:输出无符号型数据 即以十进制形式输出无符号数 unsigned int a=65535; printf(“a=%d,%o,%x,%un”,a,a,a,a); 输出结果: int b=-2; printf(“b=%d,%o,%x,%u”,b,b,b,b); 输出结果:,a=-1,177777,ffff,65535,b=-2,177776,fffe,65534,(5)c格式符:用来输出一个字符 char c=a; printf(“%c”,c); 输出结果: 一个整数其值在0255也可以用字符形式输出,同样字符型数 据也可以用整数形式输出 char c=a; int i=97; printf(“%c,%d,%c,%d”,c,c,i,i); 结果: printf(“%3c,%3d,%3c,%3d”,c,c,i,i); 结果:,a,a,97,a,97,_ _ a, _ 97, _ _ a, _ 97,6)s格式符:用来输出一个字符串 %s:printf(“%s”,”china”); 结果: %ms:输出的字符串占m列,如字符串的本身长度大于m, 则将字符串全部输出,若小于m则左补空格 %-ms:如串长度小于m,则在m列范围内右补空格, 字符串左靠 %m.ns:输出占m列,但只取字符串中左端n个字符, 字符串在m列的右侧,左侧补空格 %-m.ns: 如果nm,则m自动取n值,n个字符正常输出。 printf(“%3s,%7.2s,%.4s,%-5.3sn”,”china”,” china”,” china”,” china”); 输出结果:,china,china, _ _ _ _ _ch, chin, chi _ _,(7) f格式符:用来输出实数(单、双精度),以小数形式输出 %f:不指定字符宽度,由系统自动指定,使整数部分 全部输出,并输出6位小数 注意:单精度前7位有效,双精度前16位有效。 float x=111111.111,y=222222.222; printf(“%f”,x+y); 结果: %m.nf:输出数据占8列,其中有n位小数, 如数值长度小于m,则左端补空格 %-m.nf:输出的数值向左靠近,右端补空格 float f=123.456; printf(“%f _ _%10f _ _%10.2f _ _%.2f _ _%-10.2f”,f,f,f,f); 结果:,333333.328125 超过7位无意义,123.456001 _ _123.456001 _ _ _ _ _ _123.46 _ _123.46 _ _ _ _,(8) e格式符:以指数形式输出实数 %e:不指定输出数据所占的宽度和数字部分小数位数,由 系统自动指定,给出6位小数,指数部分占5位(如 e+002,其中e占一位,指数符号占一位,指数占3 位),数值按标准化指数输出,小 数点前有且只有一 个非零数字。 printf(“%e”,123.456); 输出: %m.ne和%-m.ne :m,n字符含义与前面相同, n指小数部分的位数,1.234560e+002,(9) g格式符:用来输出实数,根据数值的大小自动选择f格式 和e格式,选择输出时占宽度较小的一种,且不 输出无意义的零。 f=123.468; pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论