c++程序设计第二章

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

C++程序设计
if 语句的嵌套(问题需求)
• 嵌套if语句:
– if 语句中,如果内嵌语句又是if语句,就构成了嵌套if语句。if 语句可 实现二选一分支,而嵌套if语句则可以实现多选一的多路分支情况。
嵌套在else分支中: if (表达式1) 语句1; else if (表达式2) 语句2; else if … else 语句n;
C++程序设计
例2.4 输入一个年份,判断是否为闰年 #include<iostream> using namespace std; int main () { int year; cout<<“输入年份”<<endl; cin >> year ; if (year%4==0&&year%100!=0||year%400==0) cout << year << “年时闰年” << endl ; else cout<<year<<“年不是闰年”<<endl; return 0; }
return 0; }
C++程序设计
分支结构
x>=y? 输入3个数x,y,z [t] max赋值x [f] max赋值y
【例2.2】 输入三个数,输出 其中的最大数。
z>max? [t]
[f]
max赋值z 输出max
例题2.2活动图
C++程序设计
if 语句
• if (表达式) 语句1; • if (表达式) 语句1; else 语句2;
int sum; //和 cout << "请输入第1个加数:" << endl; cin >> js1; cout << "请输入第2个加数:" << endl; cin >> js2; sum = js1 + js2; // 和 = 加数1 + 加数2 cout << js1 << " + " << js2 << " = " << sum << endl;
嵌套在if分支中: if (<表达式1>) if (<表达式2>) <语句1>; else<语句2>;
C++程序设计
配对关系实例:2.2.2
if 语句的嵌套 – ”就近配对“原则,相距最近且

