第五章 选择结构程序设计 (1)

合集下载

第5章 选择结构程序设计

第5章 选择结构程序设计

通过例5.4和5.5,会注意到:无论是块If单分支结构还是块If双分支结构,均 把程序执行过程分为满足条件的一支和不满足条件的另一支,但在应用中会遇 到类似下面的问题或更复杂的情况,例如,分段函数: x2 1 x>0 y 0 x=0 2 x<0 x 1
自变量x的取值分为三种情况,对应函数y有不同的计算表达式。此类问题 可以使用三个块IF单分支结构完成;也可以使用块IF双分支结构。若采用前 者,读者可仿照例5.4完成;若采用后者,可先把x的取值分为“等于0”和 “不等于0”两种情况,再把“不等于0”这种情况分成“大于0”和“小于0”两种 情况,代码如下: Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x <> 0 Then If x > 0 Then ' 不等于0的情况之一 y=x^2+1 Else ' 不等于0的情况之二 y=x^2-1 End If
2 2
Dim x As Single, y As Single ' 声明x,y为单精度变量 x = Val(InputBox("请输入变量的值")) ' 输入x的值 If x >= 0 Then ' x>=0时计算y y=x^2+1 End If If x < 0 Then ' x<0时计算y y=x^2-1 End If Print "x="; x, "y="; y 该代码段根据x取值的两种情况,分别计算出相应的y值,一个单分支If 结构完成一种情况的计算,因此结构简单,容易理解,但程序不够简练。

语句组1

机器人程序设计(C语言)(第2版)章节练习题及参考答案

机器人程序设计(C语言)(第2版)章节练习题及参考答案

第一章一种新的C语言学习方式1.一台能够工作的计算机包括?CPU (Central Processing Unit,中央处理单元,进行运算和控制,包括运算器和控制器等)、存储器(如RAM、ROM等)、输入设备、输出设备(包括串行/并行接口、USB等)。

其中,RAM (RandomAccess Memory,随机存储器)主要用于存储数据,ROM (RcadOnlyMemory, 只读存储器)主要用于存储程序。

2.单片机工作时需要什么?需要稳定的电源、晶振、外部存储器和编程调试接口,就像计算机工作时需要电源、晶振、硬盘或其他大容量外部存储器和操作系统一样。

微控制器是将单片机独立工作所需的电源适配器、晶振、外部存储器和串口转换电路等封装到一个模块上,这样就能直接与计算机连接并进行编程开发,不需任何其他芯片和电路。

3. AT89S52是一种什么样的单片机?是一种高性能、低功耗的8位单片机,内含8 KBISPdn-System Programmable系统在线编程)可反复擦写IOOO次的Flash只读程存器,采用ATMEL公司的高密度非易失性存储技术制造,兼容标准MCS51指令系统及其引脚结构。

在实际工程应用中,功能强大的AT89S52 已成为许多高性价比嵌入式控制应用系统的解决方案。

4. Progisp是一款什么样的软件?是一款免费下载的ISP软件,不需要专门的安装即可使用,非常方便。

使用该软件,读者可以将C语言程序生成的可执行文件下载到机器人单片机上。

使用时需要1根USBA转B 信号线。

5.简述串口调试工具的特点。

串口调试工具就是串行通信接口调试软件,集数据发送、数据接收、数据监控、数据分析等功能于一身,具有小巧精致、操作简捷、功能强大的特点,可以在串口通信监控、设备通信测试工作中有效提高效率。

6. pr i ntf ()函数称为?称为格式输出函数,其功能是按用户指定的格式,把指定的数据输出显示。

Print ()函数是C语言提供的标准输出函数,定义在C语言的标准函数库中,要使用它,必须包括定义标准函数库的头文件stdio. h o第二章最简单的C程序设计——机器人做算数1. C语言用什么整型变量?C语言用关键字imt定义整型变量。

c语言(第五章选择结构) c语言 教学课件

c语言(第五章选择结构) c语言 教学课件
▪ 非闰年的判别:
• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1

第五章:选择型程序设计(C语言讲义)PPT教学课件

第五章:选择型程序设计(C语言讲义)PPT教学课件
case ‘B’:
case ‘C’:
printf(“score>60\n”);
break;
……..
例 switch(score) { case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); }
main()
{ int x,y;
运行:Enter integer x,y:12,23
printf("Enter integer x,y:");
X<Y
scanf("%d,%d",&x,&y); if(x!=y)
Enter integer x,y:12,6 X>Y Enter integer x,y:12,12
if(x>y) printf("X>Y\n");
X==Y
else printf("X<Y\n");
else
printf("X==Y\n");
}
例: if (a==b) if(b==c) printf(“a==b==c”);
else printf(“a!=b”);
修改: if (a==b) { if(b==c) printf(“a==b==c”); } else printf(“a!=b”);
运行结果:a=2,b=1
PPT教学课件
谢谢观看
Thank You For Watching
非0
=0

