在前面的内容中,我们学习了逻辑运算符、移位操作符、键盘输入函数等相关内容的知识,今天我们继续往下学习,今天的主要内容为,判断语句和循环语句
,这些内容将在后续的学习中经常用到,可以说是重中之重,大家务必好好了解和掌握
,也正因如此,将会分为两节进行阐述,本次只讲述判断语句与for循环,其余将在下节进行讲解,此外,
从从本节开始,后续内容不在是单独的某个知识的讲解, 将会运用已讲过的知识,所以要对前面的内容足够理解,不会再单独说明已经讲过的内容
话不多说,开整!!!
= 与 ==
在正式进行两个语句介绍之前,现在这里区分两个符号,看到题目你可能有些惊讶,不都是等号吗,难道还有什么区别,这区可大了去了,在c
语言中,一个等号与两个等号的含义完全不同:
=: 赋值,比如a=3,是将值为3的数赋给a
==:比较,该操作符为比较两个数值是否相等,如1 ==2 ,那么答案肯定是否
介绍完二者的区别之后,就可以开始本节内容的介绍了。
判断语句
基本使用
在生活中,总会有很多的问题发生,你不可能每个答案都回答的很完美,那么当你遇到一个比较棘手的问题,你就不得不进行判断,然后再进行解决,比如说:今天我去不去
工作呢?那么此时就会有两种答案,当然也有两种结果,
1.不去,得,老板发现有你没你都一样,被炒了;
2.去,还是去吧。。
虽然此时才正式的介绍判断语句
,但是在上次得内容中其实已经进行了使用,在c
语言中,判断语句为if
,具体使用方式如下:
if(条件)
{
你要干啥;
}
else if(还有条件)
{
又要干啥
}
//还有?没完了你还
else
{
最后了;
}
上述的框架即为判断语句
的使用方法,你可以有很多的条件,只要你想,你的else if
可以一直写下去,
下面为示例代码:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
scanf("%d%d",&i,&j);
if (i < j)
printf("后输入的数字大\n");
else if (i > j)
printf("先输入的数字大\n");
else
printf("一样大\n");
return 0;
}
可以看到此处代码的功能是:判断先输入的和后输入的数字哪个大,输入的数字不同,也将得到不同的结果,如下:
其余两种自己输入其他数字进行测试吧。
注意事项
{}问题
需要注意的是,
当每个条件下要执行的内容超过一句时,需要用{}括起来,以实现代码块的可读性和可执行性,否则将会报错
上述的代码由于每个条件下的执行命令只有一行,因此,并未加上{}
,如果有多个执行命令而并未在代码块中,如下所示代码:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
scanf("%d%d",&i,&j);
if (i < j)
printf("后输入的数字大\n");
printf("说了你不听");
else if (i > j)
printf("先输入的数字大\n");
else
printf("一样大\n");
return 0;
}
保存编译,结果如下:
因此,当多条代码要在判断语句内执行时,务必要将其放入{}
中。
else的配对
在判断语句中,其中的else
只与最近的if进行配对,与其是否位置对应无关,比如上述代码,改为如下图所示样子:
即使此处的else
和最初的if
对齐,但是若此时输入4,2,输出的结果应该是先输入的数字大,而不是一样大,大家可以自行验证,因此说:
判断语句中,其中的`else`只与最近的if进行配对
循环语句
什么是循环?什么时候要用到循环呢?既然存在循环,就说明某件事你总是要做,往复的进行
。比如:我今天要喝奶茶,我明天还要喝奶茶,后天我也喝,那就说明了喝奶茶对你来说就是一个循环,既然这些的动作是重复的,那么如何在c
语言中描述一件总是要执行的事情----就可以用循环来表述。
在c
语言中,循环有三种,将在此处按照使用的频率
进行顺序讲解。分别为
- for
- while
- do while
for循环
c
语言中,最为常用的循环形式就是此处的for
循环,其主要的使用方式如下:
for (初始化;条件判断;条件调整)
{
你的代码;
}
也就是说,在使用for
循环时,最重要的也就是其后面跟着的三个条件
,其运行的步骤如下所示:
- 首先,执行初始化;
- 其次,判断初始化后的条件是否满足,如果满足则执行你的代码,不满足则退出此循环
- 随后,代码执行后,进行条件调整;
- 再对调整后的进行判断,满足则执行,否则退出,循环往复;
用一张图来表示运行过程(化的有点抽象,见谅)如下:
当代码首次执行
时,其按黑色数字1234顺序执行
,在此之后的循环,均按红色数字123顺序执行
,直到跳出循环为止。
下面以一个示例代码为例:
#include<stdio.h>
int main()
{
int i = 0;
for(i=0;i<10;i++)
{
printf("%d\n",i);
}
return 0;
}
在运行之前,大家可以分析一下结果是什么,大家看看是不是这样一个流程:
只要i<10
,就会把当前的值打印
出来,当i=9时,运行完此次代码后加1变为10,不满足条件,所以跳出循环,那么结果显而易见会是:0 1 2 3 4 5 6 7 8 9;运行,果然不出所料
那个不是没有0哈,是我没截到。既然if判断语句
里可以嵌套if,那么for
里面能不能嵌套for循环呢,当然可以了,如下
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 0;i<3;i++)
{
for(j = 0;j<2;j++)
{
printf("%d\n",j);
}
printf("%d\n",i);
}
return 0;
}
在运行之前,大家可以自己分析一下结果然后再运行,这样有助于大家理解循环,当循环嵌套时
:
内循环结束,才会重新进行外循环
for循环的终止
如果在循环过程中,我不想要执行了,如何人退出呢,此时就需要了另一条命令:break
,当循环遇到此条语句时,结束整个循环,注意是结束整个循环,不是结束本次循环
!!!!!
如以下代码,本来是打印0到3的所有数字,但是当i==2
条件满足时,跳出整个循环,也就不会打印后续的3了,因此将会只打印0和1
;代码和结果如下所示:
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0;i<4;i++)
{
if (i == 2)//比较操作符。不是赋值
break;
printf("%d\n",i);
}
return 0;
}
结果如下:
for循环中的跳过
上述讲的break
为跳出整个循环,那如果我不想循环这次了,但是又不想跳出整个循环,有没有什么办法呢?有的,在c
语言中,该功能的实现命令为continue
,其功能为跳过此次循环中的后续代码,但不影响后续的循环,如下所示代码:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 0;i<4;i++)
{
if (i == 2)
continue;
printf("%d\n",i);
}
return 0;
}
此代码与上个代码99%一样,只是break
换为了continue
,在此代码中,当i=2时,判断语句成立,执行continue
,所以跳过本次循环的后续代码,即不打印2,但是循环继续
,i=3时,满足循环条件,不满足判断条件,进行打印,因此结果应该为0 1 3
,验证如下:
for循环中的条件省略问题
在for循环中,初始化条件和判断条件可以省略,但不建议省略,因为一旦省略,会出现很多问题,
比如省略初始化条,示例代码如下:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (i = 0;i<2;i++)
{
for(j =0;j<2;j++)
{
printf("haha\n");
}
printf("gaga\n");
}
return 0;
}
此时不省略初始条件,结果如下:
省略初始条件后,代码如下:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (;i<2;i++)
{
for(;j<2;j++)
{
printf("haha\n");
}
printf("gaga\n");
}
return 0;
}
此时结果为
可以看到二者的差别很大,省略后的执行过程如下图所示:
因此,在for循环
的过程中,最好不要省略初始化条件和判断条件
上述即为本节的全部内容了,感谢大家的观看,如果方便,谢谢大家点个赞和关注哦!