C语言教学课件(最新)

上传人:仙人****88 文档编号:183693957 上传时间:2023-01-31 格式:PPT 页数:382 大小:4.03MB
收藏 版权申诉 举报 下载
C语言教学课件(最新)_第1页
第1页 / 共382页
C语言教学课件(最新)_第2页
第2页 / 共382页
C语言教学课件(最新)_第3页
第3页 / 共382页
资源描述:

《C语言教学课件(最新)》由会员分享,可在线阅读,更多相关《C语言教学课件(最新)(382页珍藏版)》请在装配图网上搜索。

1、12 与计算机对话是从低级语言开始逐步发展起来的。机器语言 低级语言 汇编语言 FORTRAN语言 ALGOL 60语言 COBOL语言 BASIC语言 PASCAL语言 C/C+语言 ADA语言 Java语言高级语言1.C语言的发展语言的发展3提供了一整套控制语句(9种)。数据类型丰富。可以直接访问物理地址,进行位操作。提供了30多种丰富的运算符。具有预处理功能。具有很好的可移植性。生成目标程序质量高,程序执行效率高。2.C语言的特点语言的特点4例例 main()main()printf(Thisprintf(This is a c program.n)is a c program.n);例

2、例 main()main()intint a,b,suma,b,sum;a=123a=123;b=456b=456;sum=sum=a+ba+b;printf(sumprintf(sum is%is%dn,sumdn,sum);3.简单的简单的C程序介绍程序介绍5例例 intint max(intmax(int x,intx,int y)y)intint z z;if(xy)z=xif(xy)z=x;else z=yelse z=y;return(zreturn(z);main()intint a,b,ca,b,c;/*定义变量定义变量*/scanf(%dscanf(%d,%,%d,&a,&b

3、d,&a,&b);c=c=max(a,bmax(a,b);printf(printf(”maxmax=%=%dn,cdn,c);C C函数从函数从main()main()开始执行,仅开始执行,仅能有一个。能有一个。C C 程序是由函数组成的。程序是由函数组成的。变量定义和语句之后必须有一变量定义和语句之后必须有一个分号(;)个分号(;)一行内可写几个语句,一个语一行内可写几个语句,一个语句可分写在多行。句可分写在多行。可以用可以用/*/作注释。作注释。语言没有输入输出语句。语言没有输入输出语句。6每一个源程序仅且仅能包含一个main()函数。一个函数是由函数的说明部分和函数体两部分组成。int

4、 max(int x,int y)int z;if(xy)z=x;else z=y;return(z);intint maxmax(int(int x,intx,int y y)函数的说明部分 函数类型 函数名 函数参数列表 函数体:中的部分,功能的实现。变量定义(int a,b,c;)函数体 执行部分(由若干语句组成)4.函数的组成函数的组成74.上机部骤上机部骤系统的启动鼠标双击TC.EXE的快捷图标,进入TC集成环境。界面介绍使用小结8实型整型字符型枚举类型数组类型结构体类型共用体类型单精度型双精度型指针类型空类型构造类型基本类型数据类型1.C的数据类型的数据类型92.数据类型的重要性数

5、据类型的重要性 在编写程序时,必须做好两件事:是描述数据。是描述数据的加工方法。前者通过数据定义语句实现,而后者通过若干执行语句来完成。数据类型最终决定该类型数据的取值范围和基本运算。数据类型最终决定该类型数据的取值范围和基本运算。103.标标 识识 符符 每种程序语言都规定了在程序中为对象命名的规则。这些名字包括:变量名、常量名、数组名、函数名等。通常被统称为标识符。标识符命名规则:标识符命名规则:标识符是以字母或下画线开头,由字母、数字和下画线构成的字符串。call.name ,39test-string1注意:注意:ANSI C规定标识符的长度可达31个字符,但一般系统使用的标识符,其有

6、效长度不超过8个字符。标识符不能采用系统的关键字(保留字)。11 常量常量常量:程序中其值不发生变化的量。常用形式:3.14159,-0.55,.666指数形式:0.55e5,3.33E-3,4e+2常见常量数值常量字符常量字符串常量符号常量整型实型十进制:直接书写八进制:由数字开头十六进制:由0 x 或0X 开头用单引号括起来的一个字符。如:a,D用双引号括起来的一串字符。如:abcd用一个标识符代表一个常量注意:a 和a的区别4.常量与变量常量与变量 12例例 已知圆半径已知圆半径r,求圆周长,求圆周长c和圆面积和圆面积s的值。的值。#define PI 3.1416#define PI

7、3.1416main()main()float float r,c,sr,c,s;scanf(%f,&rscanf(%f,&r););/*从键盘输入一个实型数给变量从键盘输入一个实型数给变量r r*/c=2 c=2*PIPI*r;r;/*编译时用编译时用3.14163.1416替换替换PI PI*/s=PI s=PI*r r*r;r;/*编译时用编译时用3.14163.1416替换替换PI PI*/printf(cprintf(c=%6.2f,s=%6.2fn,c,s);=%6.2f,s=%6.2fn,c,s);13字符形式功能字符形式功能n n 回车换行回车换行t t 横向跳格(即跳到下一个

8、输出区)横向跳格(即跳到下一个输出区)vv 横向跳格横向跳格 b b 退格退格 rr 回车回车 f f 走纸换页走纸换页 反斜杠字符反斜杠字符“”单引号字符单引号字符()()dddddd 1 1到到3 3位位8 8进制数所代表的字符进制数所代表的字符 xhhxhh 1 1到到2 2位位1616进制数所代表的字符进制数所代表的字符转义字符:转义字符:常用常用“”开头后跟一个字符,但含义改变。开头后跟一个字符,但含义改变。14例例:整型数:整型数:125 ,0125 ,0 x125 ,+35 ,-235 ,-035 实型数:实型数:3.14159 ,-555.6 ,888.0 ,0.88 ,8.8

9、8e+18注意:注意:用指数形式表示的浮点数必须有尾数,指数部分必须是整数。用指数形式表示的浮点数必须有尾数,指数部分必须是整数。如:如:e4,.e3 ,0.25e4.5 ,e 等是错误的等是错误的。例例:main()printf(ab ct derftgn);printf(htibbj k);15 变量变量变量:程序中其值可发生变化的量变量:程序中其值可发生变化的量。每一个变量都应有一个名字,称为变量名。而且在内每一个变量都应有一个名字,称为变量名。而且在内存中占据一定的存储空间,用来存放变量的值。存中占据一定的存储空间,用来存放变量的值。语言规定对使用的变量必须语言规定对使用的变量必须先定

10、义先定义,后使用后使用。目的:目的:保证程序中变量名的正确使用。保证程序中变量名的正确使用。可分配相应的存储空间。可分配相应的存储空间。便于检查变量所进行的运算是否合法。便于检查变量所进行的运算是否合法。16整型变量:(四种类型)类型类型 字节数字节数 数的范围数的范围 基本型基本型(int)2 -3276832767 短整型短整型(short int)2 -3276832767 长整型长整型(long int)4 -21474836482147483647 无符号整型无符号整型(unsigned int)2 065535 无符号短型无符号短型(unsigned short)2 065535

11、无符号长整型无符号长整型(unsigned long)4 04294967295 无符号型整型变量的定义格式整型变量的定义格式:类型类型 变量名表列变量名表列;例例: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);17实型变量:实型变量:(两类)两类)类型类型 所占位数所占位数 数的范围数的范围 单精度实型单精度实型(float)32 10 10 双精度实型双精度实型(double)64 10 10 单精度实型提供单精度实型提供7位有效数字,位有效数字,双精度实型提供双精

12、度实型提供1516位有效数字。位有效数字。-3838-308308字符变量:字符变量:char 用来存放一个字符常量。占一个字节用来存放一个字符常量。占一个字节(8位位),存放该字符的,存放该字符的ASCII码值。码值。如:如:char c1,c2;c1=a;c2=b;180110000101100010c19798c1c2c2例:例:main()char c1,c2;c1=97;c2=98;printf(%c%c,c1,c2);c1=a;c2=b;a=A+32ASCII码表中大小码表中大小写字母之间具有:写字母之间具有:C语言中允许字符型数据与整型数据互相赋值。如:语言中允许字符型数据与整型

13、数据互相赋值。如:int i;i=a;char c;c=97;例:例:main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%c,c1,c2);19例例:main()int i;char c;i=a;c=97;printf(%c,%dn,c,c);printf(%c,%dn,i,i);输出结果:a,97 a,97变量赋初值:变量赋初值:在定义变量的同时给变量初始化。在定义变量的同时给变量初始化。如:如:int a=10;float f=5.55;char c=a;int a=15,b=15,d=15;不能写成:int a=b=d=15;格式

14、为:格式为:类型变量名常量值类型变量名常量值相当于:int a;a=10;20算术运算符和算术表达式算术运算符和算术表达式基本算术运算符基本算术运算符:+、-、*、/、%(注:两个整数相除,结果为整数。)(注:两个整数相除,结果为整数。)5.运算符与表达式运算符与表达式 C语言提供了丰富的运算符,可以对数据进行各种语言提供了丰富的运算符,可以对数据进行各种处理,从而保证了各种操作可以方便地实现。处理,从而保证了各种操作可以方便地实现。表达式表达式是由运算符和运算对象组成的式子,运算对是由运算符和运算对象组成的式子,运算对象就是在程序中要处理的各种数据。象就是在程序中要处理的各种数据。21算术表

15、达式和运算符的优先级与结合率:算术表达式和运算符的优先级与结合率:用算术运算符和括号用算术运算符和括号“()”将运算对象连接起来,符合将运算对象连接起来,符合语法规则的式子称为算术表达式。语法规则的式子称为算术表达式。运算对象:运算对象:常量、变量、函数等。常量、变量、函数等。优先级:优先级:先乘除后加减。先乘除后加减。结合率:结合率:自左至右。自左至右。例如:例如:a*b/c-1.5+a ;a-(b*c)自增、自减运算符:自增、自减运算符:+,-(使变量的值增或减)使变量的值增或减)结合率:结合率:自左至右。自左至右。例如例如:+i ,-i (先自增或自减)先自增或自减)i+,i-(后自增或

16、自减)后自增或自减)-i+相当于相当于-(i+)i+j 相当于相当于(i+)+j22数据类型转换:数据类型转换:C语言允许不同类型的数值型数据可以混合运算,运算语言允许不同类型的数值型数据可以混合运算,运算时系统自动将数据转换成同一类型数据。时系统自动将数据转换成同一类型数据。doublelongunsignedintfloatchar,short低级高级必定的转换必定的转换23例如例如:若有若有 int i,float f,double d,long e 则则 10+a+i*f-d/e 表达式运算次序为表达式运算次序为:将将a转换成转换成97,然后,然后10+a运算。运算。将将i和和f都转换

