
第3章简单程序和选择语句 主讲教师:陈勇 联系电话:13891934678 E-Mail:cy@nwsuaf.edu.cn 计算机应用教研室
计算机应用教研室 第3章 简单程序和选择语句 主讲教师:陈 勇 联系电话:13891934678 E-Mail:cy@nwsuaf.edu.cn

第 3.1程序基本结构与结构化程序设计 3章 计算机科学家沃思(Nikiklaus Wirth): 简单程序与选择语句 数据结构+算法=程序 数 据:指程序处理的对象 数据结构:指数据的类型和组织形式 算 法:解决问题的一系列步骤的集合
第 3 章 简 单 程 序 与 选 择 语 句 3.1 程序基本结构与结构化程序设计 计算机科学家沃思(Nikiklaus Wirth): 数据结构+算法=程序 数 据:指程序处理的对象 数据结构:指数据的类型和组织形式 算 法:解决问题的一系列步骤的集合

第 3.1程序基本结构与结构化程序设计 3章 3.1.1算法举例 简 例3.1求解一元二次方程ax2+bx+c=0 (a丰0)的两个根。 序 算法: 选 1.输入数据a,b,c 2.求根x1,x2 句 3.输出结果
第 3 章 简 单 程 序 与 选 择 语 句 3.1.1 算法举例 例3.1 求解一元二次方程ax2+bx+c=0 (a≠0)的两个根。 3.1 程序基本结构与结构化程序设计 算法: 1.输入数据a, b, c 2.求根x1, x2 3.输出结果

第 3.1程序基本结构与结构化程序设计 章 3.1.1算法举例 简 例3.1求解一元二次方程ax2+bx+c=0 (a≠0)的两个根。 序 算法: 选 1.输入数据a, 2.求根x1,x2 2.1求判别式d=b2-4ac 句 3.输出结果 2.2判断:如果d>=0 2.2.1.1x1=(-b+sqrt(d)/2*a) 2.2.1.2x2=(-b-sqrt(d)/(2*a) 否则 2.2.2.1求实部r=-b/(2*a) 2.2.2.2求虚部p=+/-sqrt(-d)/2/a
第 3 章 简 单 程 序 与 选 择 语 句 3.1.1 算法举例 例3.1 求解一元二次方程ax2+bx+c=0 (a≠0)的两个根。 3.1 程序基本结构与结构化程序设计 算法: 1.输入数据a, b, c 2.求根x1, x2 3.输出结果 2.1 求判别式d=b2 -4ac 2.2 判断:如果d>=0 2.2.1.1 x1=(-b+sqrt(d))/(2*a) 2.2.1.2 x2=(-b-sqrt(d))/(2*a) 否则 2.2.2.1 求实部r=-b/(2*a) 2.2.2.2 求虚部p=+/-sqrt(-d)/2/a

第3章 3.1程序基本结构与结构化程序设计 流程图 开始 输入a,b,C 简单程序与选择语句 d=b*b-4*a*c d>=0? N x1=(-b+sqrt(d))/2/a r=-b/2/a x1=(-b-sqrt(d))/2/a p=+/-sqt(-d)/2/a 输出处理结果 结束
第 3 章 简 单 程 序 与 选 择 语 句 流程图 3.1 程序基本结构与结构化程序设计 开始 输入a, b, c d=b*b-4*a*c d>=0? x1=(-b+sqrt(d))/2/a x1=(-b-sqrt(d))/2/a r=-b/2/a p=+/-sqrt(-d))/2/a 输出处理结果 结束 Y N

第 3.1程序基本结构与结构化程序设计 3章 开始 #include main() 输入a,b,c {float a,b,c,d,x1,x2,r,q; printf("请输入系数a,b,c="): 程序与 d=b*b-4*a*c scanf("%f%f%of",&a,&b,&c); r=-b/2/a d=b*b-4*a*c; q=sqrt(fabs(d))/2/a r=-b/(2*a)i 择语 N p=sqrt(fabs(d))/(2*a); d>=0? if(d>=0) x1=r+q xl=r+q i {x1=r+q舫 X2=r-a x2=r-qi x2=r-q;} else 输出处理结果 {x1=r+qi; x2=r-qi;} 结束 ???如何输出呢?
第 3 章 简 单 程 序 与 选 择 语 句 3.1 程序基本结构与结构化程序设计 开始 输入a, b, c d=b*b-4*a*c r=-b/2/a q=sqrt(fabs(d))/2/a d>=0? x1=r+q x2=r-q x1=r+q i x2=r-q i 输出处理结果 结束 Y N #include main() {float a,b,c,d,x1,x2,r,q; printf("请输入系数a,b,c="); scanf("%f%f%f",&a,&b,&c); d=b*b-4*a*c; r=-b/(2*a); p=sqrt(fabs(d))/(2*a); if(d>=0) {x1=r+q; x2=r-q;} else {x1=r+qi; x2=r-qi;} ????????如何输出呢? }

