《c语言程序设计 第02章.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计 第02章.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第二章二章 选择结构程序设计选择结构程序设计2.1*关系关系运算符和关系表达式运算符和关系表达式2.2*逻辑逻辑运算符和逻辑表达式运算符和逻辑表达式2.3*if 语句语句2.4 switch 语句语句2.5 程序程序举例举例n关系运算符(共6种)用于比较两个数据的大小,被比较的数据可以是数值型,也可以 是字符型等。2.1 关系运算符和关系表达式关系运算符和关系表达式 (小于)(大于)=(大于等于)=(等于)优先级相同(低)!=(不等于)*优先级别:低于算术运算符,但高于赋值运算符。结合方向:自左而右。n关系表达式用关系运算符连接的两个表达式称为关系表达式。如:3=3+53+2b 其值为?c=
2、a b 其值为?11例2:3=3+53+2543=1 E 2.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n逻辑运算符!逻辑非 高 (单目运算符,自右而左)&逻辑与 (双目运算符,自左而右,|逻辑或 低 优先级低于关系运算符)运算的规则(见书p12-13页)非 运算:非真为假,非假为真。与 运算:两运算量均为真,结果为真,其它均为假。或 运算:两运算量均为假,结果为假,其它均为真。n逻辑表达式例:设a=2,c=a,f=3.0 !(c=a)ac|f=c !(1&!a)!1 0 1|0 1!(1&0)!0 1 说明说明(1)在进行判别时 *所有非零数真 (包括字符型数据,只要其ASCII值非零
3、)0 假(2)逻辑运算结果逻辑真:1 逻辑假:0 如:-2&3 !3 1 0思考思考 设:a=1 c=3 问:执行 a|(c=5)后,表达式的值:?变量c的值:?执行 a&(c=5)后,表达式的值:?变量c的值:?逻辑表达中,并非所有的运算符都被执行:(1)a&b&c 当a为0,则不再判别b和c,结果为0(假)。当a为真(非零),才需判别b的值;当a,b都为真时才判别c的值;(2)a|b|c 当a为真(非零),则不再判别b和c,结果为1。当a为假,才判别b;当a和b 都为假,才判别c。1135思考题:数学关系式:3x10 用C语言的表达式如何描述?1.3=x 10 2.3=x,x10 3.3=
4、x&x=3&x10 310310 x 10 2.3 if 语语句句功能:通过判断所给条件,决定执行给出的两种操作之一。1 1 1 1、ifififif语句语句语句语句的的的的三种形式三种形式三种形式三种形式 形式一形式一:if(表达式)语句例 编程计算a+b的值 main()int a,b;scanf(%d%d,&a,&b);if(b0)b=b;printf(%dn,a+b);其中:表达式可以是关系、逻辑、算术表达式等。语句可以是复合语句。表达式表达式语句语句假(0)真(非0)在键盘上输入:3 -1 形式二形式二:if(表达式)语句1 else 语句2表达式表达式语句语句1假(0)真(非0)语
5、句语句2例 从键盘输入一个整数,判断该数是奇数还是偶数,若是奇数打印该数是奇数,否则打印该数是偶数。main()int a;printf(请输入一个整数:);scanf(%d,&a);if(a%2=0)printf(%d是偶数n,a);else printf(%d是奇数n,a);形式三:形式三:if(表达式1)语句1else if(表达式 2)语句2 else if(表达式3)语句3 else 语句4表达式表达式1表达式表达式2表达式表达式3语句语句1语句语句4语句语句2语句语句3NNNYYY例 根据考试成绩的百分制分数段打印出相应的等级。#includemain()float score;p
6、rintf(input score:);scanf(%f,&score);if(score=90)putchar(A);putchar(n);else if(score=80)putchar(B);putchar(n);else if(score=70)putchar(C);putchar(n);else if(score=60)putchar(D);putchar(n);else putchar(E);putchar(n);if(e1)if(e2)语句1 else 语句2 else if(e3)语句3 else 语句4 2 2 2 2、ifififif语句语句语句语句的嵌套的嵌套的嵌套的嵌套
7、 if(e1)if(e2)语句1 else 语句2 else if(e3)语句3 说明说明说明说明 if与else配对问题,如:if(e1)if(e1)if(e2)if(e2)语句1 语句1else else 语句2 语句2*C语言规定,elseelse总是与上面最近的ifif配对。若要改变这种默认的配对关系,在相应的if语句上加花括号。例 有一函数 y=0 -1 (x0)编一程序,输入一个x值,输出y值。程序1:main()int x,y;scanf(%d,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;printf(x=%d,y=%dn,x,y);switc
8、h(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句n+1 /*可选*/*执行过程1.计算switch后表达式的值,若该值等于某个case后常量表达式的值,则转向该case后的执行语句,并顺序执行其它case 后的语句;2.若表达式的值不等于任何case后面的常量表达式的值,则转向default 后面的语句去执行。如没有default部分,则转向switch的后续语句。2.4 switch语句(语句(“多路选择多路选择”)说明说明说明说明*1.一个switch语句中的case的常量表达式的值必须互不相同。switch(
9、c)case 2*4:s+;case 4+4:t-;(错误)2.case和default的出现顺序是任意的,且case的次序并不要求按常量表达式值的大小顺序排列。说明说明说明说明3.case后“常量表达式”只起语句标号的作用,并不是在此处进行条件判断。在执行完一个case后面的语句后,流程控制转移到下一个case继续执行。int n,x,y;scanf(“%d”,&n);switch(n)case 1:x=1;y=x+1;case 2:x=2;y=x+2;case 3:x=3;y=x+3;因此,在执行完一个case分支后,要想跳出switch语句,转到switch语句的后续语句去执行,应在下一
10、个case开始前,插入一个break语句。break;break;若输入 1说明说明说明说明4.多个case的后面可以共用一组执行语句。switch(n)case 1:case 2:case 3:x=10;break;5.switch语句允许嵌套。switch()switch()例 根据考试成绩的百分制分数段打印出相应的等级。main()float score;int n;printf(input score:);scanf(%f,&score);n=(int)(score/10);switch(n)case 10:case 9:printf(”A”);break;case 8:printf(
11、”B”);break;case 7:printf(”C”);break;case 6:printf(”D”);break;default :printf(”%c”,E);#include main()float score;printf(input score:);scanf(%f,&score);if(score=90)putchar(A);else if(score=80)putchar(B);else if(score=70)putchar(C);else if(score=60)putchar(D);else putchar(E);思考一下这条语句的作用?例 根据考试成绩的等级打印出百
12、分制分数段。main()char grade;printf(input AE:);scanf(%c,&grade);switch(grade)case A:printf(90100n);break;case B:printf(8089n);break;case C:printf(7079n);break;case D:printf(6069n);break;case E:printf(60n);break;default :printf(errorn);程序举例程序举例程序举例程序举例例 通过条件语句嵌套实现在直角坐标系中有一个以原点为中心的单位圆,今任给一点(x,y),试判断该点是在单位圆内
13、、单位圆上,还是单位圆外?若在单位圆外,那么是在x轴的上方,还是在x轴的下方,还是在x轴上?#include “math.h”main()float x,y,z;scanf(%f,%f,&x,&y);z=sqrt(x*x+y*y);printf(%.2f,%.2f,x,y);if(z=0)if(y0)printf(在单位圆外,x轴上方n);else printf(在单位圆外,x轴上n);else printf(在单位圆外,x轴下方n);main()int c;scanf(%d,&c);switch(c)case 1:printf(%d,c);case 2:printf(%d,c);default:printf(%d,c);如果通过键盘输入分别输入:0,1,2时,最后的输出结果分别为?222 111100