语句的学习在于多练习,大家直接在代码中体会。
一、顺序语句
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 和 非0
int 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");
else
printf("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);
}
}
}