第4章 分支结构的程序设计.docx
- 文档编号:13335664
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:14
- 大小:122.31KB
第4章 分支结构的程序设计.docx
《第4章 分支结构的程序设计.docx》由会员分享,可在线阅读,更多相关《第4章 分支结构的程序设计.docx(14页珍藏版)》请在冰点文库上搜索。
第4章分支结构的程序设计
第4章分支结构的程序设计
本章重点
●if语句的三种形式
●if语句的应用
●if~else语句的应用
●if~elseif语句的应用
●switch语句的程序流程
4.1if语句的应用
if语句形式之一
if(表达式)
语句块
图4.1if语句流程图
例4.1:
从键盘输入一批数,统计正数的和,当输入0时程序结束。
分析问题:
通过循环输入整数,假设输入变量为x;然后要判断该数是否为0,如果不为0,再判断值是否大于零,如果大于零,加入和。
#include
intmain()
{
intx,sum=0;
scanf("%d",&x);
for(;x;scanf("%d",&x))
if(x>0)
sum=sum+x;
printf("正数总和为:
%d\n",sum);
return0;
}
4.2if~else语句的应用
if语句形式之二
if(表达式)
语句块1
else
语句块2
图4.4if…else语句流程图
例4.3:
判断从键盘输入的数是正数还是负数,输入数0结束程序运行。
分析问题:
数从键盘输入,输入的数如果大于0则输出“输入的数是正数”,如果是小于0则输出“输入的数是负数”,如果是等于0,则程序运行结束。
流程图如图4.5所示。
图4.5程序流程图
#include
intmain()
{
intx=1;
printf("\n请输入一整数(输入0程序退出):
");
scanf("%d",&x);
while(x)
{
if(x>0)
printf("输入的数%d是正数.\n",x);
else
printf("输入的数%d是负数.\n",x);
printf("\n请输入一整数(输入0程序退出):
");
scanf("%d",&x);
}
return0;
}
例4.4:
从键盘输入10个整数,把所有的正数相加以及所有的负数相加,最后输出所有正数的和,以及所有负数的和。
分析问题:
要从键盘输入十个整数,所以采用循环结构,输入的数分正数和负数,各进行累加。
流程图如图4.6所示。
图4.6流程图
#include
intmain()
{
intnsum=0,n=0,psum=0,p=0;
/*nsum负数累加值,n负数个数,psum正数累加值,p正数个数(0作为正数)*/
inti,x;/*i用于控制循环次数,x用户存储输入的数*/
for(i=1;i<=10;i++)
{
printf("请输入10整数中的第%d个数:
",i);
scanf("%d",&x);
if(x>=0)
{
psum+=x;
p++;
}
else{
nsum+=x;
n++;
}
}
printf("\n有%d个正数,和为:
%d\n有%d个负数,和为:
%d\n",p,psum,n,nsum);
return0;
}
4.3if~elseif语句的应用
if语句形式之三
if(表达式1)
语句块1
elseif(表达式2)
语句块2
.
.
.
elseif(表达式n-1)
语句块n-1
else
语句块n
功能:
从上到下依次判断表达式的值,当出现某个值为真(非0)时,执行与其相对应的语句,并跳过其余条件的判别;如果所有的表达式均为假(0),则执行语句n。
程序流程图如图4.7所示。
图4.7if…elseif流程图
例4.5:
从键盘输入一个数给x,然后判断该变量是否大于零,若大于零的话,则输出一行文字说明该变量是正数,否则的话再判断变量x的值是否为零,若为零的话,则输出一行文字说明该变量是零,否则的话则x的值是负数,输出一行文字说明该变量是负数。
分析:
输入的数分三种情况:
正数、负数、零。
流程图如图4.8所示。
图4.8流程图
编译程序及运行
#include
intmain()
{
intx;
printf("输入一数值:
");
scanf("%d",&x);
if(x>0)printf("x是正数.\n");
elseif(x==0)printf("x是零.\n");
elseprintf("x是负数.\n");
return0;
}
4.4if嵌套语句的应用
if语句的嵌套是指if语句中又包含了一个或多个if语句。
上一节介绍的if-elseif结构也是if语句的嵌套结构。
例4.6:
编写一个程序,由键盘输入三个整数作为三角形的三条边,判断是否能构成一个三角形,如能并判断是等边三角形、等腰三角形、直角三角形,还是其它一般的三角形。
分析问题:
设三个整数分别为:
a、b、c,构成三角形的条件为:
a+b>c&&a+c>b&&b+c>a
构成等边三角形的条件为:
a==b&&b==c;构成等腰三角形的条件为:
a==b||b==c||a==c。
构成直角三角形的条件为:
a*a+c*c==b*b||a*a+b*b==c*c||c*c+b*b==a*a。
编译程序及运行
步骤1:
在VisualC++环境下新建文件可用[开始]→[程序]→[MicrosoftVisualC++6.0]→[MicrosoftVisualC++6.0]→[文件]→[新建]→[文件]→[C++SourseFile],输入文件名4-6.c
步骤2:
在4-6.c文件中输入以下完整的源程序。
#include
intmain()
{
inta,b,c;
printf("请输入第1条边:
");
scanf("%d",&a);
printf("请输入第2条边:
");
scanf("%d",&b);
printf("请输入第3条边:
");
scanf("%d",&c);
if(a+b>c&&a+c>b&&b+c>a)
{
printf("能构成一个三角形\n");
if(a==b&&b==c)
printf("能构成一个等边三角形\n");
elseif(a==b||b==c||a==c)
printf("能构成一个等腰三角形\n");
elseif(a*a+c*c==b*b||a*a+b*b==c*c||c*c+b*b==a*a)
printf("能构成一个直角三角形\n");
else
printf("能构成一个一般的三角形\n");
}
else
printf("不能构成一个三角形\n");
return0;
}
4.5switch的应用
switch语句格式:
switch(表达式)
{
case常量表达式1:
语句序列1
[break;]
case常量表达式2:
语句序列2
[break;]
.
.
.
case常量表达式n;
语句序列n
[break;]
default:
语句序列n+1
}
图4.9语句执行的流程图
例4.7求执行下列程序段后k的值。
charc='2';intk=1;
switch(c+1-'0')
{case2:
k+=1;
case2+1:
k+=2;
case4:
k+=3;
}
解析:
switch中表达式的值为3,从case2+1入口,执行语句k+=2;得k=3,由于此语句后无break;语句,继续执行case4后语句:
k+=3;最后k=6。
例4.8输入一个字符,如果是Y、N或y、n,则分别执行一输出语句;如果是其他字母则执行另一输出语句。
程序如下所示:
#include
voidmain()
{
charch;
printf("pleaseinputY/N(y/n):
");
scanf("%c",&ch);
switch(ch)
{
case'y':
case'Y':
printf("\nthisis'Y'or'y'.\n");
break;
case'n':
case'N':
printf("\nthisis'N'or'n'.\n");
break;
default:
printf("\nthisisotherchar.\n");
}
}
例4.9编写程序,实现如下功能:
输入一个实数后,屏幕上显示如下菜单:
1.输出相反数
2.输出平方数
3.输出平方根
4.退出
输入1,输出该数的相反数;输入2,输出该数的的平方数;输入3,输出该数的的平方根;输入4退出此程序。
输入1~4之外的数,显示“请输入1~4之间的数字”。
分析:
此题涉及多个菜单的选择,因此用到多分支结构——switch,switch可以不同条件实现不同的程序块,如此题中输入数字1,则执行输出相反数的程序块。
图4.10菜单选择流程图
#include
#include
intmain()
{
inti;
floatm;
intc=5;
printf("输入任意一个整型数:
\n");
scanf("%f",&m);
printf(*************************\n");
printf("1.输出相反数\n");
printf("2.输出平方数\n");
printf("3.输出平方根\n");
printf("4.退出\n");
printf("*************************\n");
while
(1)
{
scanf(“%d”,&c);
switch(c)
{
case1:
printf("输出相反数:
%f\n",-m);break;
case2:
printf("输出平方数:
%f\n",m*m);break;
case3:
printf("输出平方根:
%f\n",sqrt(m));break;
case4:
break;
default:
printf("请输入1~4之间的数字!
\n");
}
if(c==4)break;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 分支结构的程序设计 分支 结构 程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)