✨✨欢迎大家来到Celia的博客✨✨
🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉
所属专栏:C语言
个人主页:Celia's blog~
目录
引言
1. if语句
1.1 if
1.2 else
1.3 if的嵌套
2. 操作符
2.1 关系操作符
2.2 条件操作符
2.3 逻辑操作符
2.3.1 逻辑取反运算符 !
2.3.2 逻辑或运算符 | |编辑
2.3.3 逻辑与运算符 &&
3. switch语句
4. 循环
4.1 while循环
4.2 for循环
4.3 do while循环
5. break 与continue语句
6.循环的嵌套
7.goto语句
引言
在C语言中,有三种结构,分别是顺序结构,选择结构,循环结构,这篇文章将会简单介绍选择结构和循环结构。
1. if语句
1.1 if
if语句的语法如下:
if(表达式)
{
语句
}
在C语言中,0为假,非0为真, 如果表达式里的结果为真,就执行下面的语句,反之不执行。
举例:
#include<stdio.h>
int main()
{
int a = 3;
if(a==3)
{
printf("%d", a);
}
return 0;
}
这个程序会判断a是否等于3,如果是则输出a的值。结果如下:
注意: 如果if后只有一条语句,是可以不加花括号的,如果if后有多条语句,就必须加上花括号。
1.2 else
如果一个数不是偶数,那么这个数一定是奇数,我们用if else语句来实现判断一个数是奇数还是偶数,代码如下:
#include<stdio.h>
int main()
{
int a ;
scanf("%d", &a);
if (a % 2 == 0)
{
printf("偶数\n");
}
else
printf("奇数\n");
return 0;
}
注意
1.else的后面是不能加“ ()”的。在这里,如果a可以被2整除,就执行if后的语句,除这种情况外,都会执行else后的语句。
2.else总是和最近的if进行匹配。
1.3 if的嵌套
在if else语句中,else后的语句中可以包含if,形成多重判断。举一个简单的例子。
输入一个人的成绩 grade
- 90<grade<=100,输出A
- 80<grade<=90,输出B
- 59<grade<=80,输出C
- 0<grade<=59,输出D
#include<stdio.h>
int main()
{
int grade ;
scanf("%d", &grade);
if (grade>90 && grade<=100)
{
printf("A");
}
else
{
if (grade > 80 && grade <= 90)
{
printf("B");
}
else
{
if (grade > 59 && grade <= 80)
{
printf("C");
}
else
{
if (grade > 0 && grade <= 59)
{
printf("D");
}
}
}
}
return 0;
}
我们也可以简化一下代码:
#include<stdio.h>
int main()
{
int grade ;
scanf("%d", &grade);
if (grade>90 && grade<=100)
{
printf("A");
}
else if (grade > 80 && grade <= 90)
{
printf("B");
}
else if (grade > 59 && grade <= 80)
{
printf("C");
}
else if (grade > 0 && grade <= 59)
{
printf("D");
}
return 0;
}
2. 操作符
2.1 关系操作符
- >:大于运算符
- <:小于运算符
- >=:大于等于运算符
- <=:小于等于运算符
- ==:等于运算符
- !=:不等于运算符
例如:
a>b
a<b
a>=b
a<=b
a==b
a!=b
关系表达式通常返回 0 或 1 ,表示真假。
注意:多个关系运算符不宜连用,比如a>b>c,实际上运算的形式为:
(a>b)>c
在上面的式子中,(a>b)会返回0或1与c进行比较。
正确的写法为:
a>b && b>c
2.2 条件操作符
条件操作符也叫三目操作符,形式如下:
exp1 ? exp2 :exp3
它的意思是,判断 exp1的真假,如果为真,exp2计算,计算的结果就是整个表达式的结果,如果为假,exp3计算,计算的结果就是整个表达式的结果。
比如下表面这段代码:
#include<stdio.h>
int main()
{
int a, b;
scanf("%d", &a);
if (a > 5)
b = 3;
else
b = 6;
printf("%d", b);
return 0;
}
我们可以将它改造成:
#include<stdio.h>
int main()
{
int a, b;
scanf("%d", &a);
b = a > 5 ? 3 : 6;
printf("%d", b);
return 0;
}
2.3 逻辑操作符
- &&:逻辑与运算符(两侧表达式都为真,则为真,否则为假)
- | |:逻辑或运算符(两侧表达式有一个为真,则为真)
- !:逻辑取反运算符(改变表达式的真假)
2.3.1 逻辑取反运算符 !
#include<stdio.h>
int main()
{
int a=0, b=10;
if(!a)
printf("%d", b);
return 0;
}
如果a为真,!a就为假,如果a为假,!a就为真。
2.3.2 逻辑或运算符 | |
#include<stdio.h>
int main()
{
int a=0, b=10;
if(a==0||b==5)
printf("%d", b);
return 0;
}
a==0 与 b==5 这两个条件满足其中一个即为真。
2.3.3 逻辑与运算符 &&
#include<stdio.h>
int main()
{
int a=0, b=10;
if(a==0 && b==5)
printf("%d", b);
return 0;
}
a==0 与 b==5 这两个条件必须同时满足才为真。
如上所示,什么都没有输出。
3. switch语句
除if语句外,switch语句也是一种分支结构,它是一种特殊形式的if else语句,用于判断条件有多个结果的情况。
#include<stdio.h>
int main()
{
int a;
scanf("%d", &a);
switch(a)
{
case 1 :
printf("A\n");
break;
case 2 :
printf("B\n");
break;
default:
printf("C\n");
}
return 0;
}
这段代码会判断a的值,如果a的值为1,则执行case 1后的语句,如果a的值为2,则执行case 2后的语句,除了这两种情况之外,执行default后的语句。
当switch语句进入case后,会一直执行下去直到遇到break。如果删掉break,那么执行结果是这样的:
#include<stdio.h>
int main()
{
int a;
scanf("%d", &a);
switch(a)
{
case 1 :
printf("A\n");
case 2 :
printf("B\n");
default:
printf("C\n");
}
return 0;
}
所以一定不要忘了在每个case和default后加上break。
注意:
1.switch后括号内的值必须是整型表达式(字符会转换成ASC码)。
2.case后的值,必须是整形常量表达式(字符会转换成ASC码)。
3.case和default没有先后的位置限制。
4. 循环
4.1 while循环
while循环的结构如下:
while(条件)
{
循环体;
}
当程序执行到while循环时,会先判断条件是否为真,如果为真,则执行一次循环体,然后再次进行条件判断。如果循环体执行了n次,那么条件语句则执行了n+1次。
4.2 for循环
for循环的结构如下:
for(表达式1;条件 ; 表达式3)
{
循环体;
}
当程序执行到for循环时 ,会先执行表达式1,之后进行条件判断,如果为真,则执行一次循环体,最后执行表达式3,再进行条件判断。如果循环体执行了n次,那么条件语句则执行了n+1次。
4.3 do while循环
do while循环的结构如下:
do
{
循环体;
}while(条件);
当程序执行到do while循环时,会先执行一次循环体,然后进行条件判断,如果为真,则执行一次循环体,再进行条件判断。如果循环体执行了n次,那么条件语句则执行了n次。 注意do while循环的while后需要加上一个分号。
5. break 与continue语句
跳出循环的方法除了不满足循环条件外,还可以用break和continue语句来对循环进行控制。
- break:跳出整个循环体。
- continue:跳出当前循环,进行下一轮循环。
来举一个简单的例子:
在这段代码中,当 i 等于1 的时候,跳出循环,只打印了2个c。
在这段代码中,当i等于1的时候,执行continue语句,跳出当前一轮循环,并进行下一轮循环。故当i等于1的时候没有打印c,总共只打印了4个c。
6.循环的嵌套
这段代码中, 在for循环里嵌套了一个for循环。外层循环会执行4次,每次外层循环会执行一次内层循环,每次内层循环会打印4个 * ,之后在每次外层循环最后进行换行,就可以打印出上图所示的图案。当然,while循环,do while循环,for循环都是可以互相嵌套的,需要视不同情况进行选择。
7.goto语句
goto语句的结构如下:
again:
代码段
goto again;//again可以替换成其他的字符,仅仅作为标识使用。
goto语句可以使程序跳转到任意代码段,如下图所示:
在这段代码中,当执行到if语句时,判断条件为真,使程序跳转到了对应的代码段,这就使得c被打印了2次。goto语句虽然方便,但是在日常代码的书写时不推荐使用,因为不当的使用goto语句会使程序逻辑被破坏,造成不可预想的后果。
以上就是分支与循环的全部内容啦~