✨✨小新课堂开课了,欢迎欢迎~✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏:http://t.csdnimg.cn/Oytke
小新的主页:编程版小新-CSDN博客
1.分支语句
1.1if语句
1.1.1 if 语句的分类
if语句分为单分支控制,双分支控制,多分支控制的条件语句,让我们来看看他们的不同吧。
单分支控制的条件语句
if(表达式)//表达式不局限与关系表达式,也可以为数值表达式
语句;
//还有另一种表达形式
if(表达式)
{
语句1;
语句2;
}
双分支控制的条件语句
//第一种
if(表达式)
语句1;
else
语句2;
//第二种
if(表达式)
{
语句1;
语句2;
}
else
{
语句3;
语句4; //为了养成良好的代码风格,if语句有无语句我们都可以加上{},使可读性增加
}
多分支控制的条件语句
if(表达式1)
{
step m;
}
else if(表达式2)
{
step n;
}
else
{
step x;
}
step z;
1.1.2嵌套if
C语言中if语句里面还有if,就称为if嵌套。请看下面的代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int score = 0;
sanf("%d",&score);
if(score>90)
{
printf("优秀\n");
}
else if((score>95)&&(score<=100))
{
printf("超级优秀\n");
}
else
printf("继续加油哦\n");
return 0;
}
1.1.3 悬空else
其实上面的嵌套if中列举的代码中也涉及悬空else的问题,这里我就不重新举例了。
我们只需要记住else与离得最近的未配对的if匹配,为了避免误会我们在使用条件语句是要用代码块{}
1.2switch语句
1.2.1 if语句与switch语句的对比
练习:输入任意一个整数值,计算除于3之后的余数
如果用if语句来完成,如下:
#define _CRT_SECURE_N0_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
scanf("%d",&i);
if(i%3==0)
{
printf("余数为0\n");
}
else if(i%3==1)
{
printf("余数为1\n");
}
else
printf("余数为2\n");
return 0;
}
运行结果
如果换成switch语句来完成,请看下面的代码
#define _CRT_SECURE_N0_WARNINGS
#include<stdio.h>
int main()
{
int i = 0;
scanf("%d",&i);
switch(i%3)
{
case 0:
printf("余数为0\n");
break;//用break来实现真正意义上的分支
case 1:
printf("余数为1\n");
break;
case 2:
printf("余数为2\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}h
运行结果
注意:1case后面必须有一个空格 2case后面的值必须是整型表达式 3不要忘记加:4break后面也有;5switch后面的表达式必须是整型常量表达式 6注意default的使用形式
接下来就让我们更加细致的来了解一下switch语句吧
1.2.2 switch语句中的break
我将用上面的switch语句的代码来解释break的作用,运行代码后,我们输入4,结果会打印余数是1;如果我们把说明代码中所有的break都去掉后,打印结果是余数是为1(换行)余数为2(换行)输入错误(换行)。
接下来我们对break的作用进行总结:break的作用是永久的终止循环,不管循环还要执行多少次,只要执行到了到break,循环就会停止。我们可以理解成坐电梯,只要我们没有按下楼层键,电梯就会一直带着你运动,break就相当于那个按键。用上面的例子来解释就是4%3的结果是1;所以从case 1的路径下走,由于没有break,程序就会一直执行,紧接着输出余数是2,输入错误,直到程序结束。
1.2.3 switch语句中的default
在使用switch语句的时候,我们经常可能会遇到一种情况,比如switch后面的表达式中的值无法匹配代码中的case 语句的时候,这时候要不就不处理,要不就要在switch语句中加入default子句。
补充:在switch语句中case语句和default语句没有顺序要求,只要你的顺序满足实际需求即可。
2.循环语句
2.1while循环
2.1.1while语句的用法及其与if的对比
if(表达式)
{
语句;
}
while(表达式) //他们的表达形式相同,唯一的不同就是if语句只能执行一次,而while语句可以实现多次输入
{
语句
}
2.1.2 while语句的实践
练习:在屏幕上打印1-10的数字
#include<stdio.h>
int main()
{
int i = 1;//表达式1 循环初始条件
while(i<=10)//表达式2 循环控制条件
{
printf("%d",i);
i++;//表达式3 循环转换条件
}
return 0;
}
//最终的结果就是打印的1-10的数字
2.1.3 while语句中的continuek和break
1 continue的举例
#include<stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i==5)
continue;//当i==5时,就会执行continue,直接跳过continue后面的代码,去循环的判断的地方
//以为这里跳过了i++,所以i一直是5,结果就会陷入死循环
printf("%d",i);
i++;
}
return 0;
}
continue的作用:跳过continue后面的本次循环,跳到while语句中的判断部分,进行下一次循环的入口判断
2 break的举例
#include<stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i==5)
break;//当i==5时,就会执行break,直接终止后期所有的循环
//由于当i==5使直接终止循环,最终只能打印1-4的数字
printf("%d",i);
i++;
}
return 0;
}
break的作用:在循环中只要遇到break,就会停止后期所有的循环,直接终止循环,所有while语句中的break是用于永久终止循环的
2.2 for循环
2.2.1for语句的用法
for(表达式1;表达式2;表达式3)//表达式1 循环初始条件;表达式2 循环控制条件;表达式3 循环转换条件
{
语句//如果循环体想要包含跟多的语句,可以加上大括号
}
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
2.2.2 for语句的实践
练习:打印1-10的是数字
#include<stdio.h>
int main()
{
int i = i;
for(i=1;i<=10;i++)//与上文while语句作比较,for语句中三个比较特殊的表达式都在for语句的()内部
{
pfintf("%d",i);
}
return 0;
}
2.2.3for语句中的continue和break
1 break举例
#include<stdio.h>
int main()
{
int i = 1;
for(i=1;i<=10;i++)
{
if(i==5)
break;
printf("%d",i);
}
return 0;//输出的结果是1-4
}
for语句和while语句中break的作用是相同的,请参考上面提到的break的作用,简单来说就是终止循环
2 continue的举例
#include<stdio.h>
int main()
{
int i = 1;
for(i=1;i<=10;i++)
{
if(i==5)
continue;
printf("%d",i);
}
return 0;//输出的结果是1 2 3 4 6 7 8 9 10
}
#include<stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i==5)
continue;//当i==5时,就会执行continue,直接跳过continue后面的代码,去循环的判断的地方
//以为这里跳过了i++,所以i一直是5,结果就会陷入死循环一直打印5
printf("%d",i);
i++;
}
return 0;
}
注意对比continue在for语句和while语句的不同,为什么会出现这来你的不同?接下来我们揭晓谜题
注意i在for语句和while语句中的位置,首先回忆一下continue的作用,跳过continue后面的本次循环,跳转到while语句中的判断部分,进行下一次循环的入口判断。先看while语句,当i5时,执行continue,跳过后面的部分,i没有发挥作用,i一直等于5,一直满足条件进入循环,也就一直跳不出循环。再看for语句,当i5时,执行continue,跳过后面的部分,因此5不会被打印,回到for循环语句内,i++可以发挥作用,最终导致两者结果的不同
2.3 do-while循环
2.3.1 do-while语句的用法
do
{
语句;
}while(表达式)
do-while的特点就是先执行后判断,所以在do-while语句中循环体至少被执行一次
2.3.2 do-while语句的是实践
练习:打印1-10的数字
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d",i);
i++;
}while(i<=10);
return 0;
}
2.3.3 do-while语句中的continue和break
do-while 语句中的continue和break的作用与while语句中的中的continue和break的作用几乎一模一样,我相信大家掌握了上面的知识这个也一定不在话。
3.goto语句
C语言提供了一种非常特别的语法,就是goto语句和跳转符号,goto语句可以实现在同一个函数内跳转到设置好的符号处。
goto语句被分在转向语句中也是可以理解的啦。yiw
#include<stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printtf("跳过haha的打印\n");
return 0;
}
goto语句使用不当就会导致在函数内随意跳转,打乱程序的执行流程,所以我们建议尽量不使用goto语句;但是goto语句的方便性也是毋庸置疑的。
这里有个小小的补充,goto语句本身不是循环语句,但当goto语句跳转的标记处位于goto语句之前时,使得会再次执行到该goto语句,那么就形成了代码的循环执行。(这里如果不能理解的话也没有关系,随着后面深入的学习我们会有一个更加清晰的认识)
总结:上面举的例子都是非常有代表性的,能够方便我们的理解。知识的学习就是由浅入深的过程。还有这是第一次写技术博客,里面有什么错误希望大家指出,多多谅解。这也让我体会到了万事开头难这句话的真理。因为草稿是在有道云笔记上写的,这里的代码风格不是很好,我下次会注意的。