C语言基本流程控制

来源:互联网 发布:巨人网络小怪兽工作室 编辑:程序博客网 时间:2024/06/06 02:05

语句的学习在于多练习,大家直接在代码中体会。

一、顺序语句

正常情况下 C语言的代码是从上往下一行一行执行 比如以下代码

int main(){int a = 0;printf("hello\n");printf("i am c");a = 1;printf("a= %d\n",a);return 0;}
执行完第一行,再第二行,直到最后一行。

二、分支语句

2.1 if语句 

模型1 : 如果if() 条件成立 则执行紧跟着{}里面的内容,注意语句2,跟if没关系,都会执行。


if(条件)
{    
//语句1
}
语句2

---------------------------------------------------------------------------------------------------------------
int main(){int a = xx;if(a == 1){printf("a==1");}printf("test\n");}
int main(){<span style="white-space:pre"></span>// 条件()里判断的是0 和 非0int a = xx;if(1)//if(2)//if(0)//if(-1){printf("a\n");}printf("test\n");}



模型2:如果if()条件成立,则执行紧跟着{}里面的内容,否则执行else{}里面的内容

if(条件)

{

语句1

}

else

{

语句2 

}

语句3 

---------------------------------------------------------------------------------------------------------------

#include <stdio.h>int main(){/*if 和else是互斥的。*/int a = xx;if(a == 1){printf("a ==1");}else{printf("a!=1");}printf("test\n");}


注意跟模型1区别,这里语句1和语句2是互斥的,要么语句1 要么语句2 ,语句3跟if没关系


模型3-1 : 每个条件之间是互斥的,只有上面所有的条件不成立,才会判断下面的条件, 所有的语句属于同一个if 范畴。

if(条件1)

{

语句1

}

else if(条件2)

{

语句2

}

else if(条件3)

{

语句3

}

条件4,条件5.。。

else

{

       语句6

}

---------------------------------------------------------------------------------------------------------------

</pre><p><pre name="code" class="cpp">#include <stdio.h>int main(){/*if与else if是互斥关系,从上往下,有一个条件成立则不判断其他if */int a = xx;if(a <10){printf("a<10");}else if(a<5){printf("a<5");}else if(a<3){printf("a<3");}else{printf("else");}printf("test\n");}

模型3-2:注意下面这个模型根3-1区别,下面是3个if语句,相互没有关系.

if(条件1)

{

语句1

}

if(条件2)

{

语句2

}

 if(条件3)

{

语句3

}

-------------------------------------------------------------------------------------

#include <stdio.h>int main(){//与模型3-1比较int a = 1;if(a <10){printf("a<10");}if(a<5){printf("a<5");}if(a<3){printf("a<3");}else{printf("else");}printf("test\n");}


模型4 语句嵌套,在两个大括号之间可以是任何其他逻辑,可以是if  for  while switch等语句,大括号里面的语句也是按照C语言语句的基本逻辑执行。

if(条件1)

{

if(条件2)

{

}

}

else

{


}

#include <stdio.h>int main(){int a = xx;if(a <10){printf("a<10");if(a<5){ printf("a<5");}else{ printf("a<10&&a>=5")}}else{ printf("a>=10"); if(a>20) { printf("a>20");  } else { printf("a<=20 &&a>=10"); }}printf("test\n");}

模型5:注意,初学者在前期养成良好习惯,把大括号都写上,不写大括号,if只负责管理一行语句

以下语句是等效的

if(a == 1)printf("a ==1 \n");elseprintf("a!=1\n");if(a == 1){printf("a ==1 \n");}else{printf("a!=1\n");}

但是,如果if下面有2行,就有可能会出现理解上的错误

if(a == 1)printf("a ==1 \n");printf("a!=1\n"); //这一句跟if没关系

2.2 switch语句

switch基本逻辑:switch会判断(表达式)的值,如果跟case后面的值相等,则从这条case 的冒号开始执行,直到遇到break,或者到最后一句结束。

注意 swtic ()表达式的值一定是能够 用 == 判断的值,比如double 就不能用到switch语句里。

swtich(表达式)

{

case 值1:

语句1;

case 值2:

语句2:;

default:

语句3;

}

#include <stdio.h>int main(){//比较break的作用int a = 1;switch(a){case 1:printf("1\n");case 2:printf("2\n");case 3:printf("3\n");default:printf("other\n");}a = 1;switch(a){case 1:printf("1\n");break;case 2:printf("2\n");break;case 3:printf("3\n");break;default:printf("other\n");}switch(a+1) //表达式a+1的值是int 类型{case 1:printf("1\n");break;case 2:printf("2\n");break;case 3:printf("3\n");break;default:printf("other\n");}}


三、循环语句

for语句:

该语句会在进入for的时候,执行一次第一个分号前的语句,然后判断第一个分号和第二个分号之间的表达式是否为真,如果为真则执行大括号里的内容,执行完大括号的内容再执行第二个分号后面的语句,然后在后面重复以下流程:判断表示式2的值,如果为真执行大括号里的内容,然后表达式3,如果为假,则循环结束。

for(表达式1; 表达式2,;表达式3)
{
语句
}
直接看代码比较:

#include <stdio.h>int main(){int i = 0;for(;i<10;i++){printf("%d\n",i);}for(i = 0;i<10;i++){printf("%d\n",i);}for(i = 0;i<10;){printf("%d\n",i);i++;//如果没有i++会出现什么问题.}}

while语句

判断()里面的条件是否成立,成立则循环执行{}语句,否则跳出循环。
while(条件)
{
语句
}

#include <stdio.h>int main(){/*注意循环变量的赋初始值以及递增*/int i = 0;while(i<10){printf("%d\n",i);i++;//如果没有这一句会出现什么状况。}while(i<10){printf("hello");//hello能打印出来吗,为什么?i++;}}


do..while语句

先执行{}里的语句,再判断while()条件,成立则继续{},不成立则退出。
do{
语句
}while(条件);

#include <stdio.h>int main(){/*do while 与 while的 区别.*/int i = 0;do{ printf("%d\n",i); i++; }while(i<10);}

循环嵌套

#include <stdio.h>int main(){/*各种语句是可以相互嵌套的*/ for(i = 0;i<10;i++) {for(j = 0;j<10;j++)//注意这里j的变化,每次重新进入该for,j = 0会执行{printf("i=%d,j=%d",i,j);} } for(i = 0;i<10;i++) {j = 0;while(j<10){printf("i=%d,j=%d",i,j);j++;} } i = 0; while(i<10) {for(j = 0;j<10;j++){printf("i=%d,j=%d",i,j);}i++; }}


break,continue

#include <stdio.h>int main(){/*比较continue 与 break的区别continue,跳出本次循环。break ,跳出本层循环。*/int i = 0;for(i=0;i<10;i++){<span style="white-space:pre"></span>//各种语句之间是可以嵌套的。if(i == 5){break;//continue;}printf("%d\n",i);}}

再2层循环中更能说明break 和continue的区别

#include <stdio.h>int main(){/*分清本层 和 本次的区别*/ for(i = 0;i<5;i++) {for(j = 0;j<5;j++){if(j == 2){break;//continue;}printf("i=%d,j=%d",i,j);} }}









0 0
原创粉丝点击