第10章C语言程序设计初步课件.ppt

上传人:小飞机 文档编号:2108280 上传时间:2023-01-11 格式:PPT 页数:70 大小:324.18KB
返回 下载 相关 举报
第10章C语言程序设计初步课件.ppt_第1页
第1页 / 共70页
第10章C语言程序设计初步课件.ppt_第2页
第2页 / 共70页
第10章C语言程序设计初步课件.ppt_第3页
第3页 / 共70页
第10章C语言程序设计初步课件.ppt_第4页
第4页 / 共70页
第10章C语言程序设计初步课件.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《第10章C语言程序设计初步课件.ppt》由会员分享,可在线阅读,更多相关《第10章C语言程序设计初步课件.ppt(70页珍藏版)》请在三一办公上搜索。

1、第10章 C语言程序设计初步,1,第10章 C语言程序设计初步1,10.1引论,程序设计语言的发展经历了三个阶段:,机器语言是用二进制表示的,计算机能直接识别和执行的语言 如:10000000(加)10010000(减),机器语言执行速度最快。由于用二进制表示,因而程序可读性差,非专业人员难于掌握,二进制指令通过符号化 如 ADD A,B,高级语言表达方式接近被描述的问题,接近于自然语言和数学表达式,易于人们接受和掌握,2,10.1引论 程序设计语言的发展经历了三个阶段:机器语言,C语言发展史,产生背景产生过程 时间:19721973 地点:美国贝尔实验室 目的:UNIX操作系统 设计人:Ke

2、n.Thompson和Dennis.M.RitchieC标准 标准C:K&R合著The C Programming Language ANSI C:1983年 87 ANSI C:1987年 1990年国际标准的ANSI C,3,C语言发展史产生背景3,2.C语言的特点,(1)高效性:C程序往往紧凑且运行速度快。(2)移植性:C程序不经修改或很少修改就可以到其他系统上运行。(3)运算符丰富:有算术、关系、逻辑、位、自增/自减、赋值运算符等等。(4)数据结构丰富:数据类型有整型、实型、字符、数组、指针、结构体等,能实现如链表、树、栈等结构运算。(5)对硬件操作:能直接访问内存的物理地址,并进行位

3、操作。(6)自由度大:语法限制不严格。如:不检查数组下标是否越界,整型与字符型可通用,条件可用0和非0表示假与真,指针操作灵活等。,4,2.C语言的特点(1)高效性:C程序往往紧凑且运行速度快。,10.1.3 C语言程序的基本结构,一个C语言程序可以是非常简单的,也可以是特别复杂的,这取决于程序所要实现的功能。我们先来认识一个最为简单的C程序。,【例1】最简单的C程序。,void main()printf(This is a C Language Program!n);,语句结束标志,运行结果:This is a C Language Program!,main是主函数的函数名,表示这是一个主

4、函数。每一个C源程序都必须有,并且只能有一个主函数(main函数),这是整个C程序运行的入口点,printf是C语言中的输出函数,它的功能是把要输出的内容送到显示器去显示。双引号内字符串原样输出,“n”是回车换行符。,C语言规定:语句以分号结束,5,10.1.3 C语言程序的基本结构 一个C语言程序,【例2】计算输入的两个整数的和。,/*求两数的和。*/void main()int a,b,sum;/*这是定义变量*/a=12;b=34;sum=a+b;printf(The sum is%dn,sum);,运行结果:the sum is 46,6,【例2】计算输入的两个整数的和。数据类型名定义

5、的变量名,以,【例3】计算输入的两个整数的最大值。,/*This is the third C program*/#include int max(int a,int b);void main()int x,y,z;printf(Input two numbers:n);scanf(%d%d,int max(int a,int b)int c;if(a b)return a;else return b;return(c);,自定义函数max,返回a、b中最大值,假设输入:10 20 运行结果:max=20,调用内部函数,接受键盘输入数据,7,【例3】计算输入的两个整数的最大值。/*This i

