目录
第三章知识点合集
一.逻辑运算符 (见第一章知识点合集)
二.逻辑表达式
条件表达式
单分支if语句
双分支if 语句
多分支if语句
If的嵌套使用(进行多条件判断)
switch 实现分支结构(实现多条件判断)
break的作用:
循环结构
循环三要素
while循环
do…while循环
三.for循环
循环中断
Break的作用:
continue语句
循环嵌套
逻辑表达式:用逻辑运算符将两个表达式连接起来的式子。
格式:表达式1 逻辑运算符 表达式2 或者 逻辑运算符 表达式1
逻辑表达式的结果是一个逻辑值"真"或"假",即为"1"或"0"
注意
int a=3,c=5;
bool d = a<1&&c=c+1; 相当于 bool d = (a<1&&c)=c+1;
例子:
int a = 2,c=3;
输出结果:
0
2
3
例子:
int a =3,c=5;
cout<1||(c=c+1)<
cout<
输出结果:
1
5
条件表达式:由条件运算符将3个表达式连接起来的式子。
格式:
表达式1?表达式2:表达式3
分析:
条件表达式的执行流程为先计算表达式1的值,若值为非0,表示条件为真,则将表达式2的值作为整个条件表达式的值,否则将表达式3的值作为整个条件表达式的值
例子:
int a=1,b=3;
max=a>b?a:b; cout<
If(表达式)
{
语句1;
}
注意:
如果表达式成立,则执行语句一
例子:
int main()
{ float x = 1.0;
scanf("%f", &x);
if (x < 0)
{ x = -x; }
printf("%.2f", x); //保留两位小数(.2f)
return 0; }
If(表达式)
{
语句1;
}
else
{
语句2;
}
注意:
当表达式成立的话则执行语句1,不执行语句2,当表达式不成立的话则执行语句2,不执行语句1;
例子
int main()
{
int a = 0;
int b = 0;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
if (a > b)
printf("两个整数中的最大值为:%d\n", a);
else
printf("两个整数中的最大值为:%d\n", b);
return 0; }
If(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else if(表达式3)
{
语句3;
}
else
{
语句4;
}
注意:
当表达式1成立的话则执行语句1并且其他表达式不在进行判断且不输出其他语句;当表达式1不成立则进行表达式2的判断当表达式2成立的话则只输出语句2且其他表达式不再输出;剩下一个else if 同理;当表达式1,2,3都不成立,则输出else下面的语句4。
例子
#include
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("少年\n");
}
else if (age >= 18 && age < 30)
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年\n");
}
else if (age >= 50 && age < 80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
return 0;
}
A:
If(表达式1)
;
If(表达式2)
{
语句1;
}
B:
If(表达式3)
If(表达式4)
{
语句2;
}
A:当表达式1成立时则执行空语句;
B:当表达式3,4都成立时则执行语句二。
B也相当于:
If(表达式3)
{
If(表达式4)
{
语句2;
}
}
注意:第一个括号与最后一个括号相配对
A:
switch(表达式)
{
case 常量1 : 语句1;
case 常量2 : 语句2;
⋮ ⋮ ⋮
case 常量n : 语句n;
default : 语句n+1;
}
switch 实现分支结构:
当表达式的值与对应的常量值想等的话则执行对应常量后面的语句并且重该语句开始执行完后面的全部语句,当没有对应的常量与其想等的话则执行default后面的语句
B
switch(表达式)
{
case 常量1 : 语句1; break;
case 常量2 : 语句2; break;
⋮ ⋮ ⋮
case 常量n : 语句n; break;
default : 语句n+1; break;
}
注意:
当每条语句后面都加上break的时候,则执行完对应语句以后不会接着往下执行其他语句
跳出switch多分支结构或者跳出循环结构当遇到双层或者多层循环结构的话且break出现在内层循环结构则跳出对应的内层循环而不是跳出全部的循环结构!!!
例子:
int q=0;
for(i=0;i<3;i++)
for(int j = 0;j<3;j++)
{
q+=i;
break;
}
cout<
输出结果为:
0
语法结构:
while(表达式)
{
循环体语句
}
总结:
计算表达式的值,其值如果为非0(真),则执行循环体,每执行一次,就计算一次表达式的值,直到表达式的值为0(假)时结束循环,转去执行while的后续语句。while属于当型循环。
例题: 计算1加到100的总和
#include
int main(void){
int i,sum;
sum=0;i=1;
while(i<=100){
sum+=i;
i++;
}
printf("sum=%d\n",sum);
return 0;}
注意
1、先判断表达式,后执行循环体,循环体有可能一次也不执行。
2、while(表达式)括号后面一般不要加“;”,如果加上,则认为循环体是空语句。
3、while后小括号的表达式可以是任意表达式,一般情况下是关系表达式、逻辑表达式或整数表达式,在计算时如果是非零,则其值被认为是真,否则认为是假。
do…while语句是无论如何都要执行一次循环体语句,然后再看循环条件是否成立,决定后续的执行路径。
do
{
循环体结构
}
while(表达式);
功能
当流程到达do后,先执行一次循环体,然后再计算表达式的值。若值为真,则再执行循环体;否则退出循环而执行do…while后续语句。do…while属于变形的当型循环。与while结构相比,do…while结构至少要执行一次循环体。这样的结构应用在事先知道循环体至少执行一次的程序中。
例子 计算一个不足10位数证书的位数。
#include
int main(void){
int m,n;
scanf("%d",&m);
int t=m;
n=0;
do
{
m/=10;
n++;
}while(m!=0);
printf("%d的位数为%d\n",t,n);
return 0;
}
题目分析:
因为对于一个整数,位数至少是1.所以循环语句m=/10;n++;至少执行一次。
在循环问题中,当循环次数已知时,通常用for语句实现较为简洁、直观。
语法格式:
for(循环变量;循环条件;循环操作)
{
循环体语句
}
例题:求n个分数的和:输入n值,求1/1-1/2+1/3-1/4…的值。
//sign代表正负数的1符号,term代表一个分数,sum代表式子的总和
#include
int main(void){
int n,i;
printf("输入项数:");
scanf("%d",&n);
double sum=0.0,sign=1.0,term;
for(i=1;i<=n;i++){
term=sign/i;
sum+=term;
sign*=-1;
}
printf("sum=%f\n",sum);
return 0;
}
break语句只能用于循环语句和switch语句中,作用是退出结束循环语句和switch语句,接着执行循环和switch语句后续语句
跳过循环体continue后面未执行的语句,接着进行循环下一次迭代。
注意:
外层循环一次,内层全部循环一次(外层循环一次,内层for循环全部执行完成再进行外层的一次循环)
for(循环变量;循环条件;循环操作)
{
for(循环变量;循环条件;循环操作)
{
循环体;
}
}
例题:打印一下图案
*
* *
* * *
* * * *
* * * * *
for(int i=1;i<=5;i++){
for(int j=1;j<=i;j++){
printf("*");
}
printf(‘\n’);
}