程序的3种基本结构:顺序、选择、循环(当型、直到型)
If语句3种形式
1.if (表达式) 语句
2.if (表达式) 语句1
else 语句2
3.if(表达式1)语句1
else if(表达式2) 语句2
……
else if(表达式n) 语句n
else 语句n+1
注意:
1.if后可跟复合语句
2.注意;的位置
3注意多重if else的搭配
条件运算符,是C++中的唯一三目运算符:表达式1?表达式2:表达式3
max=a>b?a:b;
注意:
1.条件运算符的优先级比赋值运算符高
2.结合方向自左至右
3.三个表达式的类型可以不同
switch语句:多分支选择语句
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
……
case 常量表达式n: 语句n
default: 语句n+1
}
流程:
先计算表达式的值,然后顺序地与case子句中所列出的各个常量进行比较,
若表达式的值与常量中的值相等,就开始进入相应的case一句执行程序,遇到case和default也不再进行判断,直至switch局域结束。
如果要使其在执行完相应的语句后中止执行下一语句,可以在语句后加break。
注意:
1.switch与if不同,它仅能判断一种逻辑关系,即表达式是否等于指定的常量,而if可以计算并判断各种表达式
2.case子句后必须为常量,常常是整型和字符型
3.default可以省略。这时不满足条件什么也不执行
4.case和default只起标号的作用,顺序可以颠倒,颠倒时注意后面的break语句
5.多个case语句可以共用一组程序。
case ‘A’:
case ‘B’:
case ‘C’: cout<<“pass!\n”;
while语句:
while(表达式)
{语句组1}
{语句组2}
注意:
1.当循环语句超过一条时,要用{}将语句组合在一起。
2.循环体内或表达式中必须有使循环结束的条件,即一定有一个循环变量。
3.while表达式可以成为语句,要特别小心。
例题:
以下语句,循环退出时x为多少?
x=10;while(x!=0) x—; x=0
x=10;while(x) x—; x=0
x=10;while(x—) ; x=-1
x=10;while(—x) ; x=0
do—while语句
do
{语句组1}
while(表达式);
{语句组2}
注意:
do—while首先执行循环体,然后再判断表达式,至少执行一次循环体。
当第一次循环表达式的值为真时,while与do—while的结果完全一样,否则结果不相同。
for语句:(循环变量赋初值;循环结束条件;循环变量增值)
for(表达式1;表达式2;表达式3)
{语句组1(循环体)}
{语句组2}
注意:
1.当型循环,条件测试是在循环开始时进行,有可能也进入不了循环体。
2.for语句中的三个表达式可以部分省略或全部省略,但;不能省略,若省略表达式2,则表示循环条件为真。
3.for语句中三个表达式可以使任何有效的C语言表达式
循环的嵌套:一个循环体内又包含另一个完整的循环体
注意:
1.循环体内有多个语句要用{}括起来。
2.书写格式要清晰。
最大公约数:能同时被m和n整除的最大数
最小公倍数:两数之积除以最大公约数
欧几里得算法(m>n)
1.m被n除得到余数r(0<=r<=n) r=m%n
2.若r=0,则算法结束,n为最大公约数,
3.否则m<-n,n<-r,继续1
最大公约数:
r=m>n?n:m
for(i=1;i<r;i++)
if(m%i==0&&n%i==0)
a=i;
cout<<a;
打印每位数:先%再/
while(n)
{
cout<<n%10<<‘\t’;
n=n/10;
}
fabs是求绝对值的函数,fabs(i)<1e-5,表示i的绝对值小于10^-5,通常用于条件判断语句中,进行精度控制。
1表示尾数,e表示阶码标志,-5表示阶码
break语句和continue语句:
break在switch语句中,可以使流程跳过判断体,执行下面的程序,
在循环体中,也可以从循环体内跳出循环体,提前结束循环,
break只能退出一层循环或switch语句。
continue的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环。