17、成都转换成double型,型,然后然后i*f运算。运算。将将的结果转换为的结果转换为double型,然后与型,然后与的结果相加。的结果相加。将将e转换成转换成double型,型,然后然后d/e运算。运算。用用的结果减的结果减的结果的结果。(类型名)(表达式)强制类型转换:格式如下强制类型转换:格式如下例如:例如:(double)a、(int)(x+y)、(float)(5%3)、(int)x+y24赋值运算符和赋值表达式赋值运算符和赋值表达式赋值符号赋值符号:功能:将赋值符右边表达式的值赋给赋值符左边的一个变量。功能:将赋值符右边表达式的值赋给赋值符左边的一个变量。数据类型若不一致,要进行类型

18、转换。转换方式为:数据类型若不一致,要进行类型转换。转换方式为:将实型数据赋给整型变量时,舍弃实数的小数部分。将实型数据赋给整型变量时,舍弃实数的小数部分。如:如:i=5.65,i 的值为的值为 5。将整型数据赋给实型变量时,数值不变。将整型数据赋给实型变量时,数值不变。将字符数据赋给整型变量时,将字符数据放到整型变量低将字符数据赋给整型变量时,将字符数据放到整型变量低8位中位中。25复合的赋值运算符复合的赋值运算符:(共十个):(共十个)+=,=,*=,/=,%=,=,&=,=,|=例如:例如:a+=3 等价于等价于 a=a+3 x*=y+8 等价于等价于 x=x*(y+8)x%=3 等价于

