重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第5讲 多分支和循环

第5讲程序的控制结构 多分支(选择)结构程序设计 循环结构程序设计 请大家及时到我的个人主页htp:/les. cqupt. edu.cn./ xieji 或公共邮箱http://stu.cqupt.edu.cn中查看作业回复及下载 课件自学
第5讲 程序的控制结构 多分支(选择)结构程序设计 循环结构程序设计 请大家及时到我的个人主页http://cs.cqupt.edu.cn/xiejb 或公共邮箱http://stu.cqupt.edu.cn中查看作业回复及下载 课件自学

include o) 写程序时,一般在else中嵌套。 printf"od is if() else if(m "∠glse ese f() printf(% else void odd_or_even(int m)/ i(m%2==0)/是否为 【 printf(% d is even Se ●读程序时按默认配对原则:从最内层 〔 printf% d is odd\、开始,else总与离它上面最近且未曾配 void maino 对的订配对,与书写的缩进无关 [int m: scanf( %d",&m): /输入一个整数*/ pos_or_neg(m) odd or even(m)
2 ▪ 习题4.1:求分段函数 ▪ 编程题: #include void main() { int m; scanf("%d", &m); /*输入一个整数*/ if (m > 0) /*是否为正数*/ { printf("%d is positive\n", m); } else { if(m void pos_or_neg(int m); void odd_or_even(int m); void pos_or_neg(int m) /*判断整数m是正、负或0*/ { if (m > 0) /*是否为正数*/ { printf("%d is positive\n", m); } else { if(m < 0) /*是否为负数*/ { printf("%d is negative\n", m);} else /*是 0*/ { printf("%d is 0 \n", m);} } } void odd_or_even(int m) /*判断整数m是奇数还是偶数*/ { if (m % 2 == 0) /*是否为偶数*/ { printf("%d is even\n", m); } /*是偶数*/ else { printf("%d is odd\n", m); } /*是奇数*/ } void main() {int m; scanf("%d", &m); /*输入一个整数*/ pos_or_neg(m); odd_or_even(m); } 写成多函数: •多分支结构 •if-else中又有if-else称为“嵌套” •写程序时,一般在else中嵌套。 if( ) { …… } else {if( ) {……} else {……} } •读程序时按默认配对原则:从最内层 开始,else总与离它上面最近且未曾配 对的if配对,与书写的缩进无关

P95例4-12: 求一元二次方程的根 输入三个系数ab,c NO a==0? VES 计算de|ta delta>=0 NO 输出“不是一元二次方程 yES 求x1x2并输出输出“无解” 结束
3 输入三个系数a,b,c 输出 计算 结束 P95例4-12: 求一元二次方程的根 怎么求? 求解 a==0? 输出“不是一元二次方程” NO YES delta>=0 YES NO 求x1,x2并输出 输出“无解” 计算delta

include #include 忠告:为避免出错,尽量将每个分支中的 mat 0 语句用0括起来。 float a, b, c, delta, x1, x2, P, q: printf( Please enter the coefficients a, b, c scanf(“%6%6%&a,b,&e);/^输入彐若不括会怎 if(a==0) 样呢? printf(not a quadratic! ) ese delta=b*b-4*a*c:/计算判别式*/ if(delta< ° printf( No root!):}/输出“无解”*/ Ise p=-b/(2*a):q= sqrt(delta)/(2a) x2=p-q:求实根×1,x2 prnf(“×1=‰7.4f,x2=%7.4fn”,x1,x2):/输出x1和x2*
4 #include #include main() { float a, b, c, delta, x1, x2, p, q; printf("Please enter the coefficients a,b,c:"); scanf(“%f,%f,%f”, &a, &b, &c); /*输入三个系数*/ if(a==0) { printf(“ not a quadratic!”);} else { delta = b * b - 4 * a * c; /*计算判别式*/ if(delta<0) { printf(“No root!”); } /*输出 “无解” */ else { p = - b / (2 * a); q = sqrt(delta) / (2 * a); x1 = p + q; x2 = p - q; /*求实根x1,x2 */ printf(“x1=%7.4f, x2=%7.4f\n”, x1, x2); /*输出x1和x2*/ } } } 忠告:为避免出错,尽量将每个分支中的 语句用{}括起来。 若不括会怎 样呢?

P99例4-15 根据输入的百分制成绩 score,分段转换 成相应的等级并打印输出。 分析: 输入 score 转换并输出(五个分支)
5 P99 例4-15 ▪ 根据输入的百分制成绩score,分段转换 成相应的等级并打印输出。 ▪ 分析: ▪ 输入score ▪ 转换并输出(五个分支)

Include maino int score; 方法一程序 printf(" Please enter score: ) scanf( %d",&score); if( score100)/对输入数据的合法性进行检查* printf(Input error!\ni 在else分支嵌套 else if tscore > 90) 没有ee会怎样? printf( %d--excellent\n", score): else if (score >=80) rinf("yod--good \n", score); else if (score >=70 printf( %od-fit exactly\n", score) else if( score》60) printf( %d--passn", score) Ise printf( yod--fail \n", score)
6 #include main() { int score; printf("Please enter score:"); scanf("%d", &score); if (score 100) /*对输入数据的合法性进行检查*/ printf("Input error!\n"); else if (score >= 90) printf("%d--excellent\n", score); else if (score >= 80) printf("%d--good\n", score); else if (score >= 70) printf("%d—fit exactly\n", score); else if (score >= 60) printf("%d--pass\n", score); else printf("%d--fail\n", score); } 方法一程序 • 在else分支嵌套 • 没有else会怎样?

用于判断分支 方法二 的表达式 Score/10有1种情况 表达式的所有 可能结果列举 在case后 10 switch(score/10) [case 10 case 9: m ntf(%d----excellent\n, score): break 当上面的情况与下边 18: printf("%d----good\n",score): break: 的情况相同,后边的ase7; printf(%d- fit eve-ry \n"score) break 分支语句可省略 case 6: printfrsoz----pass \n" score): break 当遇到 break时,程 序转到 switch语句的 的》后边 default:prnt(“%d-- fail\n” score) break defau表示除上述 情况以外的所有情况
7 方法二 输出A Score/10有11种情况 10 9 输出A 0 输出E … switch(score/10) {case 10: case 9: printf(“%d----excellent\n”,score);break; case 8: printf(“%d----good\n”,score);break; case 7: printf(“%d----fit exactly\n”,score);break; case 6: printf(“%d----pass\n”,score);break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“%d----fail\n”,score);break; } default: printf(“%d----fail\n”,score);break; • 用于判断分支 的表达式 • 表达式的所有 可能结果列举 在case后 • 当上面的情况与下边 的情况相同,后边的 分支语句可省略 • default表示除上述 情况以外的所有情况。 • 当遇到break时,程 序转到switch语句的 的}后边

include VO d maIn 0 int score; 方法二程序 printf("Please enter score scan &score) if(score100) 执行过 printf(“ nput error!\n) ese 程?? switch(score/10) case 10: case 9: printf("%d----excellent \n", score); break; case8:prnf(“%d---godn”, score): break case 7: printf("%d----fit exactly \n", score): break case 6: printf("%d----passin",, score); break default: printf("%d----fail\n", score) break
8 #include void main() { int score; printf("Please enter score:"); scanf("%d", &score); if(score100) printf(“Input error!\n”); else { switch(score/10) { case 10: case 9: printf(“%d----excellent\n”,score);break; case 8: printf(“%d----good\n”,score);break; case 7: printf(“%d----fit exactly\n”,score);break; case 6: printf(“%d----pass\n”,score);break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“%d----fail\n”,score);break; } } } 方法二程序 default: printf(“%d----fail\n”,score);break; 执行过 程??

涉及到的语法知识 - switch语句 般用于菜单等多分支的情况 般结果为多个离散 switch(表达式) 值的情况 ease常数1:语句序列1; ease常数2:语句序列2 defau1t:语句序列n; 更详细的语法知识请 查阅P96-97
9 涉及到的语法知识 -switch语句 ▪ 一般用于菜单等多分支的情况 switch (表达式) { case 常数1:语句序列1; case 常数2:语句序列2; ………… default:语句序列n; } 一般结果为多个离散 值的情况 更详细的语法知识请 查阅P96-97

练习 maino [int a=l,b=0 switch(a) [case 1: switchb) Icase O: putchar ('o); break case 1: putchar (1); break reak, case 2: printf(a=2 ); break; 读程序时一定注意有没有 break, 并正确分析 break后转到了哪儿? 10
10 练习 main() { int a=1,b=0; switch(a) {case 1:switch(b) {case 0:putchar(‘0’); break; case 1: putchar(‘1’); break; } break; case 2:printf(“a=2”);break; } } !!!读程序时一定注意有没有break, 并正确分析break后转到了哪儿?
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第4讲 作用域和选择结构程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第3讲 多函数程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第2讲 简单C程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第20讲 位运算讲、位段、枚举变量、大型程序开发.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第1讲 简介与hello world.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第18讲 文件.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第17讲 共用体&链表.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第16讲 动态内存分配&结构体.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第15讲 二维数组与指针.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第14讲 二维数组、二维数组做函数参数.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第13讲 指针与一维数组.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)习题7.ppt
- 重庆邮电大学:《C语言程序设计》课程作业讲评-goldbahe猜想.doc
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第11讲 数组与指针.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第10讲 一维数组与字符数组.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第七章 符号计算.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第六章 数值计算_matlab8.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第五章 M文件(主讲:卢丹).ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第四章 数据和函数的可视化.ppt
- 中国民航大学电子信息工程学院:《MATLAB程序设计与应用》课程教学资源(PPT课件讲稿)第三章 字符串数组、元胞数组和构架数组.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第6讲 循环和综合程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第7讲 综合程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第8讲 模块化程序设计.ppt
- 重庆邮电大学:《C语言程序设计》课程PPT教学课件(讲稿)第9讲 存储类型 宏定义 数组.ppt
- 重庆邮电大学:《C语言程序设计》课程授课计划一.doc
- 重庆邮电大学:《C语言程序设计》课程授课计划二.doc
- 湖南农业大学:《计算机组成原理教案》第二章 数据格式(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第六章 总线的基本概念(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第七章 显示器(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第三章 存储系统(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第五章 中央处理器(蒋邵平).ppt
- 湖南农业大学:《计算机组成原理教案》第一章 计算机系统概论(蒋邵平).ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(学生作业)面向对象文档.doc
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第一讲 Java导论与Java开发环境(主讲:金旭亮).ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第三讲 Java语法基础.ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第二讲 Java应用程序与Applet.ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)Java开发Application.ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第七讲 接口与数据结构.ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第五讲 创建与使用类.ppt
- 北京理工大学:《Java导论与Java开发环境》课程教学资源(PPT课件讲稿)第八讲 异常处理.ppt