河南商业高等专科学校 4.4 程序综合举例 【例4.12】输入一个无符号短整数和进制代号(d—十进制、0—八进制、x—十六进制),然后将数进制代号要求输出。 程序代码如下: #include “stdio.h” void main() { unsigned short x; ?? char c; ?? scanf(“%d,%c”,&x,&c);????? /*输入一个无符号整数和进制代号*/ ?? switch(c)?????????????????? /*判断对应的进制代号*/ ?? { case 'd':?printf(“%d\n”,x);??? /*进制代号为d,输出对应十进制数*/ ???????? break; ??? ? case 'o': printf(“%o\n”,x);??? /*进制代号为o,输出对应八进制数*/ ???????? break; ??? case 'x': printf(“%x\n”,x);?/*进制代号为x,输出对应十六进制数*/???????? break; ???? default:? printf(“Input error!\n”); /*进制代号错误提示*/ }} 河南商业高等专科学校 4.4 程序综合举例 运行结果如下: 6,d↙ 6 6,o↙ 6 6,x↙ 6 6,c↙ Input error! 26,d↙ 26 26,o↙ 32 26,x↙ 1a 河南商业高等专科学校 4.4 程序综合举例 【例4.13】对于输入的三个数值:x,y和z,判断它们可否构成一个三角形,若它们可以构成一个三角形,则输出该三角形的周长和面积。 解题思路:三角形三条边的边长之间的关系是:“两边之和大于第三边,两边之差小于第三边”可构成三角形。 边长分别为x,y,z的三角形面积: 其中: 演示该程序执行的过程 河南商业高等专科学校 4.4 程序综合举例 【例4.14】一元二次方程ax2+bx+c=0的求解问题。 解题思路:根据一元二次方程ax2+bx+c=0的性质,可知: (1)当b2-tac=0,该方程有两个相等的实数根 (2)当b2-tac>0,该方程有两个不等的实数根 (3)当 b2-tac<0, 该方程有两个共轭复根 (4) 若a=0,则该方程不是二元一次方程。 演示该程序执行的过程 河南商业高等专科学校 4.4 程序综合举例 【例4.15】编写能实现下列分段函数的程序,要求:输入x,计算并输出函数y的值(保留2位小数): 河南商业高等专科学校 4.4 程序综合举例 程序代码如下: #include “stdio.h” void main() { float x,y; printf(“Please input x:”); scanf(“%f”,&x); /*输入x的值*/ if(x==8)y=10; /*x=8时的情形*/ else if(x<8)y=x*x+16; /*x<8时的情形*/ else y=9*x+16; /*x>8时的情形*/ printf(“\n When x=%f, the value of y is:%.2f\n”,x,y); } 第4章 选择结构程序设计 河南商业高等专科学校 选择结构又称为分支结构。 在选择结构程序设计中,根据条件的判断情况需要选择不同的语句组执行。 选择结构类型: (1)条件选择结构:根据给定的条件表达式进行判断,决定执行某个分支中的程序段。由if语句来实现。 (2)开关选择结构:根据给定的整型表达式的值进行判断,然后决定执行多个分支中的某一个分支。由switch语句来实现。 河南商业高等专科学校 4.1 程序的流程图 4.3 多分支选择语句 4.4 程序综合举例 4.2 IF语句 河南商业高等专科学校 4.1 程序的流程图 传统流程图符号: 河南商业高等专科学校 4.1 程序的流程图 N-S流程图符号: 河南商业高等专科学校 4.1 程序的流程图 【例4.1】求10!的程序。 解题思路: 由于n!=n*(n-1)! 即10!=10*9! 9!=9*8! …… 2!=2*1! 1!=1 河南商业高等专科学校 4.2 if 语句 4.2.1 if语句的三种格式 1.单分支选择结构 一般形式为: if(表达式) { 语句; } 执行过程:先求解表达式的值,如果表达式的值为真(非0),就执行语句;否则直接执行if语句后面的语句。执行过程如图4.4所示。