机械工业出版社c语言各章节编程题参考答案(书中有)

机械工业出版社c语言各章节编程题参考答案(书中有)
else if((a==b)||(b==c)||(a==c)) printf(“This is a isoceles triangle\n”);
else if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))printf(“This is a
if(b>c){temp=b;b=c;c=temp;}
if(c>d){temp=c;c=d;d=temp;}/*d已经为最大的数*/
if(a>b){temp=a;a=b;b=temp;}
if(b>c){temp=b;b=c;c=temp;}/*c已经为次大的数*/
if(a>b){temp=a;a=b;b=temp;}/*a已经为最小的数*/
printf(“ *** ”);
printf(“ ***** ”);
printf(“ *** ”);
printf(“ * ”);
}
3参考答案
#include <stdio.h>
main()
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day=31; break;
case 4:
case 6:
case 9:
}
结束
5 解答:
S0:i=0;
S1:判断gi是否大于80,若大于转S3;
S2:i=i+1;
S3:打印i,gi
S4:若i<10,返回S1否则继续执行。
6 解答:求两个整数的最大公约数、最小公倍数

5whw-c-chapter 5

5whw-c-chapter 5

C语言程序设计
第五章 选择结构程序设计
应该理解为:
还是应该理解为:
if(x>=1)
if(x>5) x++; else x--;
if(x>=1)
if(x>5) x++; else x--;
为了避免这种二义性,C语言规定,else 总是与它前 面最近的未配对的if配对。 因此对上述例子应按后一 种情况理解。如果要使else与第一个if配对,则可加括 号{ }来实现。 <
printf("%d,%d\n", x||i&&j-3, i<j&&x<y);
printf("%d,%d\n", i==5&&c&&(j=8), x+y||i+j+k); <
C语言程序设计
第五章 选择结构程序设计
说明: (见教材Pg.94) 在逻辑表达式的求解中,并不是所有的逻辑运算符都执 行,只有在必须执行下一个逻辑运算符才能求出表达式的值 时,才执行下一个运算符。 (1) 表达式1 && 表达式2
");
x--;
else
}
printf("A=B\n");
C语言程序设
第五章 选择结构程序设计
例5.3 教材Pg.100 void main() { int x,y; scanf("%d",&x) y= if(x<0) y=-1; else if (x==0) y=0; else y=1; printf("x=%d,y=%d\n",x,y); } 程序1 if(x>=0) if (x>0) y=1; else y=0; else y=-1;

C语言第五章

C语言第五章
T t=a a=b 开始 输入a,b a>b
学习提示: (1)算法包括输入、处理和输出三个部分 ,其中处理部分为选择结构。
b=t
F
输出a,b 结束
5
信息科学与技术学院 软件工程系
选择结构算法设计
South West Jiaotong University
【例5. 1】输入a、b值,如果a>b,那么交换a和b,使得a≤b。 解决该问题的主要步骤为: 开始
17
信息科学与技术学院 软件工程系
关系运算符和关系表达式
【例】编写以下程序,查看结果。 #include <stdio.h> void main() { int a,b,c; int d,e,f; a=4,b=5,c=6; d=a>b; e=a<b<c; f=c>b>a; printf("%d %d %d \n",d,e,f); }
South West Jiaotong University
20
信息科学与技术学院 软件工程系
逻辑运算符- 优先级
• 各类运算符的优先级关系:
South West Jiaotong University
– !(非)高于 &&(与) 高于 ||(或)。 – &&(与)和||(或)低于关系运算符 – !(非)高于 算术运算符
1)任何数值(字符、整数、实数、指针)都可以表示 逻辑意义,只要数值不等于0,就表示“真”,而0 表示“假”;
2)关系与逻辑运算表达式的运算结果为“真”,表达 式的值为int型整数1,运算结果为“假”,则表达 式的值为int型整数0。
由2)可知,C语言的关系运算表达式和逻辑运算表 达式应该属于整型表达式范畴。

《C程序设计》选择结构程序设计实验报告一

《C程序设计》选择结构程序设计实验报告一

