C语言基本流程控制
来源:互联网 发布:巨人网络小怪兽工作室 编辑:程序博客网 时间:2024/06/06 02:05
语句的学习在于多练习,大家直接在代码中体会。
一、顺序语句
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没关系,都会执行。
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,如果为假,则循环结束。
#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语句
#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语句
#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);} }}
- C语言基本流程控制
- C语言流程控制
- C语言之基本运算和流程控制
- C语言之基本运算和流程控制
- C语言笔记流程控制
- C语言 流程控制语句
- 【C语言】09-流程控制
- C语言学习-流程控制
- C语言的流程控制
- C语言流程控制续
- C语言基础----流程控制
- C语言之控制流程
- C语言流程控制总结
- C语言-2-流程控制
- C语言-流程控制语句
- C语言的流程控制
- C语言流程控制续
- C语言DAY04 - 流程控制
- android应用开发之欢迎界面(AlphaAnimation)
- UIView的layoutSubviews和drawRect方法何时调用
- I2s 介绍
- Jetty:配置连接器
- 数组指针和指针数组的区别
- C语言基本流程控制
- 触发ASSERT(afxCurrentResourceHandle != NULL)错误的原因
- SQLCE管理工具
- 轻松使用IText组件制作pdf报表
- 一些代码优化的方法
- 如何下载LinuxIDC.com的免费Linux资源
- 非的所发生的
- 飞地方你哦烦恼丝烦恼少烦恼少烦恼所发生的放开手
- Java基础回顾_深入OOP常见错误精髓