今天给大家介绍C语言的分支循环,文章中有什么不对的地方可以指出来,纯手打,有可能打太快了,有错别字,希望大家谅解。
目录
1.if语句
2.关系操作符
3.条件操作符
4.逻辑操作符:&&,||,!
5.switch语句
6.while循环
7.for循环
8.do-while循环
9.break和continue语句
10.循环的嵌套
11.goto语句
一.if语句和else
1.if的语法结构
if(表达式)
语句
注意:在C语言中,0为假,非0为真。
在上述语法结构中,若表达式为真,则执行下面的语句,反之,则不会执行下面的语句。
执行的流程如下:
2.例子
比如我们来判断我们输入的整数是不是偶数
当我们输入16时,%为取余计算,它会显示为偶数
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int x;
printf(“请输入一个整数:\n”);
scanf(“%d”, &x);
if (x % 2 == 0)
printf(“你输入的数为偶数\n”);
return 0;
}
3.else语法结构
if(表达式)
语句1
else
语句2
4.例子
沿用上面的
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int x;
printf(“请输入一个整数:\n”);
scanf(“%d”, &x);
if (x % 2 == 0)
printf(“你输入的数为偶数\n”);
else
printf(“你输入的数不是偶数\n”);
return 0;
}
5.需要注意的点
(1)默认if和else语句都只控制一条语句
同理else也是如此
如何想控制两条语句,或者多条呢,只需要使用{}将代码括起来即可。如下所示:
(2)嵌套
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int x;
printf(“请输入一个整数:\n”);
scanf(“%d”, &x);
if (x > 0)
printf(“你输入的数为正整数\n”);
else if (x < 0)
printf(“你输入的数为负整数\n”);
else
printf(“你输入的数为0\n”);
return 0;
}
上面是嵌套的if语句例子。
(3)悬空else问题
注意:else总是与最近的if匹配
此时,有些同学可能会认为如何x<0会打印呵呵,可是事实是这样吗?
然而输出的结果不是这样,这是因为else会和最近的if相匹配,即如何我们输入1,1,此时就是打印我们的else的内容。
因此我们再写代码的时候,最后养成加{}的习惯。
二.关系操作符
>大于运算符
>=大于等于
<小于
<=小于等于
==相等,注意和=相区别,后者是赋值,前者是用来比较判断的
!=不相等
关系表达式通常返回0和1,表示假和真
最好不要写成0==x,这是不好的习惯
三.条件操作符(三目操作符)
形式如下:
exp1?exp2:exp3
如果exp1为真,取exp2的内容,反之,取exp3的内容
例子如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int x;
printf(“请输入一个整数:\n”);
scanf(“%d”, &x);
int sum = x > 0 ” /> return 0;
}
四.逻辑操作符
!:逻辑取反
&&:逻辑与,要两边都为真,才为真
||:逻辑或,两侧至少一方为真,即为真
逻辑与,输入80 90时。左侧符合了,看右侧,右侧y=90,大于80了,因此为假,真&&假为假
如果改成||时,结果还是这样吗?
此时可见,明显不是了,因为||表示一侧为真,即为真
逻辑非,示例如下
当我输入1作为x 的值时,!x就表示假,假为0,真为非0
五.switch语句
是一种特殊的if else语句,用于判断条件有多个结果的情况
格式如下:
switch(表达式)
{
case 值1:
(break;)
case 值2:
(break;)
default:语句
}
注意的是:表达式必须为整形表达式;
case后的值,必须是整形常量表达式;
case和后面的值之间必须有空格;
每个case语句执行完成之后,需要加上break,这样才能跳出switch语句;
case语句和default语句是没有顺序要求的,当然我们要养成习惯,通常把default语句放在最后处理;
下面是switch语句使用的例子:
输入一位同学的成绩,输出是优秀(90及以上),还是良好(70及以上),还是合格(60及以上)
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
//默认分数区间在0-100分之间
int source;
printf(“请输入一个学生的成绩:\n”);
while (scanf(“%d”, &source) != EOF)
{
switch (source / 10)
{
case 10:
case 9:
printf(“优秀\n”);
break;
case 8:
case 7:
printf(“良好\n”);
break;
case 6:
printf(“合格\n”);
break;
default:
printf(“不及格\n”);
break;
}
}
}
在没有break 的语句中,会继续往下执行,要是case后面的值输入为浮点数,则会显示错误
另外一种格式,需要注意的是,while (scanf(” %c”, &source) != EOF)里面%C前面必须要有个空格,因为调试的时候,回车也算一个字符,错误示例大家可以自行尝试
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
char source;
printf(“请输入一个学生的成绩:\n”);
while (scanf(” %c”, &source) != EOF)
{
switch (source)
{
case ‘A’:
printf(“优秀\n”);
break;
case ‘B’:
printf(“良好\n”);
break;
case ‘C’:
printf(“合格\n”);
break;
default:
printf(“重修去吧,老铁\n”);
break;
}
}
}
六.while循环
1.语法结构
while(表达式)
语句;
2.执行流程
3.具体例子
利用while在屏幕上打印出1-10
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int x = 1;
while (x<=10)
{
printf(“%d “, x);
x++;
}
return 0;
}
七.for循环
1.语法结构
for(表达式1;表达式2;表达式3)
语句
其中表达式1:循环变量的初始化
表达式2:循环结束条件的判断
表达式3:循环变量的调整
2.执行顺序
3.具体示例
其中表达式1-3均可在括号中省略,但会造成死循环等一系列问题,因此我们写代码最好写上,还有就是{}要加上,不管里面几条语句,最好加上。
找出1-100之间为偶数的数
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int i;
for (i = 1; i <= 100; i++)
{
if (i % 2 == 0)
printf(“%d “, i);
}
return 0;
}
八.do-while循环
1.语法结构
do
语句
while(表达式);
2.执行顺序
3.具体示例
由执行顺序可知,do下面的语句必定会执行一次,不管条件是否成立
在屏幕上打印1-10
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int i=1;
do
{
printf(“%d “, i);
i++;
} while (i <= 10);
}
九.break和continue
continue是跳过本次循环continue后面的代码,break则是跳出循环,但是要注意嵌套的循环里面的break就不是直接整个循环都跳出去了,是跳出里面一层。
具体的区别大家可以参考C primer plus或者csdn上查找,找不到的可以评论区留言
十.循环的嵌套
找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字。
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
int i = 0;
//循环产⽣100~200的数字
for (i = 100; i <= 200; i++)
{
//判断i是否为素数
//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf(“%d “, i);
}
return 0;
}
十一.goto语句(很少用到)
简单来说就是跳转指令,goto也不能随意使用,会造成程序执行混乱。
#define _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
printf(“hehe\n”);
goto next;
printf(“haha\n”);
next:
printf(“跳过了haha的打印\n”);
return 0;
}
十二.结尾
有些部分可能欠缺,欢迎大家评论区提问。