1、c语言3选择结构流程及应用 第3章 选择结构流程及应用 序号: 学习内容与目标:在程序中使用选择结构 选择结构判定条件的构成 单分支与双分支选择结构程序设计 多分支选择结构程序设计知识小结知识点知识细节或者格式示例关系运算关系运算符:, =, , 0Y != 0A + 1 = 0逻辑运算逻辑运算符:!, &, |逻辑表达式:双操作数表达式格式:表达式1 逻辑运算符 表达式2单操作数表达式格式:逻辑运算符 表达式逻辑表达式的值:同关系表达式(Y % 4 = 0) & (y % 100 != 0)!(I / 2 = 0)If语句简单if语句格式:If(条件) 语句;if(x % 2 =0) pri
2、ntf(“n x is even”);if else语句格式:if(条件) 语句1;else 语句2;if(x % 2 =0) printf(“n x is even”);else printf(“n x is odd”);嵌套if else语句格式:if(条件1) 语句1; else if(条件2) 语句2; : else if(条件n -1) 语句n-1; else 语句n;条件运算条件运算符:? :条件表达式: 表达式1 ? 表达式2 : 表达式3y = x 0 ? x : -x;Switch语句Switch语句格式:switch(表达式) case 常量表达式1:语句序列1; case
3、 常量表达式2:语句序列2; case 常量表达式n:语句序列n; default:语句序列n+1; 例题P301/* 问题3.1: 关系运算符和关系表达式 知识点说明: 1)关系运算符; 2)用途:用于比较两个操作数之间的关系; 3)关系运算:比较两个操作数,如果符合关系运算符指定的关系,则关系运算结果为1,否则为0 4)关系运算的取值:0或者1,0即逻辑“假”,1即逻辑“真” */ #include stdio.h void main() int iX=3,iY=4,iZ=5; /*变量定义*/ printf(iX=%d,iY=%d,iZ=%dn,iX,iY,iZ); printf(iXi
4、Y is %dn,iXiY); /*关系运算与关系表达式*/ printf(iXiY is %dn,iXiY); printf(iXiY is %dn,iXiY); /*复杂的关系运算*/ printf(iX=iY is %dn,iX=iY); printf(iX+iY)=iZ is %dn,(iX+iY)=iZ); /*含有算术表达式的关系运算*/getch(); P302 /* 问题3.2: 逻辑运算符和逻辑表达式 知识点说明: 1)逻辑运算符; 2)用途:对操作数(操作对象)作逻辑“与”、“或”、“非”运算; 3)真值表; 4)逻辑表达式:用逻辑运算符连接操作对象的表达式 5)复合运算:
5、先算算术表达式,再算关系表达式,最后算逻辑表达式 */ #include stdio.h void main() int iX=3,iY=4; printf(iX=%d,iY=%dn,iX,iY); printf(iX=-5 is %dn,iX=-5); /*逻辑运算与复合表达式*/ printf(iXiY|iX+iY=8 is %dn,iXiY|iX+iY=8); printf(A&iX-iY0 is %dn,A&iX-iY0); /*含字符常量的复合表达式*/ printf(!2.56 is %dn,!2.56); /*逻辑非运算*/ printf(!99&iXiY|iX*iY=12 is
6、 %dn,!99&iXiY&(iX=10) is %dn,iXiY&(iX=10); /*&运算前的表达式为0,则整个表达式为0*/ printf(iX=%dn,iX); printf(iXiY|(iY=11) is %dn,iXiY|(iY=11); /*|运算前的表达式为非0,则整个表达式为非0*/ printf(iY=%dn,iY); getch(); P304/* 问题3.4: 数的绝对值 知识点说明: 1)简单if语句:if(条件表达式)语句 2)条件表达式的构成:关系表达式、逻辑表达式、复合表达式 3)if语句的作用:有条件地执行语句,或者有选择地执行语句 */ #include
7、stdio.h void main() int iX,iY; printf(Please input an integer:); scanf(%d,&iX); /*输入一个整数*/ iY=iX; if(iX0) /*单分支的选择结构,根据条件(iXiY?iX:iY; /*用条件运算符?:来实现双分支选择结构*/ printf(iMax=%d,iMax); getch(); P307* 问题3.7: 分段函数 知识点说明: 1)多分支选择结构的格式 2)多分支选择结构的执行过程: - 遇到第1个条件为真时执行相应的语句, 然后跳到if之后的下一个语句执行 - 如果没有一个条件为真,则执行最后一个
8、else之后的语句 */ #include stdio.h void main() int iX,iY; printf(Please input an integers:); scanf(%d,&iX); if(iX5) /*多分支选择结构的实现*/ iY=iX+3; else if(iX=90&fScore=80&fScore=70&fScore=60&fScore0&fScore=0 & fScore=100) iTemp=fScore/10; switch(iTemp) case 0: /*0-59分,E*/ case 1: case 2: case 3: case 4: case 5:
9、 printf(E);break; case 6: printf(D);break; case 7: printf(C);break; case 8: printf(B);break; case 9: /*90-100分,A*/ case 10: printf(A);break; default: printf(Invalid Input!); getch(); P311/* 问题3.11: 对一个随机数的判断 知识点说明: 1)随机数产生:涉及的函数 - srand函数 为随机函数初始化,头文件为stdlib.h - time函数 时间函数,产生系统时间,头文件为time.h - rand函
10、数 随机函数,产生随机的正整数,头文件为stdlib.h 2)srand(unsigned)time(NULL):以系统时钟作为随机数初始化的随机种子; 3)rand():无需参数,直接产生随机数 */ #include stdio.h #include stdlib.h #include time.h void main() int a; srand( (unsigned)time( NULL ) ); a=rand(); if(a%2=0) printf(n%d: EVEN,a); else printf(n%d: ODD,a); getch(); P312/* 问题3.12: 产生100
11、个两位随机整数 */ #include stdio.h #include stdlib.h #include time.h void main() int a,i; srand( (unsigned)time( NULL ) ); for(i=0;i0时,方程有两个不等的实根;a 当b2-4ac=0时,方程有两个相等的实根;a 当b2-4ac0时,方程有一对共轭复根; 注:编程时1)要对输入的参数a判断,如果a=0时,显示“Invalid a!”,然后结束程序;2)要对方程的根的判断式进行判断,并进行相应的计算,给出相应的显示结果。任务6(P305):判断一个年份是否闰年。答案/* p301
12、*/ #include stdio.h void main() int X,Y; printf(Please input an integer:); scanf(%d,&X); if(Xb&bc) /*abc是错误的表达方式*/ Max=a; else if(bc&ba) Max=b; else Max=c; printf(Maxn%d,Max); getch(); /* p303 */ #include stdio.h void main() int x; printf(Please enter a number:); scanf(%d,&x); if(x%2=0) printf(nEVEN
13、); else printf(nODD); getch(); /* p304 */ #include stdio.h #include math.h void main() int a,b,c; float x1,x2; printf(please enter 3 numbers); scanf(%d%d%d,&a,&b,&c); if(a=0) printf(Invalid a!); else if(b*b-4*a*c0) x1=(-b+sqrt(b*b-4*a*c)/(2*a); x2=(-b-sqrt(b*b-4*a*c)/(2*a); printf( %f%f,x1,x2); else
14、 if(b*b-4*a*c=0) x2=x1=(-b+sqrt(b*b-4*a*c)/(2*a); printf( %f%f,x1,x2); else printf(No real root exist); getch(); /* p305 */ #include stdio.h#include conio.hvoid main() int y; printf(please enter a year:); scanf(%d,&y); if(y%4=0&y%100!=0|400) printf(nthe year is runnian); else printf(nthe year is not pinnian); getch();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1