版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言,讲授人: 蔡娟,北京林业大学信息学院,C语言程序设计,C语言程序设计,C语言程序设计,复习,变量赋初值,#include void main() int a=1,b; b=a+1; char c1= u; printf(%d,%c,b,c1); ,错误,#include main() int a,b,c; scanf(%d%d%d, ,合法: (1)345 (2) 3 45 (3) 3(tab键)4 5,非法: (1) 3,4,5 (2) 3:4:5,(2003年4月二级C语言水平考试试题选择题第19题)有以下程序段 int m=0, n=0; char c=a; scanf(%d%c
2、%d, 若从键盘上输入:10A10, 则输出结果是_。 (A) 10,A,10 (B) 10,a,10 (C) 10,a,0 (D) 10,A,0,(2002年9月二级C语言水平考试试题选择题第17题)已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下语句中正确的输入语句是_。 (A) scanf(“%2d%2d%2d”, ,问题与讨论,2. 改错与分析 /*引用函数getchar()必须添加如下一行*/ #include main() char c; printf(Please input a character: ); c=getchar()
3、;/*赋值语句弄反位置*/ printf(Your character is %c,c); ,3. 改错并修改程序使其更人性化 #include stdio.h main() char c; printf(getchar(); ,#include main() char c; printf(please input a character:n); c=getchar(); printf(the character is:%cn,c); ,参考答案:,本次课程所讲内容,条件判断 关系运算符与关系表达式 逻辑运算符与逻辑表达式 使用if语句实现选择结构程序设计 if语句的形式、条件运算符及其应用和
4、if语句的嵌套 使用switch语句实现选择结构程序设计 选择结构程序举例,条件判断 关系运算符与关系表达式 逻辑运算符与逻辑表达式,选择结构设计中,建立判断条件是重要的设计部分之一。 C语言提供描述所有的条件的两种表达式: 关系表达式 逻辑表达式,条件判断,如果你在家,我去拜访你(需要判断你是否在家) 如果考试不及格,要补考(需要判断是否及格) 周末我们去郊游(需要判断是否是周末) 如果ab,输出a;如果ab是否为真 70岁以上的老人和10岁以下的儿童,入公园免票,关系运算符及其优先次序,优先级相同 (高),优先级相同 (低),关系、算术和赋值运算符的优先级关系,例如 ca+b ab=c a
5、=bc x!=a*bc,算术运算符,关系运算符,赋值运算符,(高),(低),关系表达式,a+bb+c (a=3)(b=5) ab)bc 2*a+bc-d,关系表达式的结果,在C语言中,关系表达式的结果为1或0 关系表达式成立时,结果为1,表示“真” 关系表达式不成立时,结果为0,表示“假” 例如 3bc (ab)=c b+ca,值为0,值为1,值为0,值为1,值为0,关系运算的结果可以参与运算 若a=3, b=2, c=1 d=ab e=abc f=ab+cb)+(cb),d=1,e=0,f=1,g=2,不推荐使用,有时需要判断的条件不是一个简单的条件,而是一个复合的条件 例如 ab和xy需要
6、同时满足 ab和xy至少有一个条件要满足 70岁以上的老人和10人岁以下的儿童,入园免票,逻辑运算符,逻辑运算符优先级序: !(2-s),!0,2.= 与 =不同 (注意条件表达式是否成立) (1) int x=0,y=2; if(x=0) y+; printf(“y=%dn”,y); 结果为: 3 (2) int x=5,y=2; if(x=0) y+; printf(“y=%dn”,y); 结果为:2,选择结构程序设计 if语句的三种形式 If语句的嵌套 条件运算符和条件表达式,选择结构形式,选择结构按其所构成的可能的不同执行路径的多寡。,简单的分支选择结构,多分支选择结构,单分支结构,双
7、分支结结构,if语句有三种结构,if 结构(单分支结构) if-else 结构(双分支结构) if else-if结构(多分支结构),if 结构(单分支结构),格式:if (表达式) 语句 例如 if(xy) printf(%d,x);,关系表达式,一个语句,可以有多个语句,但必须是复合语句。,注意事项,(1)表达式外的括号不能省略。 (2)在“if(表达式)”后不能加分号“;”。如果加了“;”,则表示if的内嵌语句为空语句。 (3)关键字if的后面的表达式可以是任意的表达式,只要表达式的值为非0,C语言就将表达式的值当真值处理,否则当假值处理。,(4)if语句的内嵌语句可以是单一语句,也可以
8、是复合语句。复合语句要用花括号 括起来。 如:if(ab) t=a;a=b; b=t; 如果不加花括号 ,则if的内嵌语句只有一条,即t=a;。 (5)尽量使if语句的内嵌语句比if语句缩进,这是良好的编程书写风格。,if 结构举例,输入两个整数,按代数值由小到大的顺序输出这两个数 分析问题 假设两个数是a,b 比较两个数的大小 如果ab,a和b的值互换,之后输出a和b的值 如果ab,直接输出a和b的值,#include main() int a,b,t; printf(Please input a,b:); scanf(%d%d , printf(The result is %d,%dn,a
9、,b) ,输入两个整数,按从小到大的顺序输出这两个数,多个语句,需要由花括号 括起来,if-else 结构(双分支结构),格式:if (表达式) 语句1; else 语句2; 例如 if(xy) printf(%d,x); else printf(%d,y);,else不能单独使用,如果使用,必须与 if 配对,#include main() int a,b; printf(Please input a,b:); scanf(%d%d , else printf(The result is %d,%dn,a,b) ,输入两个整数,按从小到大的顺序输出这两个数,分析: 只要满足下列两个条件之一者
10、,即是闰年 (1) 年号能被4整除,但要排除同时能被100整除; (2) 年号能被400整除。 如何表示这个条件?假设输入年号赋值给变量y (y%4= =0 printf(输入一个年号:); scanf(%d, ,程序实现,if-else结构举例,输入矩形的两个边长,求矩形的面积,为了防止误输入,如果输入的边长小于或者等于0,要输出告错信息 分析问题 要定义三个变量,边长1,边长2,面积 如果边长1和边长2大于0,计算矩形的面积并且输出面积的值 否则,给出告错信息,#include void main() double a,b,area; printf(“请输入矩形边长a和b:); scanf
11、(%lf,%lf, ,求矩形的面积,逻辑表达式,#include void main() double a,b,area; printf(“请输入矩形边长a和b:); scanf(%lf,%lf, ,求矩形的面积,用两个if语句代替if-else语句,不好!,if-else结构举例,编写一段程序,完成以下任务: 如右图所示,输入一个实数x,如果2.0=x=6.0,则整数y=1;否则,y=0,#include void main() float x; int y; printf(Please input x:); scanf(%f, ,错误!无论x取什么样的值,y的值总是1,#include v
12、oid main() float x; int y; printf(Please input x:); scanf(%f, ,正确!,【例】 处理学生的某一门课程考试成绩,要求为成绩不及格的学生打印补考通知单,而为成绩及格的学生打印课程成绩单。,#include main() float score,temp; printf(n 请输入一位学生的成绩:); scanf(%f, ,任给三个数a、b、c,请将其中的最大值输出到屏幕。,main() int a,b,c,max; printf(Please input 3 integers separated by spaces:); scanf(%
13、d %d %d, ,程序实现,if-else if 结构-多分支选择结构,ifelse结构嵌套,if-else if 结构-多分支选择结构,格式 if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式n-1) 语句n-1; else 语句n;,if-else if 结构,if-else if 结构举例,编写一段程序,完成以下任务: 如下图所示, 输入一个实数x 如果x-2.0, 则实数y=-1.0 如果-2.0=x=2.0,则y=0.5x 否则,y=1.0,#include void main() double x,y; printf(Please in
14、put x:); scanf(%lf, ,if(x1) y=2*x-1; else y=30-x; printf(n x=%f, y=%f n,x,y); ,include stdio.h main() float x,y; printf(Input x: ); scanf(%f, else,score90 为 Excellent, 80 score 90 为 Good, 70 score 80 为 Right, 60 score 70 为 Pass, score60 为Failed。,输入学生的百分制比成绩score,按分数输出其等级,程 序 实 现:,#include main() flo
15、at score; printf(Input score(0100):); scanf(%f, ,if-else if 结构举例,编写一段程序,完成以下任务:,#include void main() double number,cost; printf(Please input number:); scanf(%lf, ,在if语句中,若括号内的表达式的值为0,按“假”处理,若表达式的值为非0,按“真”处理。所以,括号内可以是关系表达式,逻辑表达式或者单个的量或者算数表达式 if (ab) if (ab,if语句的嵌套(1),语句1;,语句2;,语句1;,语句2;,if语句的嵌套(2),el
16、se总是与它上面最近的未配对的 if 配对,if ( ) if ( ) 语句1; else if ( ) 语句2; else 语句3;,if ( ) if ( ) 语句1; else if ( ) 语句2; else 语句3;,if语句的嵌套(3),最好使外层if和内嵌if都包含else部分,这样if和else的数量相同,一一对应,不易出错 如果if与else的数目不同,可以加花括号来确定配对关系,if ( ) if ( ) 语句1; else 语句2; else if ( ) 语句2; else 语句3;,if ( ) if ( ) 语句1; else 语句2,if语句的嵌套举例,编写一段程
17、序,输入一个实数x,按照如下的公式输出整数y的值,#include void main() double x; int y; printf(enter x:); scanf(%lf, ,正确,#include void main() double x; int y; printf(enter x:); scanf(%lf, ,正确,#include void main() double x; int y; printf(enter x:); scanf(%lf, ,不正确,#include void main() double x; int y; printf(enter x:); scanf
18、(%lf, ,不正确,条件运算符和条件表达式,条件运算符“? :” 条件表达式 表达式1 ? 表达式2 : 表达式3,条件运算符和条件表达式,max=ab ? a : b;,if(ab) max=a; else max=b;,条件运算符优先级高于赋值运算符,但低于算术运算符、关系运算符、逻辑运算符 ab ? a : b ab ? a : b+1 b=!a ? 0 : a a printf(enter a and b:); scanf(%d,%d, ,#include void main() int a,b; printf(enter a and b:); scanf(%d,%d, ,if(ab
19、) printf(“max is a=%dn”,a); else printf(“max is b=%dn”,b);,本次课程所讲内容,条件判断 关系运算符与关系表达式 逻辑运算符与逻辑表达式 选择结构程序设计 if语句 条件运算符与条件表达式 switch-case语句,switch-case语句,用于多分支的选择结构,取代嵌套的if语句。 格式 switch(表达式) case 常量表达式1:语句1 ;break; case 常量表达式2:语句2 ;break; case 常量表达式n:语句n ;break; default: 语句n+1; break; ,switch 语句:说明,1、s
20、witch,case 后的表达式类型: 整型、字符型,不能为实型 2、匹配执行,无匹配时执行default,default语句可省略 3、每个case后的常量表达式的值必须互不相同。 4、case无序,case之后的复合语句可不加。,switch 语句:说明,5、break语句用来跳出switch,否则连续输出。case语句不判断,只起标号作用,default后无break 6 、多个case可共用一组语句 case A : case B : case C : printf(“及格n”); break;,根据学生成绩的等级打印出百分制分数段.,switch(grade ) case A : p
21、rintf(85-100n); /*分号不可少*/ break; case B : printf(70-84n); break; case C : printf(60-69n); break; case D : printf(60n); break; default : printf(errorn); ,输入学生的成绩score,按分数输出其等级: score90为优; 90score80为良; 80score70为中等; 70score60为及格; score60为不及格 要求用switch语句实现,switch语句实现,#include main() float score; int a;
22、 printf(Input score(0100):); scanf(%f, switch(a ) case 10: case 9:,printf(Excellent!); break; case 8: printf(Good!); break; case 7:printf(Right!); break; case 6: printf(Pass!); break; default: printf(Failed!); ,#include void main() char grade; printf(enter grade:); scanf(%c, ,如果grade的值为B,则输出结果为: 708
23、4 6069 60 error,各语句后面没有break语句,#include void main() char grade; printf(enter grade:); scanf(%c, ,如果grade的值为B,则输出结果为: 7084,各语句后面有break语句,#include void main() int a=3,b=6; switch(ab?1:2) case 1:b=a+b; case 2:a=a+b; default: b-; printf(a=%d,b=%dn,a,b); ,输出结果为: a=9,b=5,各语句后面没有break语句,#include void main() int a=3,b=6; switch(ab?1:2) case 1:b=a+b;break; case 2:a=a+b;break; defa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽省合肥市中小学教师招聘考试题库含答案
- 本单元复习与测试教学设计初中信息技术(信息科技)初中二年级(下册)教科版(云南)
- 第8课 美国首任总统华盛顿教学设计高中历史岳麓版2007选修中外历史人物评说-岳麓版2007
- 2026年窑炉拆除合同(1篇)
- 人教版 体育与健康 5-6年级全一册 -足球1对1抢夺球教案
- 四川省巴中市南江中学2025-2026学年高一下学期阶段性训练地理试卷(含解析)
- 传统铜器打磨与保养技艺传承【课件文档】
- 江苏省南京市溧水区2026年中考一模语文试题(含答案)
- 第2节 胚胎工程实验技术教学设计高中生物北师大版选修3现代生物科技专题-北师大版
- 中国平煤神马控股集团秋招面笔试题及答案
- 2024山东特检集团招聘24人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 2024年漯河职业技术学院单招职业适应性测试题库及答案解析
- 抖音违禁语考试试题及答案
- 质量保证分大纲第三章文件和记录控制
- 史上最全国家保安员资格考试复习题题库(十套)附答案
- 黑龙江省哈尔滨市哈工大附中2022-2023学年八年级物理第二学期期中经典模拟试题含解析
- 2023年大同煤炭职业技术学院单招考试职业技能考试模拟试题及答案解析
- 农药的环境毒理学案例
- 计算机网络性能指标
- SAS课件-第5讲-SAS的假设检验
- 《汽车专业英语图解教程》高职配套教学课件
评论
0/150
提交评论