hello!大家好!我是黑菜钟!
一个乐于分享计算机方面知识的博主。
今天分享关于c语言的一些重要内容,希望多多支持!!!
本篇博客主要内容:
介绍有关c语言分支和循环语句的详细内容,小白也可以轻松看懂,如有错误或需要补充的地方,欢迎在评论区指正。
注:内容有些长,希望耐心观看,你,准备好了吗?
前言
c语言是一个结构化的语言,有顺序结构,选择结构,循环结构。
这些结构可由语句组成,那么今天就来介绍实现分支结构的语句和循环语句以及转向语句。
操作符
首先来简单介绍一下语句中会使用到的操作符
1.关系操作符
c语言中含有许多比较大小的表达式,称为关系表达式,而实现表达式所用的运算符成为关系运算符
> 大于运算符 <小于运算符 >=大于等于运算符 <=小于等于运算符
==相等运算符(这个要非常注意,是两个等号才表示相等,不要写成一个等号,一个等号仅代表赋值)
!=不等运算符
2.条件操作符
条件操作符也叫做三目操作符,这个名字一看就是需要三个操作数的,所以条件操作符的形式为 a?b:c;
其中
a指一个条件表达式
当a的结果为真时条件操作符返回b
否则返回c
示例
#include <stdio.h>
int main(){
int s=2>1?2:1;
printf("%d",s);
return 0;
}
结果为2
3.逻辑操作符
逻辑操作符主要用于提供逻辑判断,当需要更复杂的表达式时,一般用逻辑操作符构建。
主要有:
- ! 逻辑取反运算符
(改变一个表达式的真假) 注:0为假,非0为真
- && 与运算符
放在语文中就是并且的意思,左右两边的表达式同真才为真,有假则结果为假,会发生短路,意思就是当左边的表达式已经判断为假的时候,右边的表达式将不再进行
- || 或运算符
就是或者的意思,至少有一个表达式为真,则结果为真,否则结果为假。
转向语句
在介绍分支语句之前,我们需要了解一些转向语句,便于在下面的分支语句和循环语句,例如switch语句中使用
break语句
终止语句,当使用break后,就会跳出循环,往后执行。
详细示例:
注:看完下面的分支语句和循环语句后再来看这个
如图,我们发现本来可以打印出1到9数字的,但是加上break后,只输出到4就停止了,因为遇到break,整一个循环就结束了
continue语句
继续的意思,跳过continue后面的语句。
详细示例:
注:看完下面的分支语句和循环语句后再来看这个
哎,我们发现好像这个也是只输出1234,那和break有什么区别吗?
其实,他只是停在了4处,程序并没有停止,当执行到continue后,就会转向while循环语句,而i刚才因为continue没有执行i++,则i仍然为5,就导致只要一进循环,就执行if语句,就会执行continue,导致形成了死循环。
goto语句
这是一个特别的语法,goto语句可以实现在同一个函数内跳转到设置好的标点处
例如:
如图,我们可以看出,当写goto 语句后,那么就会直接跳转到goto要跳转的地方,执行那个地方的语句,而不执行“再见”那一个语句了。
分支语句
C语言钟我们通常使用if和switch分支语句来实现分支结构
if语句
基本语句形式:
if(表达式){
语句
}
当表达式结果为真,则执行语句,否则直接跳过if里的内容
else
if(表达式){
语句1
}else{
语句2
}
嵌套if
if(表达式1){
语句1
}else if(表达式2){
语句2
}else{
语句3
}
悬空else问题
悬空else问题是指有许多if和else,且没有大括号,不知道else该跟哪一个if配对,就造成了悬空else问题。
解决方案:只要记住这一规则,所有的悬空else都可以解决了:当有多个if和else时,else总与最近的if相匹配
if语句的示例:
#include<stdio.h>
int main()
{
int score;
scanf("%d",&score);
if(score>=60&&score<=70){
printf("你及格了,再接再励哦");
}else if(score>70&&score<=80){
printf("你超及格线已经很多了,很棒呀");
}else if(score>80&&score<=90){
printf("你快接近满分了,下回可要细心点哦");
}else if(score>90&&score<=100){
printf("你太棒了,你的成绩等级最高,是A哦");
}else{
printf("你的成绩等级最低,要加油哦");
}
return 0;
}
switch语句
除了if语句,C语言还可以用switch语句来实现分支结构
基本形式
switch(expression){
case value 1:statement;break;
case value 2:statement;break;
default:statement;break;
}
根据表达式expression不同的数值,执行相应的case,如果找不到对应的数值value那么执行default分支
注意:
break
千万不要省去,否则会导致下图的结果:
正确的写法:
default语句
每一个switch语句只能有一个default语句,而且它不止可以放在语句段的最后,它其实可以放在任何位置,后面最好加上break哦。
循环语句
讲完分支语句,那么来讲讲循环语句吧c语言提供了三种循环语句来实现循环结构,while for do-while.
while循环
基本形式
while(表达式)
语句;
与if语句的区别
通过观察,我们发现这个while语句好像与if语句有些相似,那么他们有什么区别呢?举个例子吧
当使用if时
而当用到while的时候,会不断循环,因为while里面的表达式是永远成立的。
代码及结果如下:
while的执行流程:
示例
for循环
基本形式:
for(表达式1;表达式2;表达式3){
语句
}
其中表达式1、2、3分别表示初始化变量、判断循环结束条件、调整循环变量
执行流程:
或许了解基本形式还是不太清楚怎么写,那么下面的流程图能让你更好的了解for循环
示例:
while循环和for循环的对比:
do while 语句
基本形式:
do{
语句
}while(表达式)
执行流程:
示例:
while循环和do-while循环的对比:
while和do-while只相差一个do,那么他们的区别在哪里呢?
- while先判断,而do-while先执行语句再判断
循环的嵌套
刚已经学会了三种循环语句,实际在解决问题中往往会使用嵌套在一起才能更好的解决问题,下面就来讲一讲一个例子:
代码:
#include<stdio.h>//在屏幕上输出100到200里面的素数。
int main()
{
for(int i=100;i<201;i++){//从100到200遍历
int is=1;//先假设是素数
for(int j=2;j<i;j++){//判断素数
if(i%j==0){
is=0;//判断不是素数就更改is的值
break;//直接跳出这个循环了。
}
}
if(is==1){
printf("%d ",i);
}
}
return 0;
}
运行结果:
总结
恭喜你,已经成功学会了分支和循环语句的介绍
相信如果你耐心看完,并把代码都敲了一遍,一定会收获不少东西。
制作不易,关掉这篇博客之前至少点个赞吧!!!
最后,我会进一步分享有关C语言以及其他的相关知识,欢迎大家多多来看我的博客,去更好的学习计算机方面的知识!加油!!!我们一起进步!!!