19、等价于 x=x%3赋值表达式:赋值表达式:由赋值运算符将一个变量和一个表达式连接起来的式子。由赋值运算符将一个变量和一个表达式连接起来的式子。格式为:格式为:位运算注:若右边为表达式应加圆括号“()”!26 赋值运算符结合率为:赋值运算符结合率为:“自右而左自右而左”。例如:例如:a=b=c=5 a=(b=(c=5)a,b,c值都是值都是5 a=5+(c=6)c值为值为6,a值为值为5+6=11 a=(b=4)+(c=6)b值为值为4,c值为值为6 a值为值为4+6=10 a=(b=10)/(c=2)a值为值为5 a+=a=a*a 若若 a=5,则,则赋值赋值表达式的值表达式的值为为40。计算

20、方法:计算方法:a+=(a-=a*a)a=a-a*a=5-5*5=20 a=a+(上述表达式结果)上述表达式结果)=(-20)+(-20)=40 若若x的值是的值是8,则表达式则表达式x*=x-=x+=x的值的值?27逗号运算符和逗号表达式逗号运算符和逗号表达式 逗号运算符:逗号运算符:,格式:格式:表达式表达式1,表达式表达式2,表达式表达式3,表达式表达式n 优先级:优先级:最低最低。从左向右计算每个表达式的值,逗号表达式的值为从左向右计算每个表达式的值,逗号表达式的值为表达式表达式n的值的值。例如:例如:a=3*5,a*4 (a=3*5,a*4),a+5 x=(a=3,6*3)x=a=3

21、,6*a28求三个整数的最大值。求三个整数的最大值。编程实现编程实现29 语言的语句是用来向计算机系统发出操作指令。每语言的语句是用来向计算机系统发出操作指令。每一个为实现特定目的的程序都包含若干个语句。一个为实现特定目的的程序都包含若干个语句。语句的五种分类:语句的五种分类:控制语句:完成一定的控制功能(条)。控制语句:完成一定的控制功能(条)。函数调用语句:由一次函数调用加一个分号构成。函数调用语句:由一次函数调用加一个分号构成。如:如:scanf(%dn,&a);表达式语句:由表达式加一个分号构成。表达式语句:由表达式加一个分号构成。如:如:i=i+1;空语句:由一个分号构成。空语句:由

22、一个分号构成。复合语句;由一对大括号复合语句;由一对大括号“”组成,相当于一个语句。组成,相当于一个语句。如:如:z=x+y;b=15;printf(%d,b);.语句语句 概概 述述30顺序结构:从前向后顺序执行程序。顺序结构:从前向后顺序执行程序。ABPAB.程序的三种基本结构程序的三种基本结构选择结构:根据判断条件的结果选择执行程序。选择结构:根据判断条件的结果选择执行程序。31多分支选择结构:多分支选择结构:A1A2AiAnKk=k1k=k2k=kik=kn32循环结构:根据条件反复的执行某一段程序若干次。循环结构:根据条件反复的执行某一段程序若干次。当型循环结构:当型循环结构:PA真

23、假流程图 直到型直到型循环结构循环结构:PA真假流程图33格式输出函数格式输出函数printf()功能:输出若干个任意类型的数据。功能:输出若干个任意类型的数据。格式:格式:printf(格式控制格式控制,参数参数1,参数参数2,参数参数3,)由格式说明和普通字符构成输出数据。由表达式构成。格式说明格式说明:由:由%后跟一个后跟一个格式字符格式字符组成。中间可插入组成。中间可插入l、m、.n、和和几个附加符号。几个附加符号。普通字符普通字符:照原样输出。:照原样输出。3.数据的输入与输出数据的输入与输出34例如:例如:printf(a=%d b=%d,a,b);(设设a=12;b=15;)输出

24、结果为:输出结果为:a=12 b=15格式字符:格式字符格式字符 作用作用 d 以带符号的十进制形式输出整数(正数不输出符号)。以带符号的十进制形式输出整数(正数不输出符号)。o以以8进制无符号形式输出整数(不输出前导符进制无符号形式输出整数(不输出前导符0)。)。x以以16进制无符号形式输出整数(不输出前导符进制无符号形式输出整数(不输出前导符0 x)。)。u 以无符号十进制形式输出整数。以无符号十进制形式输出整数。c 以无符号形式输出以无符号形式输出,只输出一个字符。只输出一个字符。s 输出字符串。输出字符串。f以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐含输出6位小