《C程序设计》选择结构程序设计实验报告return(y);}运行结果:(截图)2、完成改错后的程序#include <stdio.h>#include <ctype.h>char fun(char c){ if (c>='A' && c<='Z')/**********found**********/c=c+32;if (c>='a' && c<='u')/**********found**********/c=c+5;else if(c>='v' && c<='z')c=c-21;return c;}main ( ){ char cl, c2;printf("Enter a letter(A-Z):");cl=getchar( );if (isupper(cl)){ c2=fun(cl);printf("\n\nThe letter %c change to %c\n",cl,c2);}elseprintf("\nEnter (A-Z) !\n");}运行结果:(截图)3、解题思路:年限不同,利率不同。

利用利率不同写出代码源程序://用if写#include <stdio.h>#include <math.h>int main(){double bxh;int year,m;printf("请输入存款金额和年限:");scanf("%d,%d",&m,&year);if(year==1)bxh=m*pow((1+0.03),year);elseif(year==2)bxh=m*pow((1+0.033),year);elseif(year>=3&&year<=4)bxh=m*pow((1+0.038),year);elseif(year>=5)bxh=m*pow((1+0.042),year);printf("sum=%f\n",bxh);return 0;}//用switch写#include <stdio.h>#include <math.h>int main(){double bxh=0;int year,m;printf("请输入存款金额和年限:");scanf("%d,%d",&m,&year);switch (year){case 1:bxh=m*pow((1+0.03),1);break;case 2:bxh=m*pow((1+0.033),2);break;case 3:case 4:bxh=m*pow((1+0.038),year);break; case 5:bxh=m*pow((1+0.042),5);break; default: bxh=m*pow((1+0.042),year);}printf("本息和为%f\n",bxh);return 0;}运行结果:(截图)4、解题思路:判断是否为闰年,闰年二月有29天。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(3)注意“==”和“=”的区别。 例: 5>2>7>8在C中是允许的, 值为0 (4)应避免对实数作相等或不等的判断 (5) 字符串之间的比较不允许使用关系运算符 数学概念: |a-b|<ε 例例 : int i=1, j=7,a; •其中,ε为很小的正数,表示 a和b之间的误差。可 int a=i+(j%4!=0); a=0,b=1; 2 则b) a= printf(“a 以根据要求进行调节, ε越小, aequal 和b之间的差就越 if(a= to b”); 例:#include <stdio.h> 例: #include <stdio.h> else printf(“a not equal to b”); 小。 #include <math.h> void main() void main() • 若该式成立,则认为 a与b之间误差不超过ε, { float d=123.45; { float d=123.45; if(123.45==d) printf("1\n"); if(fabs(123.45-d)<1e-5) printf("1\n"); 近似相等; printf("0\n"); else else printf("0\n"); • } 否则认为a和b不相等。 }
• 语句形式: if (表达式) 语句1; else 语句2 ;
语句执行流程: 表达式
假(0) 真(非0) 语句1 语句2
3.多分支if-else-if 语句
if ( score<60) printf(“不及格” ); else if ( score <70) printf(“差”); else if (score <80) printf(“中”); else if (score <90) printf(“良”); else printf(“优”); • 语句形式: if (表达式1) 语句1; else if (表达式2)语句2; …… else if (表达式n)语句n; else 语句n+1;
例: 设整型变量year表示年份,构造一个条件表达式,当 year值为闰年时该条件表达式为“真”,否则为“假”。 分析: 根据数学知识,闰年年份满足的条件为: 1.如果年份能被4整除但不能被100整除,是闰年; 2.年份能被400整除,也是闰年。 所以,判断闰年的条件表达式为下列二者之一: ① year%4==0&&year%100!=0 ② year%400==0 表达式① ②的或运算完整地表示判断闰年的条件: (year%4==0&&year%100!=0)|| year%400==0 等价表示: 或 year%4==0&&year%100!=0|| year%400==0 year%4==0&&year%100|| year%400==0
/*判断x值是否介于1和100之间*/ /*判断x值是否小于1或大于等于100*/ /*判断x和y值是否都大于等于0*/ /*判断三个数是否满足构成三角形的条件*/ /*用于判断变量ch是否为大写字母*/。 x>=1&&x<=100 x<1||x>=100 x>=0&&y>=0 x+y>z&&x+z>y&&y+z>x ch>= 'A '&&ch<=‟Z‟
表达式不成立—逻辑假:0
关系运算符
关系运算符 >
名称 大于
案例
含 义
x>y 若x大于y,结果为真(1);否则结果为假(0) 若x大于等于y,结果为真(1);否则结果为假 (0)
优 先 级 高 优 先 级 低
>= < <= == !=
大于等于 x>=y 小于
x<y 若x小于y,结果为真(1);否则结果为假(0) 若x小于等于y,结果为真(1);否则结果为假 (0)
逻辑运算结果 a&&b a || b 1 1 1 0 !a 0 0 1 1
例:a=4;b=5; 则 短路特性:逻辑表达式求解时,并非所有的逻 !a
辑运算符都被执行,只是在必须执行下一个逻 a&&b 辑运算符才能求出表达式的解时,才执行该运 a||b 算符。
!a||b 4&&0||2 5>3&&2||8<4-!0 例a=0,b=1,c=-2 „c‟&&„d‟
(三) 条件运算符与条件表达式
条件运算符是C语言中唯一的三目运算符。 一般形式为: 表达式1 ? 表达式2 : 表达式3 条件运算符的优先级低于逻辑运算符,高于赋值操作 符,自右向左结合。 功能: 求解 真(非0) 求解 表达式2 表达式 表达式1 假(0)
求解 表达式3
的值
例,求两数中的较大数: max=(x>y?x:y)
选 择 结 构
ቤተ መጻሕፍቲ ባይዱ
第五章 选择结构程序设计(1)
公共计算机教学部
张乐
要设计选择结构程序,要考虑两个方面的问题:

一是在C语言中如何来表示条件。
一般用关系表达式或逻辑表达式

二是在C语言中实现选择结构用什么语句。
用if语句或switch语句
本讲主要内容
一、条件的表示 二、 if 语句
1.单分支if 语句 2.双分支if-else语句 3.多分支if-else-if语句 4.选择结构的嵌套
多分支语句执行流程:
假(0) 表达式1 真(非0) 语句1 假(0) 假(0)
表达式2
语句2
真(非0) 表达式n
真(非0) 语句n 语句n+1
注意
(1) if是关键字只能小写。 if语句中表达式形 式很灵活,可以是常量、变量、任何类型表达式 等。只要表达式的值为非零值,条件就为真,反 之条件为假。 • int a=1;
【例】用“假设思想”法求任意两数中的较大 数。(必记算法)
假设思想:先假设某事物成立或不成立,然后判断事实是否 如此,如果事实和假设条件不符,则对假设进行修正。
二、 if 语句
1.单分支if 语句(The if statement) 2.双分支if-else语句(The if-else statement) 3.多分支if-else-if语句 4.选择结构的嵌套(Nest)
if语句的三种形式: 1.单分支if语句 只判断及格的分数
if (score>= 60) printf(" Pass\n ");

运算符优先级 a<=x && x<=b // (a<=x) && (x<=b) //(a>b)&&(x>y) a>b&&x>y //(a==b)||(x==y) a==b||x==y !a||a>b //(!a)||(a>b)
逻辑表达式的结果: 值为零—逻辑假:0 逻辑值
非零值—逻辑真:1
运算对象 a 非0 非0 0 0 b 非0 0 非0 0 1 0 0 0
判断及格和不及格的分数
2.双分支if语句
if (score>= 60) printf("Pass\n"); else printf("Fail\n");
3.多分支if语句
判断优 良 中 差 不及格
if ( score<60) printf(“不及格” ); else if ( score <70) printf(“差”); else if (score <80) printf(“中”); else if (score <90) printf(“良”); else printf(“优”);
1.单分支if语句
if (score>= 60) print(" Pass\n ");
• 语句形式: if (表达式) 语句;
表达式:常用关系表达式和逻辑表达式
语句:单个语句或复合语句 假(0)
表达式
真(非0)
语句执行流程:
语句
2.双分支if语句
if (score>= 60) printf("Pass\n"); else printf("Fail\n");
a && b && c 例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
注意区分C语言的关系表达式与数学上的比较运
算表达式,并将数学上的比较运算转化为合法的 C关系表达式。
例:判断变量a的值是否在12到30之间。 数学表达式:12<a<30
正确的写法应该是:(12<a)&&(a<30)
一、条件的表示
关系运算符与关系表达式 逻辑运算符和逻辑表达式 条件运算符与表达式
(一)关系运算符与关系表达式
关系运算符:比较两个量的运算符,是双目运算符 由关系运算符将操作数连起来的表达式称为关系表达式。 优先级:算术运算符>关系运算符>赋值运算符 结合性:自左向右(左结合) 关系表达式的结果: 表达式成立—逻辑真:1 逻辑值
1.单分支if语句
【例】将大写字母转换为对应小写字母 。
#include <stdio.h> void main( ) {char ch; printf("请输入一个字符:\n"); ch=getchar( ); printf("输入的原始字符为%c:\n",ch); if(ch>='A'&&ch<='Z') ch=ch+32; printf("转换后的字符为:%c\n",ch); }
相关文档
最新文档