6、s,总结源程序的结构特点,(1)一个语言源程序可以由一个或多个源文件组成,每个源文件以“.c”作为扩展名。(2)每个源文件可由一个或多个函数组成。(3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数,整个程序的运行从主函数开始。(4)源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。(5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头之后不能加分号。(6)标识符、关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。,8,总结源程序的结构特点(1)一个语言源程序可以由一

7、个或多,编 辑,程序代码的录入,生成源程序*.c或*.cpp,编 译,语法分析查错,翻译生成目标程序*.obj,链 接,与其它目标程序或库链接装配,生成可执行程序*.exe,运 行,10.1.4 语言的编辑、编译和运行,9,编 辑程序代码的录入,生成源程序*.c或*.cpp编 译语法,人们使用计算机,就是要利用计算机处理各种不同的问题,而要做到这一点,人们就必须事先对各类问题进行分析,确定解决问题的具体方法和步骤,再编制好一组让计算机执行的指令即程序,让计算机按人们指定的步骤有效地工作。这些具体的方法和步骤,其实就是解决一个问题的算法。根据算法,依据某种规则编写计算机执行的命令序列,就是编制程

8、序,而书写时所应遵守的规则,即为某种语言的语法.,10.2 算法基础,10.2.1 算法(Algorithm)的概念,【例10.2.1】输入3个数,求其最大值。问题分析:设num1,num2,num3存放3个数,max存放其最大值。为求最大值,就必须对3个数进行比较,可按如下步骤去做:输入3个数num1,num2,num3。先把第1个数num1的值赋给max。将第2个数num2与max比较,如果num2max,则把第2个数num2的值赋给max(否则不做任何工作)。将第3个数num3与max比较,如果num3max,则把第3个数num3的值赋给max(否则不做任何工作)。输出max的值,即最大

9、值。,10,人们使用计算机,就是要利用计算机处理各种不同的问题,而要做到,10.2.2 算法的基本特征,一个算法应具有以下5个基本特征:有穷性确定性有效性 有零个或多个输入 有一个或多个输出,算法必须总是在执行有限个操作步骤和可以接受的时间内完成其执行过程。也就是说,对于一个算法,要求其在时间和空间上均是有穷的。例如:一个采集气象数据并加以计算进行天气预报的应用程序,如果不能及时得到结果,超出了可以接受的时间,就起不到天气预报的作用。,算法中的每一步都必须有明确的含义,不允许存在二义性。例如:“将成绩优秀的同学名单打印输出”,在这一描述中“成绩优秀”就很不明确,是每门功课均为95分以上?还是指

10、总成绩在多少分以上?,算法中描述的每一步操作都应能有效地执行,并最终得到确定的结果。例如:当Y=0时,X/Y是不能有效执行的。,11,10.2.2 算法的基本特征 一个算法应具有以下5个基本特,10.2.3 算法的表示,用自然语言表示 用流程图表示 用伪代码表示 计算机语言表示算法,自然语言可以是中文、英文、数学表达式等。用自然语言表示通俗易懂,缺点是可能文字过长,不太严格,表达分支和循环的结构不很方便。【例10.2.2】求1+2+m的值N,当N10000时结束。算法可表示如下:n=0m=0m加1N加m判N是否大于10000,如果满足关系结束;不满足关系继续执行。,伪代码是用介于自然语言和计算

11、机语言之间的文字和符号来描述算法的,它不用图形符号,因此,书写方便,格式紧凑,也容易懂,同时也便于向计算机语言算法的转换。【例10.2.4】用伪代码表示求10!的算法。begin(开始)置t的初值为1(1t)置i的初值为2(2i)当(while)i=10,执行(do)begin 使t=ti 使i=i+1 end 打印t的值(print t)end(结束)。,计算机是无法识别流程图和伪代码形式,只有用计算机语言编写的程序才能被计算机执行。因此在用流程图和伪代码形式描述出算法后,还要将它转换成计算机语言程序。【例10.2.5】用C语言程序来描述求10!。#include void main(voi

12、d)long i,t;t=1L;i=2L;while(i=10L)t=t*i;i=i+1;printf(%ldn,t);。,12,10.2.3 算法的表示 用自然语言表示 自然语言可以是,C数据类型,基本类型,构造类型,指针类型,空类型void,字符类型char,枚举类型enum,整 型,实型,数组,结构体struct,共用体union,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,本节所介绍的数据类型,10.3 基本数据类型,10.3.1 数据概述,13,C基本类型构造类型指针类型空类型void字符类型char枚举,常量与符号常量.常量定义:程序运行时其值不能改变的

13、量(即常数)常量的分类:直接常量(值常量)整型常量 如,15、0、7浮点型常量 如,5.0、12.36字符型常量 如,A、a 指针常量 如,NULL字符串常量 如,”ABC”符号常量 用标识符来代表常量。其定义格式为:,#define 符号常量 常量,#define NUM 20#define PI 3.1415926,【例10.3.1】#include#define PI 3.14 main()float area;area=10*10*PI;printf(“area=%fn”,area);,运行结果:area=314.000000,行尾不能有分号 define前面一定要有#符号常量名最好使

14、用大写 符号常量名最好有意义,14,常量与符号常量#define 符号常量,变量定义:程序运行时其值可以被改变的量 变量的两要素:变量名、变量值变量的使用:先说明,后使用,例:int x,y,z;float radius,length,char ch;,例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;,15,变量例:例:15,10.3.2 整型数据,1.整型常量,十进制整数:由数字09和正负号表示.如:123,-456,0八进制整数:由数字0开头,后跟数字07表示.如:0123,011十六进制整数:由0

15、 x或0X开头,后跟09,af,AF表示.如0 x123,0Xff,2.整型变量,整型变量的分类,16,10.3.2 整型数据1.整型常量 十进制整数:由数字0,变量的说明,也即变量的定义,一般形式为:类型说明符 变量名标识符1,变量名标识符2,.;例如:int a,b,c;/*a,b,c为整型变量*/long m,n;/*m,n为长整型变量*/unsigned p,q;/*p,q为无符号整型变量*/在书写变量说明时,应注意以下几点:允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。最后一个变量名之后必须以“;”号结尾。变量说明必

16、须放在变量使用之前。也可在说明变量为整型的同时,给出变量的初值。其格式为:类型说明符 变量名标识符1=初值1,变量名标识符2=初值2,.;,整型变量的说明,【例10.3.2】main()int a=3,b=5;printf(“a+b=%dn”,a+b);程序的运行结果为:a+b=8,17,变量的说明,也即变量的定义,一般形式为:整型变量的说明,5.10.3.3 实型数据,实型常量(实数或浮点数),十进制小数形式:由数字09和小数点组成.如:0.0,5.6,-5.指数形式:由十进制数,加阶码标志e或E以及阶码(只能为整数,可以带符号)组成.其一般形式为:aEn 其中:a为十进制数,n为十进制整数

17、,都不可缺少。其可表示为a10n,合法的实数表示:2.1E5 表示2.1105,3.7E-2 表示3.710-2。,非法的实数表示:345(无小数点),E7(阶码标志E之前无数字),-5(无阶码标志),50.-E3(负号位置不对),实型变量,单精度实型(float)float f=3.14,g;这种定义的变量在内存中占4个字节(32位)的存储单元。双精度实型(double)double x,y;这种定义的变量在内存中占8个字节(64位)的存储单元。,注意:实型常量不分单精度和双精度。一个实型常量可以赋给一个float或double型变量,根据变量的类型截取实型常量中相应的有效位数字。【例10.

18、3.3】main()float a;a=0.123456789;printf(a=%f,a);运行结果为:a=0.123457,18,5.10.3.3 实型数据实型常量(实数或浮点数),10.3.4 字符型数据,字符型常量,定义:用单引号括起来的单个普通字符或转义字符.,如 a A?n 101,字符常量的值:该字符的ASCII码值,如 A65,a97,048,n10,转义字符:反斜线后面跟一个字符或一个代码值表示,19,10.3.4 字符型数据字符型常量 定义:用单引号,字符型变量 字符型数据类型符是char(字符character)在内存中占1个字节(16位)字符变量存放字符ASCII码 c

19、har与int数据间可进行算术运算 存在有符号和无符号之分。默认情况下为有符号,例:char ch;unsigned char C=B;,例:a=D;/a=68;x=A+5;/x=65+5;s=!+G/s=33+71;,【例10.3.4】main()char a,b;a=120;b=121;printf(%c,%cn%d,%dn,a,b,a,b);程序运行结果为:x,y120,121(思考?),20,字符型变量例:例:【例10.3.4】20,基本算术运算符:+-*/%结合方向:从左向右 优先级:-*/%-+-(2)(3)(4)说明:“-”可为单目运算符时,右结合性 两整数相除,结果为整数%要求

20、两侧均为整型数据,例:5/2=-5/2.0=,例:5%2=-5%2=1%10=5%1=5.5%2,2,-2.5,1,-1,1,0,(),10.3.5算术运算符和算术表达式,21,基本算术运算符:+-*/%例:5,自增、自减运算符+-作用:使变量值加1或减1 种类:前置+i,-i(先执行i=i+1或i=i-1,再使用i值)后置 i+,i-(先使用i值,再执行i=i+1或i=i-1),例:j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3

21、,j=4,/4,/3,/c=20,a=4,/c=15,a=4,22,自增、自减运算符+-例:j=3;k=,表达式和算术表达式,表达式:用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子。算术表达式:表达式中的运算符都是算术运算符的表达式。,例:3+5*8、(x+y)/2-1等,23,表达式和算术表达式 表达式:用运算符和括号将运算对象(常量,10.4 顺序结构程序设计,10.4.1 C语言语句1.控制语句:完成一定功能的语句称为控制语句。C语言有9种控制语句,参见表10.4-1。2.表达式语句 由一个表达式构成一个语句,称为表达式语句。一般形式为:表达式;表达式语

22、句可分为:(1)赋值语句 赋值语句由赋值表达式后跟一个分号组成。例如:a=3;(2)函数调用语句 函数调用语句由函数调用表达式后跟一个分号组成。例如:printf(“This is a C statement.”);(3)空语句 空语句是只有一个分号而没有表达式的语句。,24,10.4 顺序结构程序设计10.4.1 C语言语句24,3.特殊语句C语言中还包括一些其他语句,如复合语句等。把多个语句用花括号括起来组成的语句称复合语句。在程序中可以把复合语句看成是一条语句,而不是多条语句。例如:x=y+z;a=b+c;printf(“%d%d”,x,a);注:复合语句内的各条语句都必须以分号“;”结

23、尾,在括号“”外不能加分号。,25,3.特殊语句25,10.4.2 printf函数,1.一般格式,printf(格式控制字符串,表达式1,表达式2,表达式n);,功能,按照“格式控制字符串”的要求,将表达式1,表达式2,表达式n的值显示在计算机屏幕上。,说明,格式控制字符串用于指定输出格式。它包含两类字符:常规字符:包括可显示字符和用转义字符表示的字符。格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:,%修饰符格式转换字符,例:long int x=0 x8AB6;printf(“The Value of x is%ldn”,x);,常规字符,常

24、规字符(转义符),格式控制符(修饰符),格式控制符(格式转换符),26,10.4.2 printf函数1.一般格式print,2.转义字符 就以一个“”开头的字符序列,称为转义字符,【例10.4.1】转义字符的使用main()char a,b,c;a=n;b=e;c=167;/*8进制数167代表的字符w*/printf(“%c%c%cn”,a,b,c);/*以字符格式输出*/printf(“%ct%ct%cn”,a,b,c);/*每输出一个字符跳到下一输出区*/printf(“%cn%cn%cn”,a,b,c);/*每输出一个字符后换行*/,运行结果如下:new new“”代表空格,下同 n

25、 e w,27,2.转义字符字符形式含 义ASCII代码n换行,将当,3.printf函数的调用 格式控制用于指定输出参数的输出格式,格式控制由两部分组成:格式说明和普通字符。普通字符(包括转义字符)将被简单地复制显示(或执行)。一个格式说明项将引起输出参数项的转换与显示。例如:main()int a=3,b=4;printf(“a=%db=%dn”,a,b);输出结果为:a=3b=4,“n”为转义字符,【例10.4.2】main()char ch1=a,ch2=b;printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2

26、);程序运行结果为:?,28,“%d”是格式说明“a=”、“”、“b=”为普通字符3.,4.格式字符串,在Turbo C中printf函数格式字符串一般形式为:,说明:格式字符:格式字符用来表示输出数据的类型,在格式控制字符串不能略,其常用符号和含义参见表10.4-3。(2)标志字符:标志字符包括-、+、#三种,具体含义参见表10.4-4。宽度指标符:用来设置输出数据项的最小宽度,通常用十进制整数来表示输出的位数。如果输出数据项所需实际位数多于指定宽度,则按实际位数输出,如果实际位数少于指定的宽度则用空格填补。精度指示符:以“.”开头,用十进制整数指精度。对于float或double类型的浮点

27、数可以用“m.n”的形式在指定宽度的同时来指定其精度。其中,“m”用以指定输出数据所占总的宽度,“n”称为精度。长度修正符:常用的长度修改符为h和l两种,h表示输出项按短整型输出,l表示输出项按长整型输出。,例如,以下语句输出六位十进制整数:printf(“%6dn”,111);printf(“%-6dn”,111);输出结果为:111(输出右对齐,左边填空格)111(输出左对齐,右边填空格)例如,语句printf(“%+d,%+dn”,111,-111);输出结果为:+111,-111输出八进制或十六进制时,可以使用以下形式:printf(“%#o,%#xn”,10,16);输出结果为:01

28、2,0 x10,【例10.4.3】输出形式举例main()int num1=123;long num2=1234567;float real=123.4567;printf(“%d,%6d,%-6d,%2dn”,num1,num1,num1,num1);printf(“%ld,%8ld,%4ldn”,num2,num2,num2);printf(“%f,%10f,%10.2f,%-10.2fn”,real,real,real,real);printf(“%s,%10.5s,%-10.5sn”,”student”,”student”,”student”)输出结果如下:123,123,123,12

29、31234567,1234567,1234567123.456700,123.456700,123.46,123.46 student,stude,stude,29,4.格式字符串在Turbo C中printf函数格式字符,4.2 格式化输入scanf,一般格式,scanf(“格式控制字符串”,变量1的地址,变量2的地址,变量n的地址);,功能,第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、变量n中。,格式控制符与后续参数中的变量地址的对应关系,已 知:int a,b;函数调用:scanf(%d%d,假设输入:1020 变量的值:a的值是10,b

30、的值是20,30,4.2 格式化输入scanf 一般格式scanf(“格式,scanf函数的格式控制符,%*width l|h Type,一般形式:,说明:,:表示可选项,可缺省。|表示互斥关系。width:指定输入数据的域宽,遇空格或不可转换字符则结束。Type:各种格式转换符(参照printf)。*:抑制符,输入的数据不会赋值给相应的变量。l:用于d、u、o、x|X前,指定输入为long型整数;用于e|E、f前,指定输入为double型实数。h:用于d、u、o、x|X前,指定输入为short型整数。,31,scanf函数的格式控制符%*width,【例】数据的格式化输入 输入一学生的学号(

31、8位数字)、生日(年-月-日)、性别(M:男,F:女)及三门功课(语文、数学、英语)的成绩,现要求计算该学生的总分和平均分,并将该学生的全部信息输出(包括总分、平均分)。,#include void main()unsigned long no;/学号 unsigned int year,month,day;/生日(年、月、日)unsigned char sex;/性别 float chinese,math,english;/语文、数学、英语成绩 float total,average;/总分、平均分 printf(input the students NO:);scanf(%8ld,prin

32、tf(input the students Scores(chinese,math,english):);scanf(%f,%f,%f,假设输入:input the students NO:20040101input the students Birthday(yyyy-mm-dd):1987-9-8input the students Sex(M/F):Minput the students Scores(chinese,math,english):90,80,90,输出结果:=NO=birthday=sex=chinese=math=english=total=average2004010

33、1 1987-09-08 M 90.0 80.0 90.0 260.0 86.7,32,【例】数据的格式化输入#include,10.4.4其他输入输出函数,1.getchar,int getchar(void);/应包含的.h文件为stdio.h,功能:从键盘读一字符 返值:正常,返回读取字符的ASCII码值;出错,返回EOF(-1)。说明:以回车符为输入结束条件;输入多个字符时,返回第一个字符的值;输入字符回显。,33,10.4.4其他输入输出函数1.getchar int,【例】利用getchar输入字符,#include#include void main()char ch1,ch2;

34、int a;ch1=getchar();ch2=getchar();scanf(%d,34,【例】利用getchar输入字符#include std,2.putchar,int putchar(int c);/应包含的.h文件为stdio.h,功能:在显示器上输出字符c。返值:正常,返回字符的代码值;出错,返回EOF(-1)。说明:该函数带有一个参数c,它为要显示字符的ASCII码值,有一个int型返回值。,35,2.putchar int putchar(int,【例】利用字符输出函数输出字符,#include void main()int a=65;char b=B;putchar(a);

35、/不自动回车 putchar(n);puts(“is as good as”);/自动回车 putc(b,stdout);,36,【例】利用字符输出函数输出字符#include stdi,10.5.1 关系运算和逻辑运算,1.关系运算符和关系表达式,关系运算符,关系表达式,用关系运算符连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式 关系运算符 表达式,例:a+b c d x 3/2 a+1 c i 5*j=k+1,注意:C语言用0表示假,非0表示真。一个关系表达式的值不是0就是1,0表示假,1表示真。,10.5 选择结构程序设计,37,10.5.1 关系运算和逻辑运算1.关系运算

36、符和关系表达式,2.逻辑运算符和逻辑表达式,逻辑运算符,逻辑运算真值表,38,2.逻辑运算符和逻辑表达式 逻辑运算符 逻辑运算符含,!、+、-、sizeof 高算术运算符移位运算符关系运算符&、|、&、|赋值运算符 低,例如:a b&x y 等价于:a=b|x=y 等价于:!a|a b 等价于:!a b 等价于:c=a|b 等价于:a|7&b&8 等价于:a 2&b 1 等价于:,2.逻辑运算符和逻辑表达式,逻辑表达式,用逻辑运算符连接起来的式子称为逻辑表达式。逻辑表达式的一般形式为:表达式 逻辑运算符 表达式,例:a 10|x-10、!x&!y,逻辑运算符的优先级,(a=x)&(x=b),(

37、a b)&(x y),(a=b)|(x=y),(!a)|(a b),(!a)b,c=(a|b),(a|7)&(b&8),(a 2)&(b 1),已知:a=4;b=5;问:c=b 3 的值?,答:c 的值为1。等价于:c=(b 3),例:a=4;b=5;!a a&b a|b!a|b 4&0|2 5 3&2|8 4-!0 c&d,/值为0,/值为1,/值为1,/值为1,/值为1,/值为1,/值为1,39,!、+、-、sizeof 高例如:2.逻,10.5.2 选择结构的程序设计,1.if语句,简单if语句形式,if(表达式)语句;,格式:,执行流程:,例如:下面的程序段是输出其中的大数。【例10.

38、5.3】if(Number1 Number2)Number1=Number2;printf(“The bigNumber is%d”,Number1);,if_else形式,if(表达式)语句1;else 语句2;,格式:,执行流程:,例如:下面的程序段同样是输出两个整数中的最大数。int a,b;printf(input two numbers:);scanf(%d%d,40,10.5.2 选择结构的程序设计 1.if语句 简单i,【例10.5.6】根据输入的百分制成绩(score),要求输出成绩等级(grade)A、B、C、D、E。90分以上为A,8089分为B,7079分为C,6069分

39、为D,60分以下为E。用if语句实现,程序如下:,if 和else子句中,可以是任意合法的C语句或语句块,如果这子句是个if语句,则构成了if语句的嵌套。,程序的运行情况如下:Please input a score(0100):86The grade is B.,main()int score;char grade;printf(“n Please input a score(0100):”);scanf(“%d”,&score);if(score=90)grade=A;else if(score=80)grade=B;else if(score=70)grade=C;else if(sco

40、re=60)grade=D;else grade=E;printf(“The grade is%c.n”,grade);,2.if语句的嵌套,41,【例10.5.6】根据输入的百分制成绩(score),要求输,3.条件运算符,一般形式:expr1?expr2:expr3执行过程功能:相当于条件语句,但不能取代一般if语句,42,3.条件运算符一般形式:expr1?expr,10.5.3 switch 语句一般格式:,switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组;break;

41、,执行过程:,43,10.5.3 switch 语句switch(表达式),【例10.5.7】根据天气情况,安排活动。#include main()int w_con;/*天气情况变量定义*/printf(天气如何?1:晴天,2:多云,3:下雨);scanf(%d,break作用:控制转向switch语句的后继语句。,44,【例10.5.7】根据天气情况,安排活动。44,10.5.4 程序设计举例,【例10.5.7】输入三个整数,输出其中的最大数【例10.5.8】输入三个整数,按值从大到小的顺序输出。【例10.5.9】对分段函数:x(x,求以下程序的输出结果【例10.5.12】执行以下程序时,

42、为了使输出结果为:t=4,则给a和b输入的值应满足的条件是:A)ab B)a0&ab D)a0&ab,45,10.5.4 程序设计举例【例10.5.7】输入三个整数,输,10.6 循环结构程序设计,C语言中用如下语句实现循环 while语句。do-while语句。for语句。用goto语句和if语句构成循环。,46,10.6 循环结构程序设计C语言中用如下语句实现循环46,10.6.1 循环结构的程序设计,1.while语句,一般形式:,while(表达式)循环体语句;,执行流程:,其中:(1)while后面的括号()不能省。(2)while后面的表达式可以是任意类型的表达式,但一般是条件表达

43、式或逻辑表达式。(3)表达式语句称为“循环体”,可以是任何语句,通常是一个复合语句。(4)若循环体中又含有“循环语句”,则称为循环嵌套,也称多重循环。,特点:先判断表达式,再执行循环体,47,10.6.1 循环结构的程序设计 1.while语句,【例】利用while语句,编写程序,求1+2+3+100的值,#include void main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(sum=%dn,sum);,循环初值,循环终值,循环条件,循环体,循环变量增值,运行结果:sum=5050,48,【例】利用while语句,编写程序,求1+2+3+1

44、0,(1)如果while后的表达式的值一开始就为假,循环体将一次也不执行。(2)当循环体由多个语句组成时,必须用左、右花括号括起来,使其形成复合语句。(3)为了使循环最终能够结束,而不至于使循环体语句无穷执行(即产生“死循环”),每执行一次循环体,条件表达式的值都应该有所变化,这既可以在表达式本身中实现,也可以在循环体中实现。,while语句注意事项:,int a=0,b=0;while(a 0)/a 0为假,b+不可能执行 b+;,int num=0;/字符计数while(1)if(getche()=n)/如果输入的字符是回车符,则返回 return;num+;,49,(1)如果while后

45、的表达式的值一开始就为假,循,10.6.2 do-while循环语句,一般形式:,do 循环体语句;while(表达式);,执行流程:,其中:while后面的括号()不能省。while最后面的分号;不能省。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。do必须与While联合使用。C语言中的do-while语句是在表达式的值为真时重复执行循环体,这一点与别的语言中类似语句有区别,在程序设计时应引起注意。,特点:先执行循环体,再判断表达式,50,10.6.2 do-while循环语句 一般形式:do 执,【例10.6.3】利用do-while语句,求1+2+3+100的值,#incl

46、ude void main()int i=1,sum=0;do sum+=i;i+;while(i=100);printf(sum=%dn,sum);,运行结果:sum=5050,51,【例10.6.3】利用do-while语句,求1+2+3+,【例10.6.5】while和do-while循环的比较 main()main()int sum=0,i;int sum=0,i;scanf(%d,52,【例10.6.5】while和do-while循环的比较52,10.6.3 for语句,一般形式:,for(表达式1;表达式2;表达式3)循环体语句;,执行流程:,其中:for后面的括号()不能省。表

47、达式1:一般为赋值表达式,给控制变量赋初值。表达式2:关系表达式或逻辑表达式,循环控制条件。表达式3:一般为赋值表达式,给控制变量增量或减量。表达式之间用分号分隔。语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,for语句很好地体现了正确表达循环结构应注意的三个问题:控制变量的初始化。循环的条件。循环控制变量的更新。,53,10.6.3 for语句 一般形式:for(表达式1;表,【例】用for语句求1100的累计和。,#include void main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(sum=%dn,sum);,运行结果:

48、sum=5050,54,【例】用for语句求1100的累计和。#include,【例10.6.6】请编写一个程序,计算半径为0.5、1.5、2.5、3.5、4.5、5.5mm时的圆面积。【例10.6.7】求正整数n的阶乘n!其中n由用户输入。,55,【例10.6.6】请编写一个程序,计算半径为0.5、1.5、,#include void main()int i,sum=0;i=1;for(;i=100;i+)sum+=i;printf(sum=%dn,sum);,#include void main()int i,sum=0;i=1;for(;i=100;)sum+=i+;printf(sum

49、=%dn,sum);,for语句注意事项:,省掉表达式1,3,省掉表达式1,(1)表达式1、表达式2、和表达式3都是任选项,可以省掉其中的一个、两个或全部,但其用于间隔的分号是一个也不能省的。,#include void main()int i,sum=0;i=1;for(;)if(i 100)break;sum+=i+;printf(sum=%dn,sum);,省掉表达式1,2,3,表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束,56,#include#include st,for语句注意事项:,for(a=1;a+)printf(,(3)表达式2如果为空则相当于表达式2的

50、值是真。,死循环!,(4)表达式2一般是关系表达式(如i10)或逻辑表达式(如ab&xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。分析下面两个例子:,for(i=0;(c=getchar()!=n;i=i+c);for(;(c=getchar()!=n;)printf(“%c”,c);,57,for语句注意事项:for(a=1;a+),10.6.4 语句标号和goto 语句,一般形式:,goto 语句标号;语句标号:,语句标号:goto 语句标号;,或,说明:,语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与go

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号