文件名称:
从零开始学C语言(三).pdf.pdf
开发工具:
文件大小: 7mb
下载次数: 0
上传时间: 2019-09-13
详细说明:从零开始学C语言(三).pdfpdf,从零开始学C语言(三).pdf第7章顺序结构与选择结构‖93
编写程序如下:
#inc1ude
#include
/*添加数学函数所需头文件*
void main()
float a,b, c,lhl s
printf("请输入能组成三角形的三条边:n");
/*输出提示文字*
canf("sf, f, sf"r&a,&b,&c)
/*输入a、b、c的值*
/*输出a、b、c的值*/
计算三条边的和*
h1=1/2;
/*为h赋值*
s=sqrt(h1*(h1-a)*(h1-b)*(h1-c));
计算三角形的面积*
printf("三角形的周长和面积分别为:\n”);
/*输出面积的值
printf("1=号4.2E,=号4,2f,1,);
/*输出1和s的值*
程序运行时,输入:
3,4,5
屏幕上输出的结果为
a=3,000000,b=4,000000,c=5.000000
三角形的周长和面积分别为:
1=12.00,s=6.00
该程序在执行过程中,首先输出提示信息:“请输入能组成三角形的三条边:”,然后根据要
求输入,再输出三条边的大小。
先求三角形周长,再求半周长,利用海伦公式求出三角形面积,最后输出三角形的周长和
面积。
程序的执行流程如图7-3所示。
开始
输入a、b、c
开始
输出a
输出三边信息
输出b
求三角形周长
输出c
求三角形半周长
输出d
求三角形面积
输出e
输出三角形周长和面积
结束
结束
图72程序的执行顺序图
图7-3程序执行流程图
【实例7-3】编写程序实现:学习成绩>=90分的同学用A表示,60~89分之间的用B表
示,60分以下的用C表示。
#include
void main(
int score
char grade;
94
从零开始学c语管
printf("please input a score\n");
scanf("a",&score)i
grade=score>=90?A:(score>=60?B:'C);
printf ("a belongs to sc\n", score, grade):
程序运行的结果为
please input a score:
50′
50 belongs to c
72)选择结构程序设计
由于顺序结构程序是顺序执行的,无分支、无转移、无循环,因此它不可能处理复杂的问
题,而在数据处理过程中,通常需要根据不同的条件进行判断,然后选择程序进行处理,由此
可见,顺序结构无法满足要求,而选择结构就是为了解决这类问题而设定的。
一般而言,C语言中选择语句包括两种:i语句和 switch语句。所谓选择语句,就是通过
判断条件来选择执行哪一条语句,进而达到编程目的。
72.1i语句
if语句又称为条件语句,可以实现多路分支。C语言中,if语句一般格式如下:
if(条件1
语句1
else if(条件2)
语句2
else if(条件3)
语句3
else if(条件m)
语句m
else
语句m+1
其中,<条件1>,<条件2>,<条件3>…<条件m>表示i语句的条件表达式,用来判断执
行哪一条语句。在执行语句时,先对条件表达式求解,然后根据结果执行指定语句。这里条
件表达式可以是逻辑表达式、关系表达式等。
个判断条件的结果只有两种可能:条件成立与不成立。在许多高级语言中,都用逻辑值
“真”表示条件成立;用逻辑值“假”表示条件不成立。在C语言中,没有专门的逻辑值,而是
借助于非0值代表“真”,0值代表“假”。只要条件表达式的值为非0,if条件就成立,执行其
后面的语句。例如:
int y=0
if(a)
第7章顺序结构与选择结构95
y=4;/*如果为真,y值为4*/
e⊥se
y=5;/*否则,y值为5*/
这段代码执行后,y的值为4,因为字符“a”的ASCⅡ值为97,if的条件表达式是一个非
0值。
语句1,语句2,语句3…语句m+1是i语句的执行语句,可以是一条语句,也可以是复合
语句。注意,每条语句的后面都以分号结尾。
在实际应用中,我们很少用到这么多条件。当条件足够多时,我们往往会选择 switch语句,
这将在下一节中进行详细讲解。
1.常用的近语句格式
通常在运用的过程中,if分支语句有几种常用的格式
格式
if语句最简单的格式是没有ele,只有if关键字。格式如下:
if<条件>语句
这种语句的执行过程是,<条件>所给出的表达式为真时,执行
语句;当<条件>所给出的表达式为假时,不执行话句,即直接跳过if
语句,执行程序下面的语句。程序执行流程如图7-4所示。
表达式
例如:输出两个数的最大值:
if(asb)
语句
a=b;
printf("a=td\n",a);
【实例74】输入三个数,要求按由小到大的顺序输出。
图7-4i语句的执行流程图
#include
void main()
float a, b, c, t i
scant《"f,暑f,告f”,a,b,&C)
/*输入三个数
if(a>b)
/*使a的值小于b的值*
七
=ai
a=b
bat
if(a>c)
/*使a的值小于c的值*
t=ai
a=ci
c=ti
if(b>c)
/*使b的值小于c的值*
七=b
b=C:
c=ti
printf("暑5,2f,暑5.2f,暑5.2f,a,b,c);/★将三个数按从小到大的顺序输出/
96
m从零开始学C语
格式二:
程序中应用最多的if语句是两路分支,它的基本格式如下:
if(条件1)
语句1
else
语句2
该种形式的功能与简单if语句相似,首先判断条件,当<条件1>所给出的表达式为真时,
执行语句1,否则执行语句2。程序执行流程如图7-5所示。
【实例7-5】输入三个数,输出这三个数中的最大数。
程序分析:求最大数,我们可以先两两比较,先比
较第一个和第二个数。并把两个数中较大的数存入变量L语向1
表达式
语句2
max中。然后再比较max和第三个数的大小,如果第三
个数大于max,那就把第三个数存入max中,最后输出
max的值。
图7-5if语句的执行流程图
按照此思想编写的程序如下:
#inc1ude
void main()
fl。ata,b,c,max;
定义所需变量
scant("暑f,,暑f",&a,&b,&e)
/*输入a、b、c的值*
/*判断a与b的大小★/
if(a>b)
Inax=ai
else
max=b;
/*将a、b中的最大值与c进行比较*
if(max
开始
void main(
float,y
输入x
printf("输入数x:n");
scanf("gf",&x)i
/*输入*f
if (x<=1)
x≤1
Y
/*计算←f
-r
10
}
e⊥se
y=2x1
y=3x-11
【if(1
void main(
char C:
第7章顺序结构与选择结构99
nt letters=0, space=O, digit=0, others=0;
/*定义四个整型变量分别用来计算英文字母、空格、数字和其他字符的个数*
printf("please input some characters: \n");
while((cagetchar())!='\n'
if(c>='a&c<=z·c>=·A!C<=”2”)/*如果为英文字母变量,1 etters加1*
letters++
e1seif(c=='·)
/*如果为空格变量, space加1*/
space+十
else if(c>=·0·&&c<=!9·)
/*如果为数字变量, digit加1*
digit++
else
/*如果为其他变量, others加1*
others++i
printf("all in all: char=d space=d digit=d others=d\n",letters
y pace, digit, others);
程序的运行结果为:
please input some characters:
2008 olympic games
all in all: char=12 space=2 digit=4 others=0
72.2 switch语句
if语句一般用于处理一个或两个分支的选择结构,如果分支较多,就需要使用ⅱ语句的嵌
套,但嵌套的ⅱ语句层数越多,程序越复杂,可读性就越差。C语句提供的 switch语句能同时
处理多个分支选择结构。其语法格式为:
switch(表达式
case常量1;语句组1
case常量2:语句组2
case常量n:语句组n
default:语句组n+1
switch语句在执行过程中,首先计算表达式的值,当表达式的
值与某一个case后面的常量表达式的值相等、相匹配时,就去执
表达式
行此case后面的语句。如果所有的case中的常量表达式的值都与
“表达式”的值都不相匹配,就执行deut(默认)后面的话句。<量)>语句组
口swh后面括号内的“表达式”可以是任何类型的数据。<量2/
这里要说明的是:
N
语句组2
可以是整型表达式、字符型表达式,也可以是枚举类型
数据。
<常量n
语句组n
口每个case的常量表达式的值必须互不相同,否则会产生
错误的选择。
语句组n+1
口各个case和 default的出现次序不影响执行的结果。
图7-8 switch语句执行流程图
口在执行 switch语句时,根据 switch后面表达式的值找到
匹配的入口标号,执行完该case语句后,继续执行下一个case语句,不再进行标号判
断。case常量表达式只起到入口标示的作用。
【实例7-8】输入考试成绩的等级,打印出百分制分数段(A等:85分以上,B等:70
84,C等:60~69,D等:60分以下)。
100删从零开始学c语
#include
yoid main(c)
char grade;
/*定义一个字符型变量*f
scant("c",&grade)i
/*输入一个字符型的值*
switch(grade)
/*判读输入的值*
case A:
printf("85-100\n");
case B
printf("70~84\n");
case 'c'
printf(60-69\n")
case Di
printf("<60\n")i
default
printf("Error \n")
程序运行时,当输入:A
程序运行的结果为:
85~100
70~84
60~69
<60
Error
程序运行时,当输入:B
程序运行的结果为:
70-84
60-69
<60
Error
程序运行时,当输入:C
程序运行的结果为:
60~69
60
Error
程序运行时,当输入:D∠
程序运行的结果为:
<60
Error
程序运行时,当输入:E4
程序运行的结果为:
Error
从上面的运行结果可以看出,当 switch后面圆括号中表达式的值与某个cae后面的常量表
达式的值相等时,就执行此case后面的语句,然后自动进入下一个case语句继续执行。如果这
样执行,会得到一些我们不需要的结果,为了解决这个问题,需要使用 break语句,执行一个
case后,跳出 switch语句。一般形式为
switch(表达式)
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.