C语言程序设计第5讲(2010级).ppt_第1页
C语言程序设计第5讲(2010级).ppt_第2页
C语言程序设计第5讲(2010级).ppt_第3页
C语言程序设计第5讲(2010级).ppt_第4页
C语言程序设计第5讲(2010级).ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

算法 if语句 switch语句 条件运算符,第五讲,Begin:,第四章 选择结构程序设计,4.1 算法,4.1.1 算法的概念,程序=数据+算法,程序的主要工作就是处理数据,数据:在程序中要指定的数据的类型和数据的组织形式,也叫数据结构,例:两个变量的值的交换,算法解决某一问题所采取的方法和步骤。,4.1 算法,解决某一问题的算法可以有多个,4.1 算法,数据结构和算法是紧密相关的,也是很重要的,可以反映人的智慧,例: 多个数据中找到某个数的算法,好的方法查找效率可以提高很多,4.1.2 算法的表示,【例1-1】:输入3个整数,输出其中最大的数。, 自然语言 伪代码 流程图,4.1 算法,1.用自然语言表示算法 用人们日常使用的语言和语序来表示算法。,【例1-1】:输入3个整数,输出其中最大的数。,4.1 算法,2.用伪代码表示算法 一种接近于程序设计语言,但又不受语言语法约束的算法表示法。,4.1 算法,3.用流程图表示算法 用一些图框和方向线表示算法的图形表示法。,常用流程图符号及含义如下:,4.1 算法,用N-S流程图表示算法 用一些基本结构图框来表示算法的图形表示法。,上例用N-S流程图表示:,4.1 算法,4.3 用if语句实现选择结构,4.3.1 if语句的三种形式,1, if(表达式) 语句 单分支结构: if ( ) 语句A ;,语句执行过程: 先判断条件(表达式),若条件成立,就执行语句A;否则,直接执行if后面的语句。该结构的流程图如右图所示。,4.3 用if语句实现选择结构,例:if (grade =60) printf(“Pass n”);,注意:单分支结构只有在条件为真时,才执行给定的操作,如果条件为假,则不执行任何操作。,1)条件均为逻辑表达式或关系表达式,也可以是任意的数值类型。,例:if (3) printf(“O. K.n“);,4.3 用if语句实现选择结构,说明:,if (q) printf(“%dn“,a);,if (3x & x=5) printf(“3x=5n“ );,2)语句可以是单语句,也可以是复合语句。 注意:在复合语句 外不需再加分号 。,4.3 用if语句实现选择结构,例:if (ab) t=a; a=b; b=t; ,例:键盘输入一个整数,输出该数的绝对值。,main () int shu; printf(“请输入一个整数%d:n“); scanf(“%d“, shu ); if ( shu 0 ) shu = -shu; printf(“该数的绝对值为: %d。n“, shu ); ,4.1 用if语句实现选择结构,2,双分支结构 : if ( ) 语句A ; else 语句B ;,4.3 用if语句实现选择结构,语句执行过程: 先判断条件(表达式),若条件成立,就执行语句A;否则,执行语句B。即一定会执行语句A和语句B中的一句,且只能执行其中的一句。该结构的流程图如右图所示。,注意: else子句是if语句的一部分,它不能作为语句单独使用,必须与if配对使用。,4.3 用if语句实现选择结构,例:if (grade =60) printf(“Pass n”); else printf(“Failure”);,例 : 计算,void main ( ) float x, y; printf(“送数%f: n“); scanf(“%f“, ,4.3 用if语句实现选择结构,例: 任意输入两个不相等的数,将大数放入X, 小数放入Y中。,算法: 1.定义变量 2.给变量赋初值 3.比较x、y, 若xy, 交换两数 4.输出x、y,分析:两数比较,要么xy, 直接输出;要么xy,两数交换。,4.3 用if语句实现选择结构,4.3 用if语句实现选择结构,程序: main( ) int x, y, t; printf(“n请输入两个整数%d%d:“); scanf(“%d%d“, ,3,多分支结构 if () 语句1 ; else if () 语句2 ; else if ()语句n-1 ; else 语句n ;,4.3 用if语句实现选择结构,语句执行过程: 先判断条件1(表达式1),若条件1成立,就执行语句1后,退出该if结构;否则,再判断条件2(表达式2),若条件2成立,则执行语句2后,退出该if结构;否则,再判断条件3(表达式3),若条件3成立,则执行语句3后,退出该if结构;。,例 : 计算,4.3 用if语句实现选择结构,程序: #include void main() float x,y; printf(“送数%f :n“); scanf(“%f“, ,在if语句中又包含有一个或多个if语句称为if语句的嵌套。 请说出以下两段程序的功能:,例1:if ( a0 ) if ( b0 ) printf(“%d,%dn“, a, b);,如果a,b都是正数,则输出a,b,4.3 用if语句实现选择结构,4.3.2 if语句的嵌套,例2:if ( a0 ) if ( b0 ) printf(“%d,%dn“, a, b); else printf(“%dn“, a); else if ( b0 ) printf(“%dn“, b); else printf(“n“);,输出a,b中的正数,4.3 用if语句实现选择结构,4.3.2 if语句的嵌套,为避免错误可用 将内嵌结构括起来以确定if与else的配对关系属内嵌范围。,说明: 嵌套不允许交叉。,else与if必须成对出现,且else总是与最近的一个未配对的if配对。,4.3用if语句实现选择结构,例 :读程序。,main( ) int a=2, b=1, c=2; if (a) if ( b0 ) c=0; else c+ ; printf(“%dn“,c); ,程序运行结果: 3,4.3 用if语句实现选择结构,例 :读程序。,main( ) int a=2, b=1, c=2; if (a) if (b0) c=0; else c+ ; printf(“%dn“,c); ,程序运行结果: 2,4.3 用if语句实现选择结构,例:任意输入三个整数,找出其中最大的整数。,4.3 用if语句实现选择结构,程序 :,main( ) int a, b, c, max ; printf (”请输入三个整数:%d%d%dn”); scanf( “%d%d%d“, ,4.3 用if语句实现选择结构,例:用条件运算符表达3个数a , b , c中的大数。,思路1:先求两个数b,c中的大数:bc?b:c,再求两个数a,(b,c)中的大数:a(bc?b:c)?a:(bc?b:c),思路2:ab?是,则让a与c比较;否,则让b与c比较,ab? (a c ? a : c) : ( b c ? b : c),4.3.3 条件运算符和条件表达式,switch语句的格式:,switch(表达式) case :语句1;break; case :语句2;break; case :语句n-1;break; default :语句n ; break; ,4.4 用switch语句实现多分支选择结构,说明: 表达式:可以是整型表达式,或字符表达式。,4.4 用switch语句实现多分支选择结构,case 常量表达式():case也是关键字。 常量表达式应与switch后的表达式类型相同,且各常量表达式的值不允许相同。,说明: 语句:可省略,或为单语句,或为复合语句。 default:关键字,可省略,也可出现在switch语句体内的任何位置。,4.4 用switch语句实现多分支选择结构,break语句,格式: break; 功能:跳出当前语句的执行,执行当前语句的下一条语句。 用法:只能用在switch语句和循环体中。,4.4 用switch语句实现多分支选择结构,switch语句执行过程:,执行: 若表达式 = 常量表达式, 则执行语句; 若表达式 != 常量表达式, 则执行default开始的(语句);,计算:计算表达式的值。,判断:表达式的值与常量表达式的值是否相等。,4.4 用switch语句实现多分支选择结构,注意:,表达式及常数表达式(由常数、符号常量组成的表达式)必须为整型,故它们也可用字符表达式。,4.4 用switch语句实现多分支选择结构,例: 输入一个02的数并输出,否则输入错误。,main( ) int x; printf(“请输入一个02的整数:“ ); scanf(“%d“, ,程序运行结果: 请输入一个02的整数:1 输入1。 输入2。 输入错误!,4.4 用switch语句实现多分支选择结构,4.4 用switch语句实现多分支选择结构,例:x=3; switch ( x ) case 0 :printf(“Ture!”) case 1 : printf(“False“); 该switch语句不执行任何操作,多个case可以共同使用一个语句序列,4.4 用switch语句实现多分支选择结构,例:switch(n) case 1 : case 3 : case 5 : case 7 : case 9 :printf(”奇数 n”); break ; case 0 : case 2 : case 4 : case 6 : case 8 :printf(”偶数 n”); break ; 该switch语句中,当n=1,3,5,7,9时,输出“奇数”; 当n=0,2,4,6,8时,输出“偶数”;,例: 编程,计算 y 的值。,4.4 用switch语句实现多分支选择结构,#include “math.h“ void main ( ) float x , y ; int m ; printf( “请输入 05 之间的数%fn“ ); scanf( “%f“, ,4.4 用switch语句实现多分支选择结构,程序 :,例:任意输入两个数,和一个运算符(加、减乘、除),要求输出它们的运算结果。,4.4 用switch语句实现多分支选择结构,程序如下: #include “stdio.h“ void main ( ) float shu1, shu2, jieg; char yunsf; printf(”请输入运算符 + - * /:n”); yunsf = getchar ( ); printf(”请输入两个数 %f%fn”); scanf(“%f%f“, ,switch ( yunsf ) case + : jieg = shu1 + shu2 ; break; case - : jieg = shu1 - shu2 ; break; case * : jieg = shu1 * shu2 ; break; case / : jieg = shu1 / shu2 ; break; default : printf( “ 运算符输入错误 !n“ ); printf(“jieg = %.2f n“, jieg ); ,例编程:,运输公司对用户计算运费,路程(S)越远,每公里运费越低。标准如下: S 250 km 没有折扣 250 S 500 km 2折扣 500 S 1000 km 5折扣 1000 S 2000 km 8折扣 2000 S 3000 km 10折扣 3000 S 15折扣 设每公里每吨货物的基本运费为p,货物重量为w,距离为s,折扣为d,则总的运费f为: f=p*w*s*(l-d) 最直接的方法是if else语句,分析:,折扣的“变化点”是250的倍数,因此可令c=S/250,表示250的倍数。当C1时,说明S 250,没有折扣;当1C2时,说明250S500,折扣d=2;当2C4时,说明500S1000,折扣d=5;当4C8时,说明500S1000,折扣d=8;当8C12时,说明500S1000,折扣d=10;当12C时,说明3000S,折扣d=15%,编程:,main() int c,s; float p,w,d,f; scanf(”%f%f%d”,&p,&w,&d); if (s=3000) c=12; else c=s/250; switch (c) case 0:d=0;break; case 1:d=2;break;,编程: /* continue */,case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; cas

温馨提示

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

评论

0/150

提交评论