25、数。位小数。e 以标准指数形式输出单、双精度数,数字部分小数位数为以标准指数形式输出单、双精度数,数字部分小数位数为6位。位。g选用选用%f或或%e格式中输出宽度较短的一种格式,不输出无意义的格式中输出宽度较短的一种格式,不输出无意义的0。35例:例:main()int i=234;char c=a;printf(%d,%5d,%c,%3c,i,i,c,c);指定输出宽度。数据宽度不够,指定输出宽度。数据宽度不够,前面补空格,超过原样输出。前面补空格,超过原样输出。36附加格式说明字符:附加格式说明字符:字字 符符 作用作用 字母字母 用于长整型整型,可加在格式符用于长整型整型,可加在格式符d

26、、o、x、u前面。前面。m 数据最小宽度。数据最小宽度。.n 对实数对实数,表示输出表示输出n位小数位小数;对字符串对字符串,表示截取的字符个数。表示截取的字符个数。-输出的数字或字符在域内向左靠。输出的数字或字符在域内向左靠。例:main()printf(%3s,%7.2s,%.4s,%-5.3sn,CHINA,CHINA,CHINA,CHINA);输出为:输出为:CHINA,CH,CHIN,CHI 37格式输入函数格式输入函数scanf()功能:输入若干个任意类型的数据。功能:输入若干个任意类型的数据。格式:格式:scanf(格式控制格式控制,参数参数1,参数参数2,参数参数3,)由格式说

27、明和普通字符构成变量的地址或字符串的首地址。格式说明格式说明:由:由%后跟一个后跟一个格式字符格式字符组成。中间可插入组成。中间可插入、h、m、几个附加字符。几个附加字符。普通字符普通字符:照原样输入。:照原样输入。38例如:例如:main()int a,b,c;scanf(%d%d%d,&a,&b,&c);printf(%d,%d,%dn,a,b,c);输入格式为:输入格式为:5 6 7若用:若用:scanf(%d,%d,%d,&a,&b,&c);则输入格式为:则输入格式为:5,6,7若用:若用:scanf(%d:%d:%d,&a,&b,&c);则输入格式为:则输入格式为:5:6:739格式

28、字符:格式字符:格式字符格式字符 作用作用 d 用来输入十进制整数。用来输入十进制整数。o 用来输入用来输入8进制整数。进制整数。x 用来输入用来输入16进制整数。进制整数。c 用来输入单个字符。用来输入单个字符。用来输入字符串,在输入时以非空白字符开始,以第一个空白字符用来输入字符串,在输入时以非空白字符开始,以第一个空白字符 结束。字符串以串结束标志结束。字符串以串结束标志0作为其最后一个字符。作为其最后一个字符。f用来输入实数,可以用小数形式或指数形式输入。用来输入实数,可以用小数形式或指数形式输入。e 与与f作用相同,作用相同,e与与f可以互相替代。可以互相替代。s例如:例如:main

29、()int a;char b;float c;scanf(%d%c%f,&a,&b,&c);printf(%d,%c,%fn,a,b,c);对对unsigned型数据型数据可以用可以用d,o,x格式输入格式输入40字符输出函数字符输出函数putchar()功能:向终端输出一个字符。功能:向终端输出一个字符。格式:格式:putchar(ch)函数名参数字符输入函数字符输入函数getchar()功能:功能:从输入设备输入一个字符。从输入设备输入一个字符。格式:格式:getchar()函数名参数例例#include stdio.h main()char ch;ch=getchar()+32;putc

30、har(ch);41例:输入三角形的三边长,求三角形的面积。例:输入三角形的三边长,求三角形的面积。(设输入的三边长(设输入的三边长a,b,c能构成三角形)能构成三角形)#include math.h”main()float a,b,c,s,area;s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f,n,a,b,c,s);printf(area=%7.2fn,area);4.顺序程序设计顺序程序设计从键盘输入一个大写字母,要求改用小写字母输出。从键盘输入一个大写字母,要求改用

31、小写字母输出。求求ax2+bx+c=0方程的根。方程的根。a,b,c由键盘输入,设由键盘输入,设b2-4ac042 选择结构语句是指程序在运行中,能依据运行时某选择结构语句是指程序在运行中,能依据运行时某些变量或表达式的值,确定哪些程序段被执行以及哪些程些变量或表达式的值,确定哪些程序段被执行以及哪些程序段不被执行。序段不被执行。PAB43关系运算符用于两个数值之间的比较运算。语言提供关系运算符用于两个数值之间的比较运算。语言提供6种关系运算符,它们是:种关系运算符,它们是:、=、=、!=优先级相同优先级相同优先级相同优先级相同关系运算符、算术运算符和赋值运算符的优先级为:关系运算符、算术运算

