c++分支结构程序设计总结
写在前面——什么是分支结构:
分支结构用来将输入值按符合的不同条件分类,执行相应的语句。
分支语句用于实现分支程序设计。
分支程序有两路分支结构和多路分支结构,两路分支结构可用if语句实现,多路分支结构可以用嵌套的if语句或switch语句实现。
目录
一、运算符
二、运算符优先级
三、分支结构语句
四、总结与心得
一、运算符
——进行运算中运用的符号
⒈算术运算符
⒉关系运算符
⒊逻辑运算符
⒋位运算符
⒌赋值运算符
⒍杂项运算符
⒈算术运算符
假设变量 A 的值为 10,变量 B 的值为 20,则:
⒉关系运算符
假设变量 A 的值为 10,变量 B 的值为 20,则:
⒊逻辑运算符
假设变量 A 的值为 1,变量 B 的值为 0,则:
⒋位运算符
位运算符作用于位,并逐位执行操作。
假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
假设变量 A 的值为 60,变量 B 的值为 13,则:
⒌赋值运算符
⒍杂项运算符
下表列出了 C++ 支持的其他一些重要的运算符。
二、运算符优先级
运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。
某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。
例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。
下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。
三、分支结构语句
⑴if语句
⑵条件表达式
⑶switch语句
⑴if语句
1.含义:根据条件判断,来执行不同语句
所以分支结构都可以使用if语句
2.格式:
①if语句
② if else语句
③ if(表达式1) 语句1
else if(表达式2) 语句2
…
else if(表达式n) 语句n ...
else 语句n+1
3.例题:
利用 if语句判断小明的成绩在班里的层次(满分100):
>=90分,优秀;>=80分,良;>=60分,及格;<60,分,不及格。
#include<iostream>
using namespace std;
void main() {
float score;
cout << "please input socre :";
cin >> score;
if (score>100 ||score<0)
cout << "数据错误" << endl;
else if (score>=90)
cout << "优秀" << endl;
else if (score >= 80)
cout << "良" << endl;
else if (score >= 60)
cout << "及格" << endl;
else
cout << "不及格" << endl;
system("pause");
}
注意:
1、有if不一定有else ,但是有else必定有if
2、if 语句后面不要加分号,if(0);相当于if(0){ } ,不执行后续语句。
如果if满足不执行任何语句可以加分号
3、关于{}的省略
不加{} if只匹配离他最近的一句
如果{}只有一句 那么可以省略{}
刚刚开始写不熟练就不要省略了
4、条件的写法
if(20==x) 涉及到 == 的时候,常量可以放左边,避免少写=
⑵条件表达式
⒈含义:通过是否满足某个条件,来进行有选择的取值——常应用于分段函数来简化程序
⒉格式:表达式1 ? 表达式2 :表达式3
首先计算第一个表达式的值,若为真,则只计算表达式2,并作为整个表达式的值,否则,只计算表达式3的值
3.例题:
①用条件表达式输出,一个数是偶数输出”is even",奇数输出“is odd”
cin>>num;
cout<<((num%2==0)?"is even" : "is odd")<<endl;
②输出100个10-20的随机数,10个一换行
srand(time(0));
for (int i = 1;i<101;i++)
{
cout<<(10 +rand()%(20-10))<<((i%10==0) ? "\n" : " ");
注意:使用条件表达式时,需要满足的条件和计算表达式必须非常明确
⑶switch语句
⒈含义:switch——开关,根据取值的不同,来执行不同语句
当用if语句过于复杂时可以用switch语句简化过程,
但是当变量过于复杂时不适用。
2.格式:
switch (表达式)
{
case常量表达式 1:语句1; break;
case常量表达式 2:语句2; break;
case常量表达式 n:语句n; break;
default: 语句n+1; break;
}
3.例题:
输入数字1-7:
如果输入1,输出星期一;
如果输入2,输出星期二;
……
如果输入7,输出星期日;
#include<iostream>
using namespace std;
void main() {
int number;
cout << "please input a integer which between 1 and 7 :";
cin >> number;
switch (number)
{
case 1:cout << "星期一" << endl;break;
case 2:cout << "星期二" << endl;break;
case 3:cout << "星期三" << endl;break;
case 4:cout << "星期四" << endl;break;
case 5:cout << "星期五" << endl;break;
case 6:cout << "星期六" << endl;break;
default:cout << "星期日" << endl;break;
}
system("pause");
}
注意:(1)case后面只能是整型和单个字符, 不可以是小数和字符串(中文算字符串)。且case后面的常量表达式的类型必须与其匹配,case后面的值不能相同。
(2)以case中的常量表达式值为入口标号,由此开始顺序执行。
每个case分支最后应该加break语句。没有break继续执行后面的case语句。
(3)case值是语句标号,每个case常量表达式的值必须互不相同。
(4)default语句是可选的(为了规范,最好写上) 所有可能的选项都能列举出来就用switch (可以和枚举搭配),但是一个switch里只能有一个default
补充:
break和continue语句:
break作用:中止switch语句的执行,并跳出switch语句;
从最近的封闭循环体中跳出,转而执行循环体的下一条语句。
【只能用于switch和循环语句中!】
continue作用:结束本次循环,执行表达式3,开始下一轮循环。
【并不从循环体中跳出,除非已处于循环结束点】
四、总结与心得
㈠总结犯过的错误
1.使用函数公式时忘记在开头加cmath
2.在#include<iostream>和if后顺手加";"
3.忘记切换英文标点
4.在if语句中漏加或多加“{”、“}”
5.定义变量时忘记赋值
㈡做题过程中发现的注意点
1.变量中输出a为cout<<'a' ,
输出pass为cout<<"pass",注意单引号和双引号
2.保留小数点后两位:
#include<iomanip>
float p
p=a/3.0
cout<<setprecision(2)<<fixed<<p<<endl
3.int型与double型同时计算,按double型输出,如需整数,则可取整
函数取整:
#include<cmath>
q=floor(q) 下取整 如floor(2.5)=2.0
q=ceil(q) 上取整 如ceil(2.5)=3.0
4.定义一个四位数:int a[4]
5.在一个字符串中将前三位字符改成“a”:
for (int i=0 ; i<3 ; i++){
str[i]='a' }
6.相等的“==”写成赋值的“=”
㈢学习感悟
1.学习中理论需要与实践相结合
我看书时有一些知识点单看定义不是很明白,然后结合后面的例题,就能弄清楚知识点的运用形式
2.简单常规的地方也不能忽视
我有一次编写openjudge的一道题,在写代码软件上通过后复制到网站上,漏了复制c++格式的第一行#include<iostream>,而检查时只是从思路问题和答案的各种可能行考虑,反复修改程序几次都不能通过,用不同办法重新编写也无法通过。最后束手无策,想要放弃的时候,从开头看了一下,才发现复制的固定格式少了第一行,加上去之后就通过了。
3.在改正错误时能学会新知识,锻炼思维
虽然我漏掉格式第一行导致程序几次不能通过,但是在改程序的过程中反复思考各种不同解题思路,将一道题写了好几种不同的解法,并且在写新解法的过程中查找资料信息,学会了新的语句,把程序改进的更简洁严密。
最后:希望我可以理解并掌握c++知识,做到熟练运用c++语言解决问题。
参考:《信息学奥赛课课通》,网络资料