初识 C语言之———分支与循环1
一.分支结构
分支结构也可被称为选择结构,主要可以分为if语句和switch语句,另外还有一种不常用的go to语句。
1.if语句
if语句的语法形式表达如下
if(表达式)
{
语句
}
if在英语中是如果的意思,if语句就是说如果表达式为真,则执行下面的语句,否则不执行;在C语言中0表示假,非0表示真,也就是说如果表达式的结果为0,则不执行下面的语句,否则执行。
示例:输入一个数,判断其是否为偶数
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
if(a%2==0)
{
printf("a为偶数\n");
}
return 0;
}
上述例子为if语句的基本用法,if语句还常与else连用构成if else语句
2.if else语句
if else语句用来说明一个事情不是A情况就是B情况。
例如一个正整数不是奇数就是偶数。
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
if(a%2==0)
{
printf("a是偶数");
}else
{
printf("a是奇数");
}
return 0;
}
当然一个事可能不止两种情况,这时就可以使用if else的多重和嵌套用法,这里不再具体讲实例,给大家简单描述一下语法结构。
切记:else与距离其最近的if匹配
多重if else
if(表达式1)
{
语句1
}else if(表达式2)
{
语句2
}else
{
语句3
}
嵌套if else语句
if(表达式1)
{
if(表达式2)
{
语句1
}else
{
语句2
}
}
else
{
语句3
}
二.switch语句
switch语句可以看为一种特殊的if else语句,用于判断一个条件多个结果的情况。
switch语句的语法结构如下所示:
switch(expression)
{
case value1:statement
case value2:statement
default : statement
}
switch后的表达式必须为整形表达式
case后的值,必须为整型常量表达式
下面给大家举个具体的例子:
一个数除于3后的余数,无非就是0 1 2 三种情况。那么有下面一段代码;
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
switch(a%3)
{
case 0:printf("余数为0");
case 1:printf("余数为1");
default:printf("余数为2");
}
return 0;
}
假如输入的数为3,那么预期输出结果为:余数为0
但实际运行结果却是:
余数为0余数为1余数为2
这是因为当a%3等于0时,与case 0相匹配,执行完case 0后的语句后,没有跳出程序,而是继续往下执行,这时应在每个case语句的最后加上break表示跳出程序
#include<stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
switch(a%3)
{
case 0:printf("余数为0");
break;
case 1:printf("余数为1");
break;
default:printf("余数为2");
break;
}
return 0;
}
这时再输入3,结果就正确了。这是switch语句中需要注意的一点。
另外还需要注意的是:
(1).case后的常量表达式的值不能相同
(2).case后可以允许多个语句而不用{}括起来
(3).case和default语句的先后顺序不一定,可以相互变动,它们与switch后的表达式为匹配关系
(4).default语句可以省略不用
三.go to语句
C语言中的go to语句是一种无条件分支语句,go to语句可以跳转到函数中任何有标号的语句处。
go to语句由标识符和冒号组成,语法结构如下
go to 语句标号:
功能是将程序转换到指定位置继续执行
示例:
#include<stdio.h>
int main()
{
first:
printf("hehe\n");
go to first:
return 0;
}
此时运行程序就会发现程序陷入死循环,所以说我们不常用go to语句,主要是因为它会破坏程序的结构,容易带来隐患;但也并非一无是处,在多层循环中go to语句可以很方便的跳出循环