第 3.1程序基本结构与结构化程序设计 章 开始 #include main() 输入a,b,C {float a,b,c,d,x1,x2,rq; printf("请输入系数a,b,c="): 程序与 d=b*b-4*a*c r=-b/2/a scanf("%f%f%of",&a,&b,&c); q=sqrt(fabs(d))/2/a d=b*b-4*a*C; r=-b/(2*a)月 择语 N p=sqrt(fabs(d))/(2*a); d>=0? if(d>=0) xl=r+q xl=r+qi {printf("x1=%g n",r+q); x2=r-q x2=r-q i printf("x2=%g n",r-q);) else 输出处理结果 {printf("x1=%g\n",r+qi); printf("x2=%g\n",r-qi);} 结束
第 3 章 简 单 程 序 与 选 择 语 句 3.1 程序基本结构与结构化程序设计 开始 输入a, b, c d=b*b-4*a*c r=-b/2/a q=sqrt(fabs(d))/2/a d>=0? x1=r+q x2=r-q x1=r+q i x2=r-q i 输出处理结果 结束 Y N #include main() {float a,b,c,d,x1,x2,r,q; printf("请输入系数a,b,c="); scanf("%f%f%f",&a,&b,&c); d=b*b-4*a*c; r=-b/(2*a); p=sqrt(fabs(d))/(2*a); if(d>=0) {printf("x1=%g\n",r+q); printf("x2=%g\n",r-q);} else {printf("x1=%g\n",r+qi); printf("x2=%g\n",r-qi);} }

第3章 3.1 程序基本结构与结构化程序设计 3.1.1算法举例 简单程序与 例3.2依次读入30个学生成绩,输出平均 成绩及最高成绩。 算法: 1.定义变量(i=0,sum=0,max=0,average,score) 2.如果isum 2.3i+1=>i 2.4如果maxmax 2.5转向第2步开始 3.sum/30=>average 4.输出结果average,max
第 3 章 简 单 程 序 与 选 择 语 句 3.1 程序基本结构与结构化程序设计 3.1.1 算法举例 例3.2 依次读入30个学生成绩,输出平均 成绩及最高成绩。 算法: 1.定义变量(i=0,sum=0,max=0,average,score) 2.如果isum 2.3 i+1=>i 2.4 如果maxmax 2.5 转向第2步开始 3.sum/30=>average 4.输出结果average,max

第 3.1程序基本结构与结构化程序设计 3章 0=>i,sum,max main() {int i=0; isum scanf("%f",&score); sum=sum+score; score>max? if(score>max)max=score; i++ score=>max i+1=>i average=sum/30; printf(平均:y%gn",average)i sum/30=>average printf("最高:%gn",max)i 输出处理结果
第 3 章 简 单 程 序 与 选 择 语 句 3.1 程序基本结构与结构化程序设计 main() {int i=0; float score,average; float sum=0,max=0; while(imax) max=score; i++; } average=sum/30; printf(“平均:%g\n",average); printf("最高:%g\n",max); } score>max? i+1=>i score=>max sum+score=>sum 读入第i+1个score 输出处理结果 0=>i,sum,max iaverage

3.1程序基本结构与结构化程序设计 章 3.1.2算法的特性 简 1.有穷性 程序与 2.确定性; 3.有若干个输入数据(0~N) 4.有若干个输出数据(1~N),没有 句 输出的程序是没有意义的 5.有效性
第 3 章 简 单 程 序 与 选 择 语 句 3.1 程序基本结构与结构化程序设计 3.1.2 算法的特性 1.有穷性 2.确定性; 3.有若干个输入数据(0~N) 4.有若干个输出数据(1~N),没有 输出的程序是没有意义的 5.有效性