《c语言4学习教程.pptx》由会员分享,可在线阅读,更多相关《c语言4学习教程.pptx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、回顾:1、输入的命令是什么?2、输出的命令是什么?3、输出一个如下结果:例:已知a=3.1415927;保留3位小数,前面带2空格的。printf(“%7.3f”,a);4、scanf在输入数据的时候必须用间隔符(空格、回车,Tab)隔开第1页/共45页目标熟练使用关系运算符熟练使用逻辑运算符熟练使用if 结构熟练使用嵌套 if 结构熟练使用 switch 结构理解条件运算符的用法第2页/共45页关系运算和逻辑运算一、C语言中的逻辑值语言中规定:(1)用0、1 表示逻辑假和真值;语言没有专门的逻辑值,而是用来表示“真”,用表示“假”。(2)任何基本类型的值都可作为逻辑值使用。所有非0的值被当作
2、“真”使用,而0值被当作“假”使用二、关系运算符和关系表达式 语言的关系运算符共种:(大于)=(大于等于)(小于)(num3 num4)num=40;num/10!=2gender =m真假=如果 gender =f如果 gender =m第6页/共45页三、逻辑运算符和逻辑表达式1)C语言提供了三种逻辑运算符,分别是:&逻辑与|逻辑或 !逻辑非结合性:自左至右优先级次序:!高于&高于|逻辑表达式的值:0,1小总结:算术运算符+-*/%(第二章)赋值运算符=+=-+*=/=%=(第二章)关系运算符 =!=逻辑运算符!&|优先级(高到低)!、算术运算符、关系运算符、&、|、赋值运算符第7页/共4
3、5页逻辑运算符 运算运算运算符运算符表达式表达式逻辑“与”&operand1&operand2逻辑“或”|operand1|operand2逻辑“非”!operand1 逻辑运算符用于连接一个或多个条件,判断这些条件是否成立逻辑运算符的类型为:第8页/共45页 逻辑“与”运算符&所有学科及格考勤率达到 75%留级留级留级升级YesNoNoNoNoYesYesYes第9页/共45页逻辑“与”运算符&表达式表达式 1 1表达式表达式 2 2结果结果000010100111所有学科及格考勤率达到 75%留级留级NoNo升级YesYes留级NoYes留级留级NoYes第10页/共45页例如:已知a=2
4、;b=4;c=4;d=6(ab)&(cb)&(cd)(ad)(ab)&(cd)第11页/共45页逻辑“或”运算符|无法支付可支付可支付可支付YesNoNoNoNoYesYesYes购物帐单信用卡第12页/共45页现金信用卡逻辑“或”运算符|表达式 1表达式 2结果000011101111无法支付NoNo可支付NoYes可支付NoYes可支付YesYes第13页/共45页例如:已知a=2;b=4;c=4;d=6(ab)|(cb)|(cd)(ad)(ab)|(cd)第14页/共45页逻辑“非”运算符!表达式结果1001天气 NOT 阴天真真假带伞操作不带伞第15页/共45页逻辑“非”运算符!(真)
5、的值为0!(假)的值为1!(非零)的值0!(零)的值为1例如:a=2;b=4;c=0 !(ab)!(ab)!(a)!(0)第16页/共45页逻辑运算符总结所有学科所有学科及格及格考勤率达到考勤率达到 75%&只有当两个两个条件都为真真时结果才为真只要任何任何一个条件为真真时结果就为真对原条件取反取反,即:如果原条件为假时结果就为真|!优先次序:!(非)&(与)|(或)逻辑运算符中的&和|低于关系运算符,!高于算术运算符第17页/共45页一、数学上0 x0&xc&b=c2、a|b+c&b-c3、!(ab)&c|1 答案:1、0 2、1 3、1已知a=1,b=0;则y=a|b+;第19页/共45页
6、条件结构条件结构就是需要根据条件进行判断,然后执行不同的操作一、简单 if 语句的一般形式为:if()说明:必须是一条语句,若是 多条,用花括号括起来 如果条件为真,if 语句执行一个语句或一组语句;如果条件为假,则执行 if 语句后面的语句(如果有)。第20页/共45页二、if-else 语句的一般形式为:(if-else必须成对出现)if()else 如果条件为真,执行 if 后面的一个语句或一组语句;如果条件为假,则执行 else 后面的语句。第21页/共45页三、If语句的执行过程首先判定if后面圆括号中表达式的值。如果为真,则执行其后的if子句,然后执行if语句后的下一条语句;若果表
7、达式的值为假,则跳过if子句,直接执行if语句的下一条语句第22页/共45页例题:输入两个数,分别放入x和y中,若两数不相等,则输出大数;若相等,则输出字符串x=y和x的值#include void main()int x,y;printf(“Enter x&y:n”);scanf(“%d%d,&x,&y);printf(“x,y:%d%dn”,x,y);if(xy)printf(“x=%dn”,x);if(yx)printf(“y=%dn”,y);if(x=y)printf(“x=y%d:n,x);第23页/共45页例 main()int a,b,c,t;printf(“input a,b,
8、c”):scanf(“%d%d%d”,&a,&b,&c);printf(“a=%d,b=%d,c=%dn”,a,b,c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%d,%d,%dn”,a,b,c);例 输入两个值给变量a、b,然后输出比较大的数 main()int a,b,max;scanf(“%d%d”,&a,&b);max=ab?a:b;printf(“max=%d,max);第24页/共45页#include void main()int num;printf(n请输入一个整数:);scanf(%d,&n
9、um);if(num%2)=0)printf(%d 是一个偶数。n,num);elseprintf(%d 是一个奇数。n,num);if-else语句的示例内存内存num57请输入一个整数:5757 是一个奇数。第25页/共45页问题描述:判定给定的年份是否为闰年。提示:闰年的判定规则为:能被 4 整除但不能被 100 整除的年份,或能被 400 整除的年份。#include void main()int year;printf(n 请输入年份:);scanf(%d,&year);if(year%4=0&year%100!=0)|(year%400=0)printf(n%d 年是闰年 n,ye
10、ar);else printf(n%d 年不是闰年 n,year);综合示例1请输入年份:20052005 年不是闰年第26页/共45页由于由于if和和else子句中可以是任意合法的子句中可以是任意合法的C语句,因此自然也可语句,因此自然也可以是以是if语句,称此为嵌套的语句,称此为嵌套的if语句。语句。嵌套的if语句子句中嵌套具有else子句的if语句 if(表达式1)if(表达式2)语句1 else 语句2 else 语句32.在if子句中嵌套不含else子句的if语句 if(表达式1)if(表达式2)语句1else 语句2第27页/共45页if(x 0)if(y 1)z=1;else/*
11、这个 else 部分属于哪个 if?*/z=2;C语言规定,每个 else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。提倡使用大括号括起来以避免看起来有二义性。第28页/共45页3.在else子句中嵌套if语句 if(表达式1)语句1 else if(表达式2)语句2 else 语句3 或写成 if(表达式1)语句1 else if(表达式2)语句2 else 语句3第29页/共45页例题4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。程序如下:#includemain()int g;pr
12、intf(“Enter g:”);scanf(“%d”,&g);printf(“g=%d:”,g);if(g=90)printf(“An”);else if(g=80)printf(“Bn”);else if(g=70)printf(“Cn”);else if(g=60)printf(“Dn”);else printf(“En”);第30页/共45页#includemain()int g;printf(Enter g:);scanf(%d,&g);printf(g=%d:,g);if(g=90)printf(An);if(g=80)printf(Bn);if(9=70)printf(Cn);i
13、f(g=60)printf(Dn);if(g100)value=50;else value=100;value=num 100?50:100;(1)(0)条件表达式使用使用“if-else”的等同代码的等同代码 假设 num=200 value=num 100;?50:100200value=50第33页/共45页条件运算符示例问题描述:个人所得税收取规定:工资大于1000元的部分将扣除5的个人所得税。小于1000元的部分不扣除个人所得税。要求用户输入基本工资,计算税后工资。#include void main()double sal;double rate;printf(n 请输入基本工资:
14、);scanf(%lf,&sal);rate=(sal=1000)?0:0.05;sal=sal-(sal-1000)*rate;printf(n 税后工资为:%7.2f n,sal);请输入基本工资:1500税后工资为:第34页/共45页运用一次if或if-else,只有两种选择。若是多重选择,需要多次嵌套,程序复杂,此时引入switch语句。例题#includemain()int g;printf(“Enter g:”);scanf(“%d”,&g);printf(“g=%d:”,g);if(g=90)printf(“An”);else if(g=80)printf(“Bn”);else
15、if(g=70)printf(“Cn”);else if(g=60)printf(“Dn”);else printf(“En”);第35页/共45页switch 结构 3-1printf(“这是迈克尔,身高 180cm,加利福尼亚第 12 大街”);printf(“这是丹尼尔,身高 193cm,现居住地不明,1998 年 12 月 12 日在佛罗里达被捕”);printf(“这是吉姆,身高 175cm,墨西哥州海鸥路弗罗拉公寓,于 2003 年 11 月 1 日在新泽西因抢银行被捕”);printf(“未发现匹配项。对不起!”);停止搜索停止搜索停止搜索停止搜索警察记录嫌疑犯照片不是这是吉姆,
16、身高 175cm,墨西哥州海鸥路弗罗拉公寓,于 2003 年 11 月 1 日在新泽西因抢银行被捕不是是第36页/共45页switch-case 语句是多路判断语句switch 语句计算条件表达式并对照多个常数值进行检查switch 结构 3-2switch(表达式)case 常量 1:语句;break;case 常量 2:语句;break;default:语句;计算表达式的值如果等于常量1 如果等于常量2 如果没有找到匹配的值 第37页/共45页switch 结构 3-3在使用switch结构时应注意以下几点:在case后的各常量表达式的值不能相同,否则会出现错误;case和常量表达式之间一
17、定要有空格。例如case 0:各case和default子句的先后顺序可以变动,而不会影响程序执行结果;default子句可以省略;遇到break则跳出整个循环,没有继续往下执行。第38页/共45页1、用switch语句改写例题4.5程序如下:(演示:没有break)#includemain()int g;printf(“Enter g:”);scanf(“%d”,&g);printf(“g=%d:”,g);switch(g/10)case 10:case 9:printf(“An”);case 8:printf(“Bn”);case 7:printf(“Cn”);case 6:printf(
18、“Dn”);default:printf(“En”);第39页/共45页2、用switch语句改写例题程序如下:(演示:带有break)#includemain()int g;printf(“Enter g:”);scanf(“%d”,&g);printf(“g=%d:”,g);switch(g/10)case10:case9:printf(“An”);break;case8:printf(“Bn”);break;case7:printf(“Cn”);break;case6:printf(“Dn”);break;default:printf(“En”);第40页/共45页switch 结构示例
19、问题描述:要求用户输入一个字符值并检查它是否为元音字母。char in_char;printf(n 请输入一个小写字母:);scanf(%c,&in_char);switch(in_char)case a:printf(n 您输入的是元音字母 an);break;case e:printf(n 您输入的是元音字母 en);break;case i:printf(n 您输入的是元音字母 in);break;case o:printf(n 您输入的是元音字母 on);break;case u:printf(n 您输入的是元音字母 un);break;default:printf(n 您输入的不是元
20、音字母 n);内存内存in_chare请输入一个小写字母:e您输入的是元音字母 e第41页/共45页 多重if结构和switch结构都可以用来实现多路分支多重if结构用来实现两路、三路分支比较方便,而switch结构实现三路以上分支比较方便在使用switch结构时,应注意分支条件要求是整型表达式,而且case语句后面必须是常量表达式有些问题只能使用多重if结构来实现,例如要判断一个值是否处在某个区间的情况比较多重 if 和 switch 结构第42页/共45页总 结多重if结构就是在主if块的else部分中还包含其他if块嵌套if结构是在主if块中还包含另一个if 语句C语言规定,嵌套if结构
21、中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作条件运算符是 ifelse 语句的另一种表现形式第43页/共45页语句标号和goto语句一、语句标号 在C语言中,标号就是任意合法的标识符,当在标识符后面加一个冒号,就构成了一个语句标号。例如:flag:或者stop:标号的作用,用于goto语句的转向目标;例如:goto stop;stop:printf(“ENDn”);(C语言中任何语句前都可以加上语句标号)二、goto语句 goto语句称为无条件转向语句,表示如下:goto 语句标号;(对于初学者尽量不用)第44页/共45页感谢您的观看!第45页/共45页