第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 <stdio h void pos_or_neg(int m void odd_or_even(int m) 多分支结构 void pos_or_neg(int m)/yese中又有f-else称为“嵌套” if(m>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 <stdio.h> void main() { int m; scanf("%d", &m); /*输入一个整数*/ 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);} } if (m % 2 == 0) /*是否为偶数*/ { printf("%d is even\n", m); } /*是偶数*/ else { printf("%d is odd\n", m); } /*是奇数*/ } 作业答案 = − = 1 0 0 0 1 0 x x x y #include <stdio.h> 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 <math.h> #include <stdio. h> 忠告:为避免出错,尽量将每个分支中的 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 <math.h> #include <stdio.h> 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 ▪ 转换并输出(五个分支)