#includestdio.hmain(){floatsalary,re_salary;//re_salary代表实发工资printf(“请输入你的工资:”);scanf(“%f”,&salary);re_salary=salary*0.85;printf(“你的实发工资为%f:”,re_salary);}案例1:假定个人所得税的征收依据如下:按工资收入的15%征收个人所得税。编写一个程序,当从键盘输入职工工资时,计算出实发工资并输出。该如何编写这个程序呢?复习案例2:假定某地个人所得税的起征额为1500元,1500元以下的不征税,1500元以上的部分按15%征税。编写一个程序,当从键盘输入职工工资时,计算出实发工资并输出。要设计选择结构程序,要考虑两个方面的问题:一是在C语言中如何来表示条件二是在C语言中实现选择结构用什么语句在C语言中表示条件,一般用关系表达式或逻辑表达式实现选择结构用if语句或switch语句任务1输入学生成绩,判断其合法性一、问题情景输入一个学生的成绩,判断它是否合法(成绩采用百分制)。分析:程序流程图:本任务知识点:1、关系运算符与关系表达式2、逻辑运算符与逻辑表达式3、if和ifelse语句1)关系运算符C语言提供6种关系运算符:(小于),=(小于或等于),(大于),=(大于或等于),==(等于),!=(不等于)1.关系运算符和关系表达式优先级(1)在关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。(2)与其它种类运算符的优先级关系关系运算符的优先级,低于算术运算符,但高于赋值运算符。注意:在C语言中,“等于”关系运算符是双等号“==”,而不是单等号“=”(赋值运算符)三、相关知识2)关系表达式(1)关系表达式的概念---用关系运算符将两个表达式连接起来,进行关系运算的式子例如,下面的关系表达式都是合法的:ab,a+bc-d,(a=3)=(b=5),'a'='b',(ab)==(bc)(2)关系表达式的值——逻辑值(非“真”即“假”)由于C语言没有逻辑型数据,所以用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”三、相关知识例如,假设num1=3,num2=4,num3=5,则:(1)num1num2的值=(2)(num1num2)!=num3的值=(3)num1num2num3的值=(4)(num1num2)+num3的值=011思考题:任意改变num1或num2的值,会影响整个表达式的值吗?为什么?因为num1num2的值=1,1+5=66再次强调:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。三、相关知识2.逻辑运算符和逻辑表达式关系表达式只能描述单一条件,例如“x=0”。如果需要描述“x=0”、同时“x10”,就要借助于逻辑表达式了(1)C语言提供三种逻辑运算符:&&逻辑与(相当于“同时”)||逻辑或(相当于“或者”)!逻辑非(相当于“否定”)1)逻辑运算及其优先次序三、相关知识逻辑“与”运算符&&表达式1表达式2结果000010100111所有学科及格考勤率达到75%留级NoNo升级YesYes留级NoYes留级NoYes逻辑“或”运算符||无法支付可支付可支付可支付YesNoNoNoNoYesYesYes购物帐单信用卡现金信用卡逻辑“或”运算符||表达式1表达式2结果000011101111无法支付NoNo可支付NoYes可支付NoYes可支付YesYes逻辑“非”运算符!带伞不带伞NoYes天气下雨?逻辑“非”运算符!表达式结果1001天气下雨?真假带伞操作不带伞2)逻辑运算规则总结所有学科及格考勤率达到75%&&天气NOT阴天只有当两个条件都为真时才执行操作只要任何一个条件为真时就执行操作对原条件取反,||!3)逻辑运算符的运算优先级[1]逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)→&&(与)→||(或)[2]与其它种类运算符的优先关系!→算术运算→关系运算→&&→||→赋值运算三、相关知识4)逻辑表达式[1]概念所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。逻辑表达式的值也是一个逻辑值(非“真”即“假”)例如,下面的表达式都是逻辑表达式:(x=0)&&(x10),(x1)||(x5),!(x==0),三、相关知识((year%4==0)&&(year%100!=0))||(year%400==0)如何表达闰年?(能被4整除,但是不能被100整除,或则可以被400整除的年份)例如,假定x=5,则(x=0)&&(x10)的值为(x-1)||(x5)的值为“真”“假”三、相关知识(2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。换句话说:对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数例如,假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式“(x=n1n2)&&(y=n3n4)”后,x的值变为_____,而y的__________[2]说明(1)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。值不变,仍等于1!0三、相关知识3.条件语句三、相关知识if语句的第一种形式if(表达式){语句或者语句组};例如:if(xy){printf(“%d”,x)};例如:if(xy){x++;printf(“%d”,x);}例如:if(xy)x++;printf(“%d”,x);当只有一条语句时,花括号可省略当有多条语句时,花括号不可省略请思考两者等价么?三、相关知识if(表达式){语句1或者语句组1};else{语句2或者语句组2};表达式语句1语句2真(非0)假(0)if语句的第二种形式问题描述:判定给定的年份是否为闰年。提示:闰年的判定规则为:能被4整除但不能被100整除的年份,或能被400整除的年份。#includestdio.hvoidmain(){intyear;printf(\n请输入年份:);scanf(%d,&year);if((year%4==0&&year%100!=0)||(year%400==0))printf(\n%d年是闰年\n,year);elseprintf(\n%d年不是闰年\n,year);}请输入年份:20052005年不是闰年三、相关知识方法二:参考程序:#includestdio.hmain(){floatx;printf(请输入一个学生成绩);scanf(%f,&x);if(x=0&&x=100)printf(输入成绩合法\n);if(x0||x100)printf(输入成绩不合法\n);}方法一:参考程序:#includestdio.hmain(){floatx;printf(请输入一个学生成绩);scanf(%f,&x);if(x=0&&x=100)printf(输入成绩合法);elseprintf(输入成绩不合法);}任务1的解决方案任务1.2选择菜单项【任务内容】在屏幕上显示简易成绩管理信息系统的主菜单。然后根据屏幕显示的菜单项,输入菜单项所对应的序号,在屏幕显示所选菜单项。【功能分析】(1)输入菜单项序号可用scanf函数实现;(2)而根据输入显示相应的内容可以用if语句来实现。任务1.2选择菜单项流程图屏幕输出“输入成绩”功能屏幕输出“存储成绩”功能屏幕输出“显示成绩”功能屏幕输出“计算平均成绩”功能屏幕输出“求最高分”功能屏幕输出“求最低分”功能屏幕输出“计算不及格率”功能屏幕输出“请输入所选菜单项序号:”键盘输入所选菜单项序号menuItemCode12437560其它屏幕输出“退出系统”屏幕输出“输入超出范围!”判断menuItemCode的值图1-4选择菜单项的流程图屏幕上显示菜单项#includestdio.hvoidmain(){intmenuItemCode;/*定义menuItemCode为整型变量*//*显示菜单项*/printf(*************简易成绩管理信息系统*************\n);printf(*1.输入成绩*\n);printf(*2.存储成绩*\n);printf(*3.显示成绩*\n);printf(*4.计算平均成绩*\n);printf(*5.求最高分*\n);printf(*6.求最低分*\n);printf(*7.计算不及格率*\n);printf(*0.退出系统*\n);printf(************************************************\n);printf(\n请输入所选菜单项序号:);/*显示输入提示信息*/scanf(%d,&menuItemCode);/*输入所选菜单项序号*/源程序/*根据菜单项序号显示相应菜单项的功能*/if(menuItemCode==1)printf(输入成绩:把成绩通过计算机键盘输入到计算机内存中\n);if(menuItemCode==2)printf(存储成绩:将成绩存储到计算机外存储器(硬盘)中\n);if(menuItemCode==3)printf(显示成绩:将成绩从硬盘中读出,并显示在屏幕上\n);if(menuItemCode==4)printf(计算平均成绩:将成绩从硬盘中读出,通过求和,计算平均成绩\n);if(menuItemCode==5)printf(求最高分:将成绩从硬盘中读出,求所有成绩中的最大数\n);if(menuItemCode==6)printf(求最低分:将成绩从硬盘中读出,求所有成绩中的最小数\n);if(menuItemCode==7)printf(计算不及格率:通过计算不及格的人数,求不及格人数占总人数的比率\n);if(menuItemCode==0)printf(退出系统\n);if(menuItemCode0||menuItemCode=8)printf(输入超出范围!\n);}源程序问题描述:编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于90分输出“优”;成绩大于等于80分小于90分输出“良”;成绩大于等于60分小于80分输出“中”;成绩小于60分输出“差”。#includestdio.hvoidmain(){floatscore;printf(“\n请输入一个百分制的期末考试成绩:);scanf(%f,&score);if(score=90)printf(\n优);if(score=80&&score90)printf(\n良);if(score=60&&score80)printf(\n中);if(score60)printf(\n差);printf(\n);}三、相关知识if(表达式1){语句1或者语句组1};elseif(表达式2){语句2或者语句组2};elseif(表达式3){语句3或者语句组3};…else{语句n或者语句组n};表达式1表达式2表达式3表达式n语句1语句2语句3语句n语句n+1真真真真假假假假if语句的第三种形式#includestdio.hvoidmain(){floatscore;printf(“\n请输入一个百分制的期末考试成绩:);scanf(%f,&score);if(score=90)printf(\n优);elseif(score=80)printf(\n良);elseif(score=60)printf(\n中);elseprintf(\n差);printf(\n);}总结——if语句的三种