语言程序设计课件_第1页
语言程序设计课件_第2页
语言程序设计课件_第3页
语言程序设计课件_第4页
语言程序设计课件_第5页
已阅读5页,还剩271页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 教材分析 本书内容共有11章,可分为三部分。 第1、2章为第一部分,为初学者的入门知识,使读者对c 语言编写程序的步骤、方法和程序结构及算法描述有一个大致的 了解。 第3第5章为第二部分,是程序设计的基础部分,使读者详 细了解c语言的基本数据类型和表达式以及c语言的控制结构。掌 握了第一、二部分的内容,读者可以完成简单的程序设计。 第6章第11章为第三部分,讲述了模块化程序设计的概 念和实现的方法,为程序设计提供了更多、更方便的途径,为进 行综合程序设计奠定了基础。每一个章节里都有详细的程序范例 来说明程序的设计思想、语句的概念、作用、含义和使用方法, 使学生能够由浅入深系统地学习c语言的知识,同时掌握一定的编 程方法。 成绩考核 成绩考核方法: 期末成绩=平时成绩20%+期末考试80%; 注:平时成绩包括:上课情况、作业情况、上机 作业完成情况等。 学习C的忠告 上机实践(编程)! (Try!) C语言程序设计教程 第1章 引言 第2章 程序的简单算法制定 第3章 基本程序语句 第4章 选择结构 第5章 循环结构 第6章 函数与编译预处理 第7章 数组 第8章 指针 第9章 构造数据类型 第10章 文件 第11章 位运算 C语言程序设计课程的任务 1. 指导学生掌握 C 程序设计语言的基础知识; 2.培养学生综合分析并编制程序解决实际应用问题的能力; 3.培养学生契而不舍的解决问题的精神以及认真的学习态度 。 通常我们把设计、书写及检查调试程序的过程称为程序设计 。应当指出,简单的程序设计应包括以下几个部分: 确定数据结构 确定算法 编写代码 调试并运行 整理并写出文档资料 第一章 引 言 1.1 C语言的特点 1.2 简单的C语言程序介绍 1.3 C语言程序的结构 1.4 C程序设计语言的执行 1.1 C语言的特点 C语言有9种控制语句,32个关键字。 运算符丰富。共有34种运算符 数据结构类型丰富。 具有结构化的控制语句 语法限制不太严格,程序设计自由度大。 C语言允许直接访问物理地址,能进行位操作,可以直接 对硬件进行操作。 生成目标代码质量高,程序执行效率高。 C语言编写的程序可移植性好。 1.2 简单的C语言程序介绍 /* /*ex101.c-ex101.c-在屏幕上输出在屏幕上输出This is a C program.This is a C program. */ */ # #includeinclude voidvoid main main( ) printf(“Thisprintf(“This is a C program.n”); is a C program.n”); 注释 /* /*ex101.c-ex101.c-在屏幕上输出在屏幕上输出This is a C This is a C program. */program. */ C程序中的“/* */”之间的内容称为注释, 是程序编写者给程序阅读者留下的一些说明 (注释),以帮助阅读者理解程序。编译器 不对注释进行编译,只将它们当作空白看待 。 本程序的第1行中的注释为“ex101.c”,是说 明本书编写时将这个程序保存在文件ex101.c 中。 库函数与文件包含命令include #include n 库函数:系统提供的标准函数,程序可直接使用 ; n 使用库函数必须将其有关说明信息写入程序。为 了用户方便,系统定义库函数时,把一类相关库函 数的说明信息,分别写在一些文件中。本例中使用 了库函数printf ,其有关说明信息写在文件stdio.h中 。所以在程序的开始加入了# #includeinclude n 使用C语言的库函数,库函数,要在程序前面加上类似 # #include 的的预处理命令预处理命令 main函数 任何C程序都必须有且只能有一个主函数必须有且只能有一个主函数main()main(),它是程序的入口 ,也是程序的出口。其中,main是函数名函数名,()内可以包含一些参数参数; 的内容称为函数体函数体, ,其包含若干条C C程序语句程序语句;不同语句之间用分号 分号分 隔;一般情况下,每个程序都由一至多个函数组成; 表示main函数 没有返回值函数名 函数体 语句 voidvoid main main( ) printf(“Thisprintf(“This is a C program.n”); is a C program.n”); 演示ex101 语句 printf(“Thisprintf(“This is a C program.n”); is a C program.n”); C语言的主函数体由一些语句组成。每个语句由 一个分号结束。如本例中,主函数的一个语句: printf (“This is a C program.n”); 说明: n函数printf是系统提供的一个库函数,printf函数的功能是向 显示器 输出一段信息,具体内容括在双引号内; n参数中的“n”代表一个命令:输出完这行字符后换行,不是 要求显示的文字。 例2 写出以下程序的运行结果 写出以下程序的输出结果写出以下程序的输出结果 #include void main void main( ) printf(“Hellonprintf(“Hellon”); ”); printf(“world!nprintf(“world!n”);”); 演示 ex102 例3 四则运算编程 #include int add(int x,int y); main() int a,b,c; scanf(“%d %d“, c=add(a,b);/*函数调用语句*/ printf(“c=%d“,c); int add(int x,int y) return(x+y); 演示ex103 演示ex104 讨论减、乘、除的编程 输入函数 Scanf() 函数说明 函数定 义 1.4 C程序设计语言的执行 对于C语言程序来说,这一过程一般分为4 步: 第1步:编辑源程序; 第2步:编译; 第3步:链接; 第4步:执行; ( (整个过程如下整个过程如下图图) ) filename.cfilename.c 编编 辑(辑( editedit) 编辑器编辑器 filename.objfilename.obj 预处理预处理 编编 译译 ( (compile)compile) 编译器编译器 filename.exefilename.exe 库函数和库函数和 其他目标模其他目标模 块块 链链 接接 ( (link)link) 链接器链接器 出错出错出错出错 执执 行行 ( (excuteexcute/run)/run) 结果结果 出错出错出错出错 调试调试debugdebug 编 译 编译就是把用C语言描述的程序翻译成计算机可以直接理 解并执行的机器语言命令组成的程序。C语言的编译过程分 为两个阶段:首先是编译预处理,系统要先扫描程序,处理 所有预处理命令,如把文件包含命令要求的文件包含(嵌入 )到程序中。然后才开始编译。编译后得到的文件称为目标 文件。目标文件就是用机器语言描述的文件。C语言的目标 文件的后缀为.obj。目标文件的主文件名,一般与源程序文 件名相同。 在编译过程中,还要对源程序中的语法和逻辑结构进行检 查。编译任务是由称做编译器(compiler)的软件完成的。 程序在编译过程中,也可能发现错误。这时要重新进入编辑 器进行编辑。 链 接 链接是将与当前程序有关的、已经有的几个目标模块链接 在一起,形成一个完整的程序代码文件。这些已经有的目标 模块有: 库函数:如前面使用的printf; 对于大的程序,常常分成几个模块,分别编写、编辑和 编译,形成不同的目标模块。 经正确链接所生成的文件才是可执行文件。可执行文件的 文件名后缀为.exe(有的系统为.out)。完成链接过程的软 件称为链接器(linker)。 程序在连接过程中,也可能发现错误。这时也要重新进入 编辑器进行编辑。 执 行 链接后得到的可执行文件名,对操作系统 来说,相当于一条命令。在操作系统提供的 命令界面上打入这个命令,就可以开始执行 这个程序。 C语言的集成开发环境 Turbo c 2.0 Turbo c+(选用)Vc+等 (1)打开Turbo c+运行环境。界面如图: 从图可以看到在集成环境的上部,有一行“主菜单”,其中 包括下面10个菜单项: File Edit Search Run Compile Project Options Debug Window Help 分别代表:文件操作、编辑、查找、运行、编译 、项目文件、选项、调试、窗口、帮助等功能。用户可通过以 上菜单项来选择使用Turbo C集成环境所提供的各项主要功能。 (2)编辑源程序。 在File菜单下选择NEW子菜单项命令,系统的光标处于等 待输入C源程序状态。输入完源程序后,选择File菜单下选择 Save as子菜单项命令进行保存,在随后弹出的保存文件对话框 中,输入文件名*.c后按“” (3)编译源程序 选择Compile主菜单项并在其下拉子菜单中选择Compile 命 令,则进行编译。若源程序无语错误,生成可执行文件EXE; 若源程序有语法错误,在Message窗口显示错误信息,此时没有 生成可执行文件,应回到第2步,修改程序的错误,直到无语法 错误、生成可执行文件。 返回 (4) 连接程序 在Compile菜单中,选择Link子菜单项命令,程序 将被连接成可执行程序。 注:按F9键,可一次完成编译和连接。 (5) 执行程序。选择Run子菜单命令,或按快捷键 Ctrl+F9。 (6) 看结果。程序运行后看结果必须选择File菜单下 的DOS Shell命令 或者按快捷键Alt+F5,才能看到运行的 结果。 如程序未得到预期的结果,应回到第2步,修改 程序的错误。 (7) 退出Turbo C+,File-Quit菜单命令或按Alt+X 。 总结:简单总结:简单C C语言程序设计步骤语言程序设计步骤 分析问题,设计解决方案分析问题,设计解决方案 了解和编写了解和编写C C语言程序代码语言程序代码 3.3. 上机调试(编辑、编译、链接、执行)上机调试(编辑、编译、链接、执行) 理论课的主理论课的主 要内容要内容 实验课的主要内容实验课的主要内容 上述每个步骤都可能出现很多错误,上述每个步骤都可能出现很多错误, 具体有三种错误:语法错误、逻辑错误具体有三种错误:语法错误、逻辑错误 、运行错误。总之,出现错误就要进行、运行错误。总之,出现错误就要进行 调试调试。 作作 业业 1 1、在屏幕上输出如下图形:、在屏幕上输出如下图形: 2525 要求:写出程序,并上机调试,尽量保证要求:写出程序,并上机调试,尽量保证 程序能够得到正确结果。程序能够得到正确结果。复习本讲内容(第 一章),预习教材第二章。 第二章 程序的简单算法制定 2.1 结构化程序的算法制定 2.2 结构化程序的算法描述 2.3 算法制定的范例 2.1 结构化程序的算法制定 利用计算机处理问题简述 2.1 结构化程序的算法制定 例2.1 从键盘输入3个数,找出其中最小的那个数。 分析:1、需变量的个数-3个 2、先比较a,b的值,把小的存在min中。 3、再用min与c比较,把数值小的存放在min中。 如果 a0(双实根) X1= X2= 如果 b2 -4ac=0(单实根) X1=X2= 如果 b2 -4ac=60) printf(“Passed!”); else printf(“Failed”); 算法可采用自然语言、流程图、N-S图、PAD图、伪代码 等方法来描述。 示例:根据学生成绩输出评定结果。 一、算法(algorithm) 二、算法与流程图传统流程图 特点: 直观形象; 使用流线。 缺点: 占面积大,使用流 线任意转移,易出现 “乱麻”现象,造成 编程与阅读程序困难 。 二、算法与流程图N-S结构化流程图 77年美学者I.Nassi和B.Scheiderman提出。 特点 取消流线 不允许流程任意转移,只能从上而下顺序执行 规定三种基本结构的流程图单元,由这些基本结构象搭积木似的 组成各种算法(结构化设计)。 优点 算法清晰,流程不会无规律乱转移。 二、算法与流程图三种基本结构 通常情况下,程序中的语句是以所编写的顺序一句接一句 地执行,这种执行方法称为“顺序执行”。许多C语句能够 让程序员指定不按编写顺序执行下一条执行语句,这种执 行方法称为“控制转移”。 Bohm和Jacopini的研究证实,所有的程序都能够只用三种 控制结构编写,即 顺序结构 选择结构(selection structure) 循环结构(repetition structure) 顺序结构是C语言的基本结构,除非指示转移,否则计算 机自动以语句编写的顺序一句一句地执行C语句。 任何C语言程序都是由七种控制结构(顺序结构、三种选择 结构和三种循环结构)构成的。 二、算法与流程图三种基本结构 顺序结构 A块、B块顺序执行(每块代表一个或一组操作) 二、算法与流程图三种基本结构 选择结构 条件p成立时执行a块( 否则执行b块) uif 选择结构 条件为真时 执行某个指定的操作,条 件为假时跳过该操作(单 路选择) uifelse选择结构 条件 为真时执行某个指定的操 作,为假时执行另一个指 定的操作(双路选择) uswitch选择结构 根据表 达式的值执行众多不同操 作中的某个指定的操作( 多路选择) 二、算法与流程图三种基本结构 循环结构 分当型和直到型两类 。 当型 先判断,只要 条件为真就反复执行A块 ,为假则结束循环。 直到型 先执行A块, 再判断条件是否为真, 为真则继续执行循环体 ,为假则结束循环。 C语言提供了三种循环结 构,即while循环结构, dowhile循环结构和for 循环结构。 2.2.3 PAD图 PAD(Problem Analysis Diagram)另一种被广泛使用的 一种算法的图形表示法。 PAD图可以看成是二维的,它能展现算法的层次结 构。(顺序结构很简单,在此未画图。) 2.3 算法制定范例 例2.4 把从键盘输入的大写字母转换成小写 字母,输出结果。 问题: 1、描述算法 2、根据算法编写C程序 3、运行检查程序是否正确。 演示ex202 2.3 算法制定范例 例2.5 已知实数a和b,计算u的值:u=(r+s)2 。其中,当a main() float a,b,r,s,u; printf(“请输入变量a、b的值:“); scanf(“%f %f“, if(a main() int a,b,c,d; unsigned u,v; a=1;b=3;c=6;d=-7; u=a+b;v=c+d; printf(“u=%d,v=%un“,u,v); 3.3 C语言的三种基本数据类型 3.3.2 实型数据 1、实型常量: (1) 十进制小数形式:由数字和小数点组成; 例如: 3.4 , 4. , .3 (2) 指数形式:“十进制小数”+“ e(或E)”+“十进制数整数 ”。 例如: 12.5e-6 表示12.510-6 。 规范化指数形式: 小数点不能单独出现; 0. .0 . e或E的两边必须有数,且其后面必须为整数; 如: 6E0.2 e5 2、实型变量(分类和值域): 关键字 字节数 取值范围 精度(位) float 4 3.410-38 3.41038 7 double 8 1.710-308 1.710308 15 注意 3.3 C语言的三种基本数据类型 3.3.3字符型数据 1、常量: (1) 用单引号括起来的一个字符;如:A、1、?等。 (2) 用单引号括起来的由反斜杠()引导的转义字符。 字符形式 功能 n 换行 t 横向跳格 b 退格 r 回车 反斜杠字符 单引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进制数表示的ASCII码对应的字符 例如:字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八进制) 字符A可以表示为A、x41、101。 #include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(“a%c b%ctc%ctabcn“,c1,c2,c3); printf(“tb%c %c“,c4,c5); 转义字符的应用 演示ex304 3.3 C语言的三种基本数据类型 2、变量的分类和值域: 分类: char 和 unsigned char; 值域: 每个字符型数据在内存中占一个字节;包括ASCII字符表 中的所有字符(可显示字符和非显示字符)。 3、字符串常量: 是用一对双引号括起来的字符序列。 如:“SHANGHAI”,“FGHijk”,“CHINA”。 字符串常量的存放: 每个字符均以其ASCII码存放,且在最后加一个“空字符” a与“a”的区别。 注意 3.4 基本运算符和表达式 3.4.1 C运算符简介 按操作功能运算符大致可分为算术运算符、关系运算符、逻辑运算符 、按位运算符以及其它运算符如赋值运算符、条件运算符、逗号运算符 等。 表达式是由操作数和运算符组成的序列。 算术运算符 + - * / % 关系运算符 = = = != 逻辑运算符 ! int b=6,c=3; 求解: a*b/c-1.5+ a+(b-5)=? double float long unsigned int char,short float a=2.0; int b =6,c =3; a*b/c -1.5 +a + (b-5) 12.0/3 1 4.0 - 1.5 2.5 + 97(int) 99.5 + 1 100.5(double) 3.4 基本运算符和表达式 3.4.3 赋值运算符和赋值表达式 1、赋值运算符 = 2、赋值表达式:用赋值运算符将变量和表达式连接起来的式 子 一般形式为: 赋值运算符 优先级: 赋值运算符的优先级比算术运算符低。 结合性:自右至左(右结合性)。 求值规则: 先计算“=”右边表达式的值,再将其值赋给左边 的变量。 表达式的值:赋值号左边变量的值即为赋值表达式的值。 例如:(1) x=(y=12)/4 y值为12,x值为3,表达式的值为3 (2) x=y=12/4 y值为3,x值为3,表达式的值为3 (3) x=(y=12/4) y值为3,x值为3,表达式的值为3 (4) (x=y)=12/4 3.4 基本运算符和表达式 3、复合赋值运算符 *=、/=、 %=、 +=、 -=等 注意: 复合运算符是一个运算符,但功能上,是两个运算符 功能的组合。 例如: (1) a+=b 相当于 a=a+b a*=b 相当于 a=a*b a*=b+c 相当于 a=a*(b+c) 而不是 a=a*b+c (2) 设a=12,计算表达式a+=a-=a*12和a+=a- =a*=12的值 3.4 基本运算符和表达式 4赋值时的类型转换 实型数据赋给整型(字符型)变量:去掉小数部分; 如:int f=23.457; 变量f的值为23。 整型(字符型)数据赋给实型变量: 补足有效位。 字符型数据赋给整型变量:将字符数据(8位)放到整型变量的低8 位中,高8位进行“符号扩展”。 一个int、short、long、unsigned型数据赋给一个char 型变量:截取 低8位赋给字符型变量。 带符号的整型数据(int型)赋给long型变量:进行符号扩展。 带符号的long型数据赋给int型变量时,只截取低16位赋给int变量。 unsigned int 型数据赋给long int变量:高位补0。 int 型数据赋给unsigned int变量:内存情况不变,但若是负数,其符 号位也作为数值赋给unsigned 型变量。 3.4 基本运算符和表达式 5、自增与自减运算符 单目运算符,运算对象是变量,不是表达式或者常量 +i,-i:先使变量i的值增1(或减1),再使用变量i的值作为整个 表达式的值来参加其它的运算; i+,i-:先使用变量i的值进行其它运算,再使变量i的值增1(或减 1)。 (1) i+; +i; (2) i=3; j=i+; (3) i=3; j=+i; 等价于 i=i+1; j=i;i+; 所以i的值为4,j的值为3。 i+;j=i; 所以i的值为4,j的值为4。 例如: 3.4 基本运算符和表达式 5、自增与自减运算符 结合性:自右至左。 如: i = 2; j = -i+; 等价于:j=-(i+); 即: j=-i; i+; “+”与”-“是同优先级 所以i的值为3,j的值为-2。 注意 “+”或“-”自增与自减运算符的使用。 设i=3,k=(i+)+(i+)+(i+),k=? 设i=3,k=(i+)+(+i)+(+i), k=? 设i=3,j=4,k=i+j,k=? 设i=3; printf(“%d %d”,i,-i+);结果为? 3.4 基本运算符和表达式 3.4.4 关系运算符和关系表达式 1. 6种关系运算符:= = != 2. 关系表达式:用关系运算符将表达式连接起来的式子 优先级: (= )( = != ) 结合性:自左至右; 表达式的值: 若为真,则结果为1; 若为假,则结果为0。 35 的值为 0; 32 的值为 0; 3+(43 的值为1; a float b=3.5; !a (0) !(a 0) (0) (a 0) (1) 例如 结论: max=ab?a:b a条件赋值 验证:printf(“%d %dn“,-a=b+?a+:b+,b ); 运行结果:4 5 3.4 基本运算符和表达式 5、 结合性:自右至左; y = x10 ? x/10 : x0 ? x: -x; 等价于: y = x10 ? x/10 :(x #include main() int a = 2 , b = 4; float x , y; x = a / 2 + sqrt( b ); /*x=3.0 */ a+ ; /*a=3 */ y = x * a ; /*y=9.0 */ printf(“x=%6.2f, y= %6.2f ”, x, y); 3.5 C基本语句 常用标准库函数求数学函数值: fabs(x) (求x的绝对值)、pow(x,y)(计算x的y次幂)、 sin(x) 、cos(x) 、 exp(x) (求ex ) 、log(x)(求lnx)等。 调用标准库函数要注意以下几点: 在程序中要包含相应的头文件 例如: 要使用标准的输入/输出函数printf()等需包含头文件 #include 要使用数学函数sqrt()等需包含头文件 #include 调用规则: 函数名(参数表) 3.5 C基本语句 3.5.2 复合语句 用一对花括号将多条语句组合在一起,在语法上相当于 一 条语句。 1、一般形式: 内部数据说明; 语句1; 语句n; 注意: (1)在复合语句中说明的变量,是局部变量, 仅在复合语 句中有效。 (2)复合语句的 之后,不能有分号。 3.5 C基本语句 复合语句(程序块) 示例【例3.3】 main( ) int x=1; int x=2; int x=3; printf(“x=%d”, x); printf(“x=%d”, x); printf(“x=%d”, x); 3.6 数据的输出 1格式输出函数 printf( ) 格式: printf( “”,输出项1,输出项2, ,输出项n ); 例:printf( “x=%d,y=%fn” , x , x+3 ); 格式控制 (用双引号括起来,控制输出项 的格式和输出一些提示信息 ) 输出表列 (用逗号分隔的数据组,可选项) 格式控制分为两个部分: u普通字符原样输出(转义字符按表3-4输出) u格式说明%+格式字符 (替换输出) 格式说明的一般形式: % - 0 m.n l(或h) 格式字符 - 左对齐输出 0 数字前的空位填0 m 输出域宽(长度,包括小数点) 如数据的位数小于m,则左端补以空格 如数据的位数大于m,则按实际位数输出 n 输出精度(小数位数) l 或 h 长度修正符 l 长整型及双精度 注:long型的数据宜用%ld,double型宜用%lf h 表示短整型 如 %hd %hx 3.6 数据的输出 格式字符(规定了输出的数据形式): %d 输出十进制整数 %x 以十六进制无符号形式输出整数 %o 以八进制无符号形式输出整数 %u 以无符号十进制数形式输出整数 %f 输出小数形式浮点数(double型用%lf ) %s 输出字符串 %c 输出单字符 3.6 数据的输出 【例1】求运行结果。 main() int a=30; printf(“%d,%o,%x,%u,%c“,a,a,a,a,a); 结果: 30,36,1e,30, 结论: 格式字符与对应输出项类型要一致,否则正确的 运算结果不能得到正确的显示结果。 3.6 数据的输出 【例】若float y=1234.9999;printf(“%d”,y);则输出结果为何? printf函数使用注意事项: 在格式控制字符串中,格式说明与输出项从左到右在类型上 必须一一对应匹配。 在格式控制字符串中,格式说明与输出项的个数应该相同。 如果要输出百分号(%),则在格式控制串中用两个连续的 百分号(%)来表示。 在调用printf函数时,输出项有自增(自减)运算时,计算 输出项的顺序从右至左。 3.6 数据的输出 【例】 .格式输出函数示例程序 #include main() int i = 97; char ch = a; printf (“i=%d,%cn”, i, i ); 输出结果: i =97,a 两个输出项都是变量i , 但以不同的格式输 出,一个是输出的整型数,一个输出的是字符a. 其格式 是由%d与%c控制的. 3.6 数据的输出 字符输出函数 格式: putchar(c) 其中 c为字符型或整型的 常量、变量及其表达式 功能: 每次向屏幕输出一个字 符供显示。 【例】求以下程序运行结果 #include main() char x=a; putchar(x); putchar(b); putchar(x+2); putchar(b+2); 结果:abcd 1格式输入函数scanf() 格式: scanf( “”, 例: scanf( “ %d,%d,%d ” , 3.7 数据的输入 格式控制 (需要输入数据的类型) 地址列表 (简单变量要用 scanf( “ %5.2f “, 3.7 数据的输入 正确语句: printf( “ Input a,b,c=“); scanf( “%d, %d, %d”, scanf( “%5f “, scanf()注意事项 字符输入函数 格式: getchar( ) 功能: 从键盘上读入 一个字符, getchar( )包含在 stdio.h中。 3.7 数据的输入 【例一】 #include main() char a,b; a=getchar(); b=getchar(); printf(“a=%c,b=%cn”,a,b); 运行时,如果 输入:Student 输出结果为 a=S,b=t 例3.13 输入圆的半径,输出圆的周长和面积。 分析: 1.定义实型变量r、l、s用于存放半径、周长、面 积; 2.调用输入函数,输入r: 3.分别利用周长公式和面积公式求出l、s; 4.调用输出函数输出l、s。 3.8 程序举例 例3.10输入圆的半径,输出圆的周长和面积 #include void main() float r,l,s; scanf(“ %f ”, after :x=4,y=3; #include main() int x=3,y=4,t; printf(“before :x=%d,y=%dn”,x,y); t=x; x=y; y=t; printf(“after:x=%d,y=%dn”,x,y); 例:从键盘输入一个小写字母,输出其对应的大写字母 及其相应的ASCII码值。 程序如下: #include main() char ch1,ch2; ch1=getchar(); ch2=ch1-32; printf(“n letter:%c,ASCII=%d“,ch1,ch1); printf(“n letter:%c,ASCII=%d“,ch2,ch2); scanf(“%c”, 运行结果为: a letter:a,ASCII=97 letter:A,ASCII=65 第四章 选择结构程序设计 if语句: 1.单分支if语句 2.双分支if语句 3.多分支if语句 选择结构有两种: switch 语句 按给定条件进行判断,按判断后的不同情况进行不同处理。 l 形式二(一般形式): l 格式:if (expression) statement1 else statement2 l 执行过程: if语句常用的两种形式 形式一(缺省形式) : 格式:if (expression) statement 执行过程: 表达式 语句 非0 0 例:if (xy) printf(“%d”,x); 表达式 语句1语句2 非00 例:if (xy) max=x; else max=y; if语句(条件分支语句) 【例4-1】在两个数中取大数。 main() int num1,num2,max; printf(“n input two numbers: “); scanf(“%d%d“, max=num1; if(maxnum2) printf(“max=%dn“,num1); else printf(“max=%dn“,num2); 如:if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); if(s=2) printf(“hello”); if(s=2,s main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! 说明: 错误信息: misplaced else in function main 如:if(a main() int x,y; printf(“Enter integer x:“); scanf(“%d“, y=x=0?2*x+1:0; printf(“when X=%d,f(x)=%dn”,x,y); 运行:Enter integer x:10 when X=10,f(x)=21 Enter integer x:-1 when X=-1,f(x)=0 例 求分段函数的值 if(x=0) y=2*x+1; else y=0; + main() int x,y; printf(“Enter integer x:“); scanf(“%d“, if(x) y=1; else y=-1; printf(“when X=%d,y=%dn“,x,y); 运行:Enter integer x:10 when X=10,y=1 Enter integer x:0 when X=0,y=-1 例 if(x!=0) = -1 != = ) 0( ) 0(1 x x y 多分支if语句:if-else if 其格式为: if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式n) 语句n else 语句n+1 【例3-3】将学生成绩由百分制转化为等级制。规则如下 : 85分(含)以上为A级。 70分(含)以上且85分以下为B级。 60分(含)以上且70分以下为C级。 60分以下为D级。 main() float score; printf(“n please input a score:“); scanf(“%f“, if(score=85) printf(“the score %f is A n“,score); else if(score=75) printf(“ the score %f is B n“,score); else if(score=60) printf(“the score %f is C n“,score); else printf(“the score %f is D n“,score); 程序运行结果如下: please input a score:89 the score 89.000000 is A if语句嵌套 例: #include “stdio.h” main() int x=4,y=5,z=2,max; max=x; if(zy) if(zx) max=z; else if(yx) max=y; printf(“max=%d”,max); 结果? 缺省 时,else总是和它上面离它最近的 未配对的 if 配对 if() if() if() else. else. else. if else 配对原则: main() int x=100,y=10,a=30,b=20,k1=10,k2=6; if(ab) if(b!=10) if(!k1)x=1; else if(k2) x=10; else x=20; printf(“x =%dn“,x); 运行结果: x=10 例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 实现if else 正确配对 方法:加 实现if else 正确配对方法 注意:书写格式不能 代替程序逻辑 if语句嵌套一般形式: if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) statement1 else if(expr3) statement2 else statement3 内嵌if if (expr1) if (expr2) statement1 else statement2 else if(expr3) statement3 else statement4 内嵌if 内嵌if main() int x,y; printf(”n input x :”); scanf(”%d”,x); if(x main() int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, if(x!=y) if(xy) printf(“XYn“); else printf(“XY Enter integer x,y:12,12 X=Y 例 输入两数并判断其大小关系 switch语句(开关语句) v 一般形式: v 执行过程: switch() case : case : . case : default: 的值与某一case后面的值匹配 时,则执行此case后面的所有的,直至遇 到break语句或switch的结束“”,否则,执行default后 的。 一般是一个整数表达 式(或字符表达式) v 说明: l case后面是常量表达式,且值必须互不相同 l case和常量表达式之间要有空格 l case后可包含多个可执行语句,且不必加 l 常量表达式起语句标号作用,跳出必须用break语句 l 多个case可共用一组执行语句 l switch可嵌套 l 完全可以用if语句或if语句的嵌套来实现。 如: switch(z) case A: case B: case C: printf(“score60n”); break; case F: 如: switch(z) case 1: case 2: case 2: . 如: switch(z) case A: i+; k-; printf(“An”); break; case F: 例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error! 如: int x=3,y=7; switch(z) case x+y: 【例】输入17中的数字,将其转换成相应的星期英文 单词。 main() int num; scanf(”%d”, switch(num) case 1:printf(”Mondayn”); break; case 2:printf(”Tuesdayn”); break; case 3 :printf(”Wednesdayn”); break; case 4:printf(”Tursdayn”); break; case 5:printf(”Fridayn”);break; case 6:printf(”Saturdayn”);break; case 7:printf(”Sundayn”);break; default:printf(”errorn”); 若无break? 【例4-6】编写程序测试是数字、空白、还是其他 字符。 main() int c; switch(c) case 0: c

温馨提示

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

评论

0/150

提交评论