概览
*if语句
*关系操作符,逻辑操作符
*switch语句
*while循环
*for 循环
*do while循环
*break与continue语句
前言:
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构。
我们使用if语句,switch实现分支结构,使用for,while,do while实现循环结构。
正文
if语句
*基本结构:
if()
()内为真则语句执行,非真则不执行。C语言中0为假,非0表示真。
*else
用 if … else 语句来决定程序如何执行;
如以下用以判断一个数是不是三的倍数的代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
scanf ("%d", &a);
if (a % 3 == 0)
{
printf("%d是3的倍数",a);
}
else
printf("%d不是3的倍数",a);
return 0;
}
*嵌套if
通常用于多重判断,如在判断一个数是否是3的倍数的,判断它是正数还是负数
在遇到多重if与else时,注意 if 总与最近的 else 匹配。如以下例子
include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
上述代码的输出结果是什么?是什么都不输出!
注意上文,if总与离得最近的else匹配
关系操作符与逻辑操作符
关系操作符
1.> 大于运算符
2< 小于运算符
3.<= 小于等于运算符
4.> 大于等于运算符
5.相等运算符
6.!=不等运算符
注意:
1.不可把 * 写作 =
2.多个关系操作符不宜连用,如:
i<j<k
上述关系式不会报错,但实际执行顺序确是:
(i<j)<k
i与j进行比较后返回0或1,所以最终会是0或1与k的比较。如果想达到目的,应采用以下写法:
i<j && j<k
*逻辑操作符
1.!取反操作符(改变表达式真假)
2.&&与运算符(两侧都为真才是真,否则为假)
3. || 或运算符(两侧至少有一个为真就是真)
*短路
C语言逻辑运算符有一个特点:它总先对左侧表达式求值,再对右边表达式求值,这个顺序是确定的。如果左边表达式满足逻辑运算符的条件,就不再对右边表达式求值,这就是”短路“。
如下
if(a >= 3 && a<=5)
若a不能左边满足a<=3的条件,那么代码运行到这里就不会再对右边进行判断
又如以下代码
if(a ==2 || a==1 || a ==4)
如果a=2,那么不用再判断a是否等于1或4。像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进⾏计算的运算称为短路求值
switch语句
switch用于判断条件有多种结果的情况
基本结构
switch(...)
case ... :
statement
case ... :
statement
...
fefault:
statement
需注意:
1.switch后的”…"必须是整型表达式
2.case后的值必须是整型常量表达式
3.case和后边的数字之间要有空格
4.每一个case语句中的代码执行完成之后,需加上break才能跳出这个switch语句。如果一个case语句后面没有break,代码会继续向下执行直到遇到break语句或switch语句结束。至于break的使用与否看实际情况
*switch语句中的default
当switch语句中的所有case情况都不满足时,就会执行 default 语句
需注意:default在switch语句并无位置要求,不过通常将其放在最后处理。
while循环
while语句基本使用:
#include <stdio.h>
int main()
{
int i = 0;
while(i == ...)
{
printf("%d ",i);
i++;
}
return 0;
}
for循环
*for语句语法形式:
for(1;2;3)
1:循环变量的初始化
2:循环条件结束条件的判断
3:调整循环变量
初始化只会执行一次,接着便会执行循环结束条件的判断与变量调整,也就是说,整个循环中只有2、3部分及循环语句在循环
*基本使用:
#include<stdio.h>
int main()
{
int i =1;
for(i =1; i <=10;i++)
{
printf("%d ",i);
}
return 0;
}
do while循环
基本使用:
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}
while(i<=10);
return 0;
}
对比while循环,do while循环相当于是在循环体执行一次之后再进行循环结束条件判断
break和continue
*break
break可永久终止循环,如以下代码:
#include<stdio.h>
int main()
{
int i = 1;
for(i = 1;i<=10;i++)
{
if(i == 5)
{
break;
}
printf("%d ",i);
}
return 0;
}
运行会后输出:
这就是break的作用
*continue
将上述代码中的break换成continue再运行
#include<stdio.h>
int main()
{
int i = 1;
for(i = 1;i<=10;i++)
{
if(i == 5)
{
continue;
}
printf("%d ",i);
}
return 0;
}
会得到:
因此continue可以在我们需要对满足某个条件且不想执行后续操作时使用
完