32、符和赋值运算符的优先级为:算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符低高5.1 关系运算符和关系表达式关系运算符和关系表达式44 例如:例如:ca+b 等效于等效于 c(a+b)ab!=c 等效于等效于 (ab)!=c a=bc 等效于等效于 a=(bc 等效于等效于 a=(bc)关系表达式:用关系运算符将两个表达式连接起来的式子。关系表达式:用关系运算符将两个表达式连接起来的式子。关系表达式运算结果为:关系表达式运算结果为:“真真”或或“假假”值。值。语言用语言用1代表代表“真真”值,用值,用0代表代表“假假”值。值。例如:例如:若若 a=3,b=2,c=1 f=abc 则

33、则f的值为的值为0。45语言提供语言提供3种逻辑运算符:种逻辑运算符:逻辑运算符逻辑运算符 结合率结合率 优先级优先级&与与 自左至右自左至右 中中|或或 自左至右自左至右 低低 !非非 自右至左自右至左 高高5.2 逻 辑 运 算 符 和 逻 辑 表 达 式逻 辑 运 算 符 和 逻 辑 表 达 式46 运算符运算符 优先级优先级 逻辑非!逻辑非!高高算术运算符算术运算符 关系运算符关系运算符&和和|赋值运算符赋值运算符 低低逻辑、关系、算术和赋值运算符的优先级为:逻辑、关系、算术和赋值运算符的优先级为:例如例如:(ab)&(xy)可以写成可以写成ab&xy (a=b)|(x=y)可以写成可

34、以写成 a=b|x=y (!a)|(ab)可以写成可以写成 !a|ab 53&2|8b)&(n=c4)则则 m为为0,n 为为 1。49x0&x10 0 xb?a:b 条件运算符的优先级低于逻辑、关系、算术运算符高于赋值条件运算符的优先级低于逻辑、关系、算术运算符高于赋值运算符。运算符。如:如:ab?a:b+1 相当于相当于 (ab)?a:(b+1)5.2条件运算符和条件表达式条件运算符和条件表达式51条件运算符的结合率为:条件运算符的结合率为:“自右至左自右至左”。如:如:ab?a:cd?c:d 相当于相当于 ab?a:(cd?c:d)注意:注意:条件表达式中的表达式条件表达式中的表达式1、

35、表达式、表达式2、表达式、表达式3可以是不可以是不 同的类型。同的类型。如:如:main()float p;char x,y;scanf(%c%c,&x,&y);p=xy?1:1.5;printf(n%f,p);52 单分支语句:单分支语句:if 语句语句 作用:当条件为真时执行语句。作用:当条件为真时执行语句。语句格式:语句格式:if (表达式表达式)语句语句若有多个语句须用若有多个语句须用复合语句。复合语句。括号括号“()”不能缺省不能缺省5.3 if语句语句 选择结构语句是指程序在运行中,能依据运行时某些选择结构语句是指程序在运行中,能依据运行时某些变量或表达式的值,确定哪些程序段被执行

36、以及哪些程序变量或表达式的值,确定哪些程序段被执行以及哪些程序段不被执行。段不被执行。53表达式表达式语句语句真真(非非0)假假(0)执行过程:执行过程:54例:任意输入一个整数,求其绝对值并输出。例:任意输入一个整数,求其绝对值并输出。分析:分析:输入一个整数,此数可以是正数、零或负数,若为负数则将其转输入一个整数,此数可以是正数、零或负数,若为负数则将其转化为正数,若为正数或零什么也不做,最后输出结果。化为正数,若为正数或零什么也不做,最后输出结果。main()int x;printf(“please input a integer:);scanf(%d,&x);if(xb)t=a;a=b

37、;b=t;printf(%5.2f,%5.2f,a,b);abt tab58例例:输入三个实数,按代数值由小到大次序输出这三个数。输入三个实数,按代数值由小到大次序输出这三个数。main()float a,b,c,t;scanf(%f,%f,%f,&a,&b,&c);if (ab)t=a;a=b;b=t;if (ac)t=a;a=c;b=t;if (bc)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2f,a,b,c);abcabc小大59if语句的嵌套:语句的嵌套:在在if语句的语句语句的语句1或语句或语句2部分,若使用部分,若使用if语句,称为语句,称为if语语句的嵌

