C语言是结构化的程序设计语言,而结构不外乎顺序结构,选择结构和循环结构。
我们写出的程序一般都是自上而下的执行,也就是按顺序结构的,应该不必多说。下面就来看看选择结构与循环结构。
一、选择结构
在我们的生活中,就会遇到许多的分支,比如今天午饭时间到了,你是选择吃馒头,还是吃米饭,这就是两条分支,而程序也是如此。C语言中的分支语句有两种,一种是if else,一种是switch。
1.if else
if else分支语句有单分支语句,双分支语句和多分支语句。
//单分支
if(表达式)//表达式结果 非0为真,0则假,表达式为真时执行下面的语句,为假时跳过
{
语句;
}
//双分支
if(表达式)//表达式为真时执行下面语句1,为假时执行语句2
{
语句1;
}
else
{
语句2;
}
//多分支
if(表达式1)//表达式1为真时执行语句1,为假时判断表达式2,为真时执行语句2,为假时执行语句3
{
语句1;
}
else if(表达式2)
{
语句2;
}
else
{
语句3;
}
2.switch
当分支比较多的时候,使用if else分支语句就会比较繁琐,面对这种多分支的情况,我们一般会选择使用switch语句;(注意:switch后跟的表达式必须为整型,且case后跟的表达式必须为整型常量)。
switch(整型表达式)//判断整型表达式与下列整型常量表达式的对应关系,相等时执行相应语句,然后break跳出switch语句;若都不相等则执行default下面的语句,然后结束switch语句
{
case (整型常量表达式1):
语句1;
break;
case (整型常量表达式2):
语句2;
break;
case (整型常量表达式3):
语句3;
break;
default:
语句n;
break;
}
二、循环结构
我们每日的生活就是一个循环,早上起床,吃早饭,工作,吃午饭,工作,吃晚饭,娱乐,睡觉,第二天又是如此,循环往复,而程序也会如此。C语言中的循环语句有三种,分别是while、for和do while。
在C语言中,一个完整的循环需包含变量的初始化、判断语句、调整语句和需要执行的循环语句,我会在下面的三种循环里,将这些标明出来。
1.while
while的中文意思就是“当……的时候”,那也就是说,当我们再while后放上一个表达式,当该表达式成立时,执行while内的语句,不成立则跳出while循环。(注意:在while循环语句中的break用于永久的中止循环,continue用于跳过本次循环之后的语句,从下个循环的判断阶段开始运行)
while (表达式)
{
循环部分;
}
//打印数字1到10
int i = 1; //初始化部分
while (i <= 10) //判断部分
{
printf("%d\n", i);//循环部分
i++; //调整部分
}
2.do while
do while循环与while循环比较相似,区别在于while循环是先执行判断部分,再执行循环部分;而do while循环则是先执行循环部分,再执行判断部分。并且do while循环中的循环部分至少执行一次。(注意:在do while循环语句中的break用于永久的中止循环,continue用于跳过本次循环之后的语句,从下个循环的判断阶段开始运行)
do
{
循环部分
} while(表达式);
//打印数字1到10
int i = 1;
do
{
printf("%d\n", i);
i++;
}while(i <= 10);
3.for
for循环语句会将变量的初始化、判断语句和调整语句全都放在for后的表达式中,若少了其中某一项,编译的时候会报错,解决了上面两种循环容易忽略某项语句的问题(尤其是调整语句)。(注意:在for循环语句中的break用于永久的中止循环,continue用于跳过本次循环之后的语句,从下个循环的调整阶段开始运行)
不能在for循环语句的循环部分中改变变量的值,否则很有可能会导致程序出错。
for (表达式1;表达式2;表达式3)
{
循环部分;
}
//打印数字1到10
int i = 0;
for (i=1; i<=10; i++)//表达式1为初始化部分;表达式2为判断部分;表达式3为调整部分
{
printf("%d\n", i); //循环部分
}
另外for循环中的初始化部分可以在for循环之前使用,这样则可以省略表达式1;for循环中的调整部分可以在for循环内部的循环部分使用,这样则可以省略表达式3;当然,判断部分也可以省略,但判断部分省略会使程序进入死循环。但是我不建议这么使用,这样出问题的概率会高很多,但这么使用也是没错的。
//打印数字1到10
int i = 1; //初始化部分
for (; i<=10; ) //判断部分
{
printf("%d\n", i);//循环部分
i++; //调整部分
}
for循环的变量也可能不止一个,例如下面这个例子:
int x = 0;
int y = 0;
for(x=0, y=0; x<2&&y<5; x++,y++)
{
printf("%d,%d\n", x, y);
}
//结果为:
//0,0
//1,1
三、goto语句
goto语句很少被使用,在这里就稍微提一下。
goto,顾名思义,就是去往某处。在C语言中,也就是跳转到某个节点,例如:
flag:
printf("hehe\n");
Sleep(1000);
goto flag;
这段代码就会间隔1秒循环打印hehe。
goto语句会用于多层嵌套中,在这种情况下,break语句就显得不是很方便,而goto语句就会方便很多。