else和if的配对关系
还没有配对的一对if和else首先 //语句1: 配对 if(n%3==0) if(n%5==0) cout<<n<<″是15的倍数″<<endl; else cout<< n<<″是3的倍数但不是5的倍数″<<endl; //语句2: if(n%3==0) { if(n%5==0) cout<<n<<″是15的倍数″<<endl; } else cout<< n <<″不是3的倍数″
C++程序设计
if(delta==0) { cout<<"方程有两个相同实根:"; cout<<"x1=x2="<<-b/(2*a)<<endl; } else if(delta>0) { delta=sqrt(delta); x1=(-b+delta)/(2*a); x2=(-b-delta)/(2*a); cout<<"方程有两个不同实根:"; cout<<"x1="<<x1<<'\t'<<"x2=“<<x2<<endl; } else cout<<"方程无实根!"<<endl; //delta<0 return 0; }
C++程序设计
练习:把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转 换为小写字母;否则,不转换。
改写为条件表达式
#include <iostream> using namespace std; int main() { char ch; cout << "ch = "; cin >> ch ; if ( ch >= 'A' && ch <= 'Z' ) ch += 32 ; cout << ch << endl ; return 0; }
两个语句的差别只在于一个“{}”,但表达的逻辑关系却完全不同。
C++程序设计 【例2.8】 求一元二次方程 ax2+bx+c=0 的根。 其中系数a(a≠0)、b、c的值由键盘 输入。 分析:输入系数a(a≠0)、b、c后, 令delta= b2–4ac,结果有三种情况: *若delta=0, 方程有两个相同实根; *若delta>0, 方程有两个不同实根; *若delta<0,方程无实根。
C++程序设计
第二、case之后可以是直接的常量数值,如1,2,也可以是一个使用常 量计算式,如2+2等,但不能是变量或带有变量的表达式,如 a * 2等。当然 也不能是实型数,如4.1,或2.0 / 2 等。 switch(formWay) { case 2-1 : //正确 ... case a-2 : //错误 ... case 2.0 : //错误 ... } 另外,在case 与常量值之后,需要一个冒号,请注意不要疏忽。
输入a,b,c 求delta delta等于0 [f] [f] [t] 输出无实根 输出两不等实根 输出两相等实根 delta大于0 [t]
例题2.8活动图
C++程序设计
#include <iostream> #include <math> using namespace std; int main() { float a,b,c; float delta,x1,x2; cout<<"输入三个系数a(a!=0), b, c:"<<endl; cin>>a>>b>>c; cout<<"a="<<a<<'\t'<<"b="<<b<<'\t‘<<"c="<<c<<endl; delta=b*b-4*a*c;
算法是程序设计学习的重点。
C++程序设计
算法描述的三种基本结构
• 任何算法的描述都可以分解为三种基本结构或它们的组合
– 顺序结构 – 分支结构 – 循环结构
C++程序设计
顺序结构
【例2.1】 求两数之和。(加法器)
执行: 单步F10
#include<iostram> using namespace std; int main() { int js1,js2; //加数1,加数2
C++程序设计
条件运算符“?:”
• 三元运算符“?:”可以用来简化if语句表达。其构成的表达式格式为:
– 表达式1 ? 表达式2 : 表达式3
例如:
int a=6,b=7,min; 1) min=a<b? a:b; //min=6 2) min=a<b? ++a:++b; //min=7 a=7 b=7 3) min=a<b? a++:b++; //min=6 a=7 b=7
false (0)
表达式
true (非0)
true (非0)
表达式
false (0)
Βιβλιοθήκη Baidu
语 句
语句 1
语句 2
C++程序设计
逻辑运算、逻辑表达式
• 逻辑运算:
– 用于判断分析,运算符包括关系和逻辑运算符。
• 关系运算符:
– 包括:(大于)、(大于等于)、(小于)、(小于等于); = =(等于)和!=(不等于) 。关系运算符完成两个操作数大小的 比较,结果为逻辑值true(真)或false(假)。
a>=b? 输入3个数a,b,c
int main(){ [t] [f] int a, b, c, max; max赋值b max赋值a cout<<"输入三个正数:"; cin>>a>>b>>c; [f] c>max? cout<<"a="<<a<<'\t'<<"b="<<b [t] <<'\t„<<"c="<<c<<endl; max赋值c if(a>=b) max=a; else max=b; 输出max if (c>max) max=c; cout<< “最大数为:”<<max<<endl; return 0; 课后编程:任意4个数找最小值; 例题2.5活动图 }
C++程序设计
第三、break 的作用。 break 使得程序在执行完选中的分支后,可以跳出整个switch语句(即跳到 switch接的一对{}之后),完成switch。如果没有这个break,程序将在继 续前进到下一分支,直到遇到后面的break或者switch完成。 第四、csae 和 default 仅起语句标号作用,不能控制程序流程,一旦选中 一个case分支后,将继续往下顺序执行语句序列。根据以上特点,可以写 出多个 case 共执行一个语句的形式
JAVA程序设计(专科)
C++程序设计
第二章 基本控制结构程序设计
重点: • 编程的思维 • 分支结构的实现(if 语句、switch 语句) • 循环结构的实现(while语句、do while语句、for语句)
C++程序设计
算法的概念
算法:
算法是解决问题的步骤。
计算机算法的特征:
(1) (2) (3) (4) 可执行性 确定性 有穷性 可输入输出信息
C++程序设计
程序实例
#include <iostream.h> 跳出switch语句 int main () { char grade ; cout << " Input grade of score (a_d) : " << endl ; cin >> grade ; switch ( grade ) { case 'a' : cout << " 85__100 \n " ; break; case 'b' : cout << " 70__84 \n " ; break; case 'c' : cout << " 60__69 \n " ;break; case 'd' : cout << " < 60 \n " ; break; default : cout << " error \n " ; } return 0; }
C++程序设计
第五、default是可选中,如果没有default,程序在找不到匹配的case分支 后,将在switch语句范围内不做什么事,直接完成switch。
第六、switch并不能代替所有有if..else...语句。它在对变量做判断时,只能 对整型或字符型的变量做判断。另外,switch也只能做“值是否相等”的判 断。不能在case里写条件: switch (i) { case (i >= 32 && i<=48) //错误!case里只能写变量的可能值,不能写条件。 ... } //在这种情况下,只能通过 if...else来实现。
在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步 进行下面的运算。称为“求值优化”。 可见: 表达式 c++ 已不需要计算所以: c不变仍为 30
C++程序设计
程序实例
【例2.5】 从键盘上输入三个整数,输出其中的最大数。
分析:读入三个数,先求出两个数中较大者, 再将该大数与第三个数比较,求出最大数。
C++程序设计
• 逻辑运算符
运算符 名称
!
语义
逻辑非, 操作数的值为真,则结果为假;反之结果为 单目 真 逻辑与, 当两个操作数全为真时,结果为真,否则 双目 为假; 逻辑或, 两个操作数中有一个为真,则结果为真; 双目
&& ||
C++程序设计
逻辑表达式求值的优化(*)
已知: 求: int a=10, b=20, c=30; a<b || c++ //结果以及a,b,c的值
在C++中这两个逻辑值与整数之间有一个对应关系,真对应1,假对应0;反 过来,0对应假,非0整数对应真。所以逻辑运算结果可以作为整数参与算术 运算、关系运算、逻辑运算及其他运算。
C++程序设计
• 关系表达式
– 由关系运算符连接的表达式。是一种简单的逻辑表达式。值为true 或false。
例如: a+b>c+d /*等同于(a+b)>(c+d),结果为0或1*/ y=a>b /*计算a>b的值0或1赋给y,y的值为0或1*/ a>b>c /*等同于(a>b)>c,先求a>b 的值, 再将结果0或1与c比较大小*/ 注意:数学式a>b>c ,应表达为a>b&&b>c
C++程序设计
执行流程
表达式
=常量1
=常量2
=常量3
=常量n
=常量n+1
语句 1
语句 2
语句 3
语句 n
语句n+1
C++程序设计
几个非常重要的概念
第一、switch ( 表达式 )中,只能是整型或字符类型或枚举类型。枚举类型 (enum)内部也是由整型或字符类型实现。不能是实型(浮点型)。 如: float a = 0.123; switch(a) //错误!a不是整型或字符类型变量。 { .... }
ch = ( ch >= 'A' && ch <= 'Z' ) ? ch + 32 : ch ;
条件运算符“?:”
C++程序设计
switch语句
• 根据一个整型表达式的值决定程序分支
switch ( 整型表达式 ) { case 常量表达式 1 : 语句 1 case 常量表达式 2 : 语句 2 „ case 常量表达式 n :语句 n default : 语句 n+1 }
相关文档
最新文档