38、套。句的嵌套。内嵌内嵌if语句语句如:如:if (表达式表达式1)if (表达式表达式2)语句语句1 else 语句语句2 else if (表达式表达式3)语句语句3 else 语句语句460例:例:有一函数如下,编一程序,输入一个有一函数如下,编一程序,输入一个x值,输出值,输出y值。值。-1(x0)main()int x,y;scanf(%d,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;注意:注意:if语句嵌套使用时,语句嵌套使用时,else与与最近的最近的if匹配。匹配。61下列程序运行后下列程序运行后,x的值是多少的值是多少:a=b=c=0;if(

39、!a)x-;else if(b);if(c)x=3;else x=4;结果结果:思思考考:x=462多分支语句:多分支语句:switch 语句语句 格式:格式:switch(表达式表达式)case 常量常量表达式表达式1:语句序列语句序列1 case 常量常量表达式表达式2:语句序列语句序列2 case 常量常量表达式表达式3:语句序列语句序列3 case 常量常量表达式表达式n:语句序列语句序列n default:语句语句序列序列n+1 一般为整型或一般为整型或字符型表达式字符型表达式当表达式的值等于常量表达式当表达式的值等于常量表达式i的值时,的值时,从语句序列从语句序列i开始执行到语句序

40、列开始执行到语句序列n+1为为止止。若表达式的值不等于任何一个常量表达若表达式的值不等于任何一个常量表达式的值,式的值,则只执行则只执行default后后面面的语句。的语句。执行过程:执行过程:63A1A2AiAnKk=k1k=k2k=kik=knbreakbreakbreakbreak一般在每个语句序列之后加一个一般在每个语句序列之后加一个break语句,这样语句,这样在执行语句序列在执行语句序列i之后,使流程跳出之后,使流程跳出switch结构,实现结构,实现多多分支选择。分支选择。64例例:编写一个能进行两个操作数加减乘除四则运算的计数器模编写一个能进行两个操作数加减乘除四则运算的计数器

41、模拟程序。拟程序。输入:两个操作数和运算符输入:两个操作数和运算符计算:根据运算符确定运算计算:根据运算符确定运算输出:运算结果输出:运算结果+进行加运算。进行加运算。-进行减运算进行减运算。*进行乘运算进行乘运算。/进行除运算进行除运算。65main()char op;float x,y;printf(input a arithmetic expression:);scanf(%f%c%f,&x,&op,&y);switch(op)case +:printf(=%fn,x+y);break;case -:printf(=%fn,x-y);break;case *:printf(=%fn,x*

42、y);break;case /:if (y!=0.0)printf(=%fn,x/y);else printf(Divisor is zeron);break;default:printf(Illegal operatorn);66执行结果为:执行结果为:m=4,n=5例:分析下列程序的输出结果。例:分析下列程序的输出结果。main()int i=1,j=0,m=1,n=2;switch(i+)case 1:m+;n+;case 2:switch(+j)case 1:m+;case 2:n+;case 3:m+;n+;break;case 4:m+;n+;printf(m=%d,n=%dn,m

43、,n);switch语句的嵌套67例:求例:求ax2+bx+c=0方程的解。方程的解。输入:输入:a,b,c计算:求解方程计算:求解方程输出:两个实根或两个复根输出:两个实根或两个复根a=0,不是二次方程。不是二次方程。b2-4ac=0,有两个相等实根。有两个相等实根。b2-4ac0,有两个不等实根。有两个不等实根。b2-4ac0,有两个共轭复根。有两个共轭复根。68#include math.hmain()float a,b,c,disc,x1,x2,realpart,imagpart;scanf(%f,%f,%f,&a,&b,&c);if (fabs(a)1e-6)x1=(-b+sqrt(

44、disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(has distinct real roots:%8.4fand%8.4fn,x1,x2);else realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(has complex roots:n);printf(%8.4f+%8.4fin,realpart,imagpart);printf(%8.4f-%8.4fin,realpart,imagpart);69例:给出一百分制成绩,要求输出成绩等级。例:给出一百分制成绩,要求输出成绩等级。其中:其中:90分以上

45、为分以上为A,8089分为分为B,7079分为分为,6069分为分为,60分以下为分以下为。70main()int x;scanf(%d,&x);x=x/10;if (x10|x0)printf(成绩输入有错,请重新输入成绩输入有错,请重新输入n);else switch (x)case 10:case 9:printf(An);break;case 8:printf(Bn);break;case 7:printf(Cn);break;case 6:printf(Dn);break;default:printf(En);71作业:1.阅读程序,写出运行结果.main()int x=100,a=

46、10,b=20,ok1=5,ok2=0;if(ab)if(b!=15)if(!ok1)x=1;else if(ok2)x=10;else x=-1;printf(“%dn”,x);P111 5.3 5.4 5.5 5.772循环控制结构在程序中是指对某段程序或某条语句根据条循环控制结构在程序中是指对某段程序或某条语句根据条件重复执行。件重复执行。语言提供了语言提供了while、do-while和和for三种循环控制结构。三种循环控制结构。73 while语句语句while语句是语句是支持支持“当型当型”循环控制结构的语句。循环控制结构的语句。格式:格式:while (表达式表达式)语句语句若有

47、多个语句须若有多个语句须用复合语句用复合语句74表达式表达式语句语句真真(非非0)假假(0)执行过程:执行过程:75 100例例 求求 n n=1输入:无输入:无计算:计算:1+2+3+100输出:计算的和输出:计算的和main()int sum=0;i=1;while(i=100)sum=sum+i;i+;printf(sum=%dn,sum);练习:计算练习:计算 12+22+32+10276 do_while语句语句do_while语句是语句是支持支持“直到型直到型”循环控制结构的语句循环控制结构的语句。一般格式为:一般格式为:do 语句语句 while (表达式表达式);若有多个语句须

48、若有多个语句须用复合语句用复合语句77表达式表达式语句语句真真(非非0)假假(0)执行过程:执行过程:78 100例例 求求 n。n=1输入:无输入:无计算:计算:1+2+3+100输出:计算的和输出:计算的和main()int sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(sum=%dn,sum);79 while和和do_while语句的比较:语句的比较:一个先判断一个先执行,一个条件成立执行,一个先判断一个先执行,一个条件成立执行,一个条件不成立执行一个条件不成立执行当当i10时,时,两程序的结果不同。两程序的结果不同。main()int s

49、um=0;i;scanf(%d,&i);while(i=10)sum=sum+i;i+;printf(sum=%dn,sum);main()int sum=0;i;scanf(%d,&i);do sum=sum+i;i+;while(i=10)printf(sum=%dn,sum);首次条件为真,两者等价;首次条件为假,首次条件为真,两者等价;首次条件为假,dowhile执行一次。执行一次。80 for 语句语句for语句是一种使用比语句是一种使用比while语句更加灵活的语句更加灵活的循环控制语句。循环控制语句。一般格式为:一般格式为:for(表达式表达式1;表达式表达式2;表达式表达式3)

50、语句语句81表达式表达式2语句语句真真(非非0)表达式表达式1表达式表达式3假假(0)求解表达式;求解表达式;求解表达式求解表达式2,若为真若为真(非非0)值,则执行语句,值,则执行语句,求解表达式求解表达式3,再转到求解表达式再转到求解表达式2。若为假若为假(0)值,值,则结束执行。则结束执行。执行过程:执行过程:82例如例如:main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(“sum=%dn”,sum);和下面程序比较和下面程序比较:main()int sum=0;i=1;while(i=100)sum=sum+i;i+;printf(

51、sum=%dn,sum);练习:计算练习:计算 12+22+32+10283for语句三个表达式的使用说明:语句三个表达式的使用说明:三个三个表达式都可缺省表达式都可缺省,但分号但分号(;)不能省略。不能省略。若表达式若表达式1缺省,则从表达式缺省,则从表达式2开始执行。开始执行。若表达式若表达式2缺省,则认为表达式缺省,则认为表达式2始终为真,循环无终止进行。始终为真,循环无终止进行。84例如:例如:for (;i=100;i+)sum=sum+i;for (i=1;i+)sum=sum+i;for (i=1;i=100;)sum=sum+i;i+;for (;i=100;)sum=sum+

52、i;i+;for (;)语句语句省略表达式省略表达式1省略表达式省略表达式2省略表达式省略表达式3省略表达式省略表达式1,3循环无终止进行循环无终止进行85三个三个表达式可以是语言的任意型表达式。表达式可以是语言的任意型表达式。例:例:for (sum=0,i=1;i=100;i+)sum=sum+i;for (i=0,j=100;i=j;i+,j-)k=i+j;for (i=0;(c=getchar()!=n;i+=c);逗号表达式逗号表达式逗号表达式逗号表达式空语句空语句86例:用例:用for语句编写一个计算语句编写一个计算1+3+5+(2*i-1)的程序,其中的程序,其中 i=1,2,3

53、,100。输入:无输入:无计算:计算:1+3+5+(2*i-1)输出:计算的和输出:计算的和main()int sum=0,i;for(i=1;i=100;i+)sum+=2*i-1;printf(sum=%dn,sum);练习:任给练习:任给n,计算计算 1!+2!+3!+n!87三种循环结构三种循环结构用于反复的进行某个操作,直到条件不成立时为止。用于反复的进行某个操作,直到条件不成立时为止。(1 1)while (while (表达式表达式)语句系列语句系列(2 2)do do 语句系列语句系列 while(while(表达式表达式););(3 3)for(for(表达式表达式1;1;表

54、达式表达式2;2;表达式表达式3)3)语句系列语句系列 使用循环语句要注意和数组的结合:使用循环语句要注意和数组的结合:关键在于找出数组下标和循环变量之间关键在于找出数组下标和循环变量之间的关系。的关系。三种循环功能完全等价:三种循环功能完全等价:(1),(2)(1),(2)两种主要用于循环次数不定。两种主要用于循环次数不定。而而(3)(3)主要用于循环次数确定的情况。主要用于循环次数确定的情况。88例:任给例:任给n,计算,计算1!+2!+3!+n!。输入:无输入:无计算:计算:1!+2!+3!+n!输出:计算的和输出:计算的和main()long sum,t;int i,n;printf(

55、input n=);scanf(%d,&n);t=1;sum=0;for(i=2;i=n;i+)t=t*i;sum=sum+t;printf(sum=%ldn,sum);89一个循环一个循环语句内又包含另一个完整的语句内又包含另一个完整的循环语句,称为循环循环语句,称为循环语句的嵌套。内嵌的循环语句一般称为内循环,包含内循环的语句的嵌套。内嵌的循环语句一般称为内循环,包含内循环的循环语句称为外循环。内循环再嵌套内层循环,就够成了多重循环语句称为外循环。内循环再嵌套内层循环,就够成了多重循环。循环。7.循环循环语句的嵌套语句的嵌套例:例:求求2和和32766之间的素数。之间的素数。90main(

56、)int i,k;for (k=2;k=32766;k+)for(i=2;ik;i+)if(k%i=0)break;if(i=k)printf(%d,k);分析下列程序的输出结果:main()int i=1,a=0;for (;a=5;i+)do i+;a+;while(i3);i+;printf(a=%d,i=%dn,a,i);结果:结果:a=6,i=17如何对其进如何对其进行改进?行改进?91多重循环程序设计时,应注意以下几点:多重循环程序设计时,应注意以下几点:三种循环不仅可以自身嵌套,而切可以互相嵌套。三种循环不仅可以自身嵌套,而切可以互相嵌套。嵌套时,要在一个循环体内包含另一个完整的

57、循环结构。嵌套时,要在一个循环体内包含另一个完整的循环结构。内嵌循环内嵌循环外层循环外层循环外层循环外层循环内嵌循环内嵌循环正确格式正确格式正确格式正确格式92运行时,应注意内嵌的语句执行过程。运行时,应注意内嵌的语句执行过程。该语句执行多少次?该语句执行多少次?for (i=1;i=n;i+)j=1;while(j=m)printf(a);j+;93break语句语句 break语句的功能是:语句的功能是:在在switch语句中使流程跳出语句中使流程跳出switch结构。结构。在在循环循环语句中使流程跳出语句中使流程跳出当前当前循环。循环。8.Break语句语句和和continue语句语句例

58、:例:编程将从键盘上输入的若干个正整数求和,遇到负数则终止程编程将从键盘上输入的若干个正整数求和,遇到负数则终止程序,并且输入的数不超过序,并且输入的数不超过10个。个。94#define M 10main()int i,x,sum;sum=0;for(i=1;i=M;i+)printf(ninput x=);scanf(%d,&x);if (x0)break;sum+=x;printf(%d,sum);95continue语句语句 continue语句的功能语句的功能是是在在循环循环语句中使本次循环结束,即跳过循环体中下语句中使本次循环结束,即跳过循环体中下面尚未执行的语句,接着进行下次是否

59、执行循环的判断。面尚未执行的语句,接着进行下次是否执行循环的判断。main()int i;for(i=100;i=200;i+)if (i%3=0)continue;else printf(%d,i);例:例:编程把编程把100200之间的不能被之间的不能被3整除的数输出。整除的数输出。96main()int a,b;for (a=1;a=9;a+)for(b=1;b=a;b+)printf(“%d ”,a*b);printf(“n”);结果?结果?12 43 6 94 8 12 165 10 15 20 256 12 18 24 30 367 14 21 28 35 42 498 16 24

60、 32 40 48 56 649 18 27 36 45 54 64 72 8197作业:1.编程分别输出下列图形:*2.P129 6.3 6.5 6.6 6.898数组数组是有序数据的集合。是有序数据的集合。数组中的每一个元素都属于数组中的每一个元素都属于同一个数据类型同一个数据类型。用一个统一的。用一个统一的数组名数组名和和下标来下标来唯一地确定唯一地确定数组中的元素。数组中的元素。数组是数组是C语言提供的一种构造类型数据,由基本数据类型语言提供的一种构造类型数据,由基本数据类型按一定规则组成。按一定规则组成。99一维数组的定义:一维数组的定义:1.一维数组的定义和引用一维数组的定义和引用

61、如:如:int char float等等。遵循标识符遵循标识符命名规则命名规则只能包含常量和符号常量。只能包含常量和符号常量。表示数组包含的元素个数。表示数组包含的元素个数。既数组的长度。既数组的长度。类型说明符数组名类型说明符数组名常量表达式常量表达式;100如:如:int a10;定义一个一维数组定义一个一维数组a,它包含了,它包含了10个具有整型数据类型的个具有整型数据类型的元素元素:a0,a1,a2,a3,a4,a5,a6,a7,a8,a9101一维数组的引用一维数组的引用例例 main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);a0a1a213a

62、4a5a6a7a8a90123456789下标可以是表达式下标可以是表达式数组元素的表示形式:数组元素的表示形式:数组名数组名下标下标语言规定只能语言规定只能逐个逐个引用数组元素,不能一次引用整个数引用数组元素,不能一次引用整个数组。而且必须组。而且必须先定义先定义数组,然后才能使用数组元素。数组,然后才能使用数组元素。先定义后先定义后使用使用102一维数组的初始化一维数组的初始化0 1 2 3 4 5 6 7 8 9a0 a1 a2 a3 a4 a5 a6 a7 a8 a9int a10=0,1,2,3,4,5,6,7,8,9;0 1 2 3 4 0 0 0 0 0b0 b1 b2 b3 b

63、4b5 b6 b7 b8 b9int b10=0,1,2,3,4;(后后5个元素赋值个元素赋值0。)初始化就是在定义数组的同时,给数组元素赋初始值。初始化就是在定义数组的同时,给数组元素赋初始值。语言规定语言规定:只有静态存储和外部存储数组才能初始只有静态存储和外部存储数组才能初始化化。1031 2 3 4 5d0 d1 d2 d3 d4int d=1,2,3,4,5;可以不指定数组长度,系可以不指定数组长度,系统根据后面花括号里的数统根据后面花括号里的数据决定数组的长度据决定数组的长度。0 0 0 0 0 0 0 0 0 0c0 c1 c2 c3 c4 c5 c6 c7 c8 c9int c

64、10=0,0,0,0,0;104例例1:在数组在数组a中存入中存入10个整数,将数组中的最大数存入个整数,将数组中的最大数存入a0位置。位置。3.一维数组程序举例一维数组程序举例例例2:用起泡法对用起泡法对6个数排序(由小到大)。个数排序(由小到大)。105起泡法起泡法:即是相临两个数比较,将小的调到前头。:即是相临两个数比较,将小的调到前头。985420895420859420854920854290854209第第1次次第第2次次第第3次次第第4次次第第5次次结果结果第第一一趟趟最大数以最大数以得到。得到。8542058420548205428054208第第1次次第第2次次第第3次次第第

65、4次次结果结果第第二二趟趟542089106 5420452042504205第1次第2次第3次结果第三趟 420420402第1次第2次结果第四趟2002第1次结果第五趟024589最后结果即:如果有即:如果有n个数,则要进行个数,则要进行n-1趟比较。在第趟比较。在第j趟比较中趟比较中要进行要进行n-j次两两比较。次两两比较。107main()int a11,i,j,t;for(i=1;i11;i+)scanf(%d,&ai);printf(n);for(j=1;j=9;j+)for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;for(i=1;i11;i+)printf(%

66、d ,ai);108 编写程序完成如下功能:编写程序完成如下功能:(1)从键盘输入字符串,)从键盘输入字符串,统计各个字母出现的次数。统计各个字母出现的次数。(2)从键盘输入)从键盘输入20个整数,求其最大值、最小值、平均值。个整数,求其最大值、最小值、平均值。(3)用程序实现以下图像的显示)用程序实现以下图像的显示。*(4)从键盘输入)从键盘输入20个整数,转置并输出值。个整数,转置并输出值。(5)求)求2+22+222+2222+22222。109二维数组的定义二维数组的定义4.二维数组二维数组类型说明符数组名类型说明符数组名常量表达式常量表达式常量表达式常量表达式;例例:float d34;/*定义定义d为为3行行4列的实型数组列的实型数组*/int b52;/*定义定义b为为5行行2列的整型数组列的整型数组*/char c23;/*定义定义c为为2行行3列的字符数组列的字符数组*/110内存内存a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23二维数组元素在内存中的排放顺序是:二维数组元素在内存中的排放顺序是:按行存放按行存放。如数组

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!