从这里开始,就要开始真正进入C语言,深入的学习它
内容概述
1.分支语句
1.1 if
1.2 switch
1.3 A? B:C
2.循环语句
2.1 while
2.2 for
2.3 do...while
3.goto语句
1.分支语句(条件判断语句)
1.1 if语句
if语句就是选择型的语句
其局势结构如下
if(//判断语句)
{
//条件成立执行语句
}
else
{
//条件不成立执行语句
}
这是最基础的if语句,在这里面会先进行判断,在选择进去哪个执行框
如果表达式的结果为真,则语句执行。 在C语言中0为假非0为真。
用一段代码来看就是
int a=3,b=4;
if(a+b>1)
{
printf("hei hei\n");
}
else
{
printf("haha\n");
}
在这里,a+b大于1,所以打印haha
if语句还有变形,如
if()
{
}
else if
{
}
else
{
}
这段代码就进行了多重判断
注意:1.if语句里面else会与最近的if匹配
2.if语句里面如果不加{},则会执行下面的一个语句
这里留两个练习
1. 判断一个数是否为奇数
2. 输出 1-100 之间的奇数
1.2 switch语句
switch语句是多分枝语句
一般我们在做选项的时候会用到
switch语句的基本结构为
switch(//常量表达式)
{
case ://常量表达式
break;
case ://常量表达式
break;
case ://常量表达式
break;
default ://常量表达式
//这里因为default是在最后一行的,所以break可加可不加
}
比如:
输入 1 ,输出星期一
输入 2 ,输出星期二
输入 3 ,输出星期三
输入 4 ,输出星期四
输入 5 ,输出星期五
输入 6 ,输出星期六
输入 7 ,输出星期日
这里如果用if来写的话,进行了大量繁琐,重复的操作,我们就可以用switch来写
如果在case后面不加break的话,语句进去之后一直往下执行,这里是看自己的需求来加的
break 语句 的实际效果是把语句列表划分为不同的分支部分
编程好习惯
在最后一个 case 语句的后面加上一条 break 语句。
(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break 语句)
default语句在这个结构中起到的作用是switch接收值和所有的case都不符合的话,就进入default,这里可以用来给用户纠错
注意:default可放在switch语句中的任何位置,但是一个switch语句里面只能出现依次default
1.3 A? B:C
这个三目运算符我们在前面提到过,其实这个A?B : C就是简化版的if语句,它对应的if语句是
if(A)
{
B;
}
else
{
C;
}
用法和注意事项都和if语句一摸一样
2循环语句
2.1 while循环
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C 语言中给我们引入了: while 语句,可以实现循环。
while循环的结构是:
while(//循环判断语句)
{
执行语句
}
执行的结构图如下:
我们想在屏幕上打印1-10,就不用一个数字一个数字的打印了,就可以用循环来打印
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0; }
讲过了while的基础语句,再来讨论下break和continue语句在while中的运用
2.1.1break在while循环的运用
break语句是终止的意思,在前面switch语句中我们也见识过,它的作用用一段代码来看
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
if(i==5)
break;
}
return 0; }
在这段代码里面,就不会打印1-10了,就会打印1-5,就通过break跳出了
2.1.2continue语句在while循环中的运用
continue语句在while循环中,作用结束是本次循环,看一段代码
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0; }
这里会打印1 2 3 4 5 5 5 5 5 5 5死循环,因为continue的作用是结束本次循环,i++就没有执行,所以传刀上面的i还是5,就会一直打印5
2.2for循环
for循环的机理和while循环差不多,只不过是集中在一行写了
其结构如下
for(/*表达式1*/;/*判断表达式*/;/*修正表达式*/)
{
//执行语句
}
表达式一可以空着,也可以对变量进行初始化,分号后面是的判断表达式可以理解为while循环括号里面的东西修正表达式就是防止程序进入死循环的,让循环跑起来的语句
用for来写打印1-10就是
int main()
{
int i;
for(i=1;i<=10;i++)
{
printf("%d",i);
}
return 0;
}
可以看出来,代码行数明显比while少了很多
2.2.1break在for循环中的运用
break在for循环中的运用和while没有任何区别,可以参考while循环
2.2.2continue在for循环中的运用
continue在for循环中的运用和while循环就有区别了,
还是看一段代码
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0; }
这段代码和上面while循环的代码很相似,他也是打印12345555..吗?
不是,在for循环中,continue结束本次循环之后,还是会执行修正语句,所以打印的应该是1 2 3 4 6 7 8 9 10,就这一点微妙的区别
2.3do...while语句
do...while语句和while语句比较相似,但是他会先执行依次循环
其结构如下
do
{
//循环体
}while(//判断语句)
他的执行流程如下
特点是:循环至少执行一次,使用的场景有限,所以不是经常使用。
do...while中continue和break的使用可以参照while语句,一摸一样
这就是循环和分支的介绍,后面我还会出一期猜数字游戏的介绍,也是运用循环和分支来完成的