目录
分支语句
if语句
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
#define<stdio.h>
int main ()
{
int score=0;
csanf ("%d",&score);
if(score>=60)
printf ("及格");
else if(score>60&&score<80)
printf ("优异");
return 0;
}//是判断if括号内的表达式是否成立,如果成立执行语句1,不成立就执行语句2。(0为假,非0为真)
下面的这个代码执行起来结果是什么呢?
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hello\n");
else
printf("hi\n");
return 0;
}
最后什么都没有打印出来,请看代码,if与else靠的最近的才是一对,这说明
if(b == 2)
printf("hello\n");
else
printf("hi\n");
这俩是一对的,这一对嵌套在if(a==1)里面,可是a一开始被赋值为0,0≠1,所以为假,下面的代码就不能执行了,所以这两个都没有打印出来。所以这样写很容易混乱。所以应该如下
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hello\n");
}
}
else
{
printf("hi\n");
}
return 0;
}
这时候的结果就是hi了。这说明代码要好好的布局,大括号该用的,一定别省。
代码的书写也是很重要的,对比一下下面的代码
int num = 5;
if(num == 5)
{
printf("hello\n");
}
int num = 5;
if(5 == num)
{
printf("hello\n");
}
明显的看出来if括号里的顺序不一样
第一种时候执行的结果如下.
第二种时候执行的结果如下.
如果if括号里的=少一个,第一种执行结果如下
明显看出来,执行结果和原来的一样,虽然错了,但还是结果一样。这在以后上班时发生,修改程序,得一行一行找。
第二种执行结果如下
能看到出来,直接报错。
switch语句
形式:
switch (整形表达式)
{
语句项。//是一些case语句
case 整形表达式;
语句;
}
如
int day=0;
scanf("%d",&day);
switch (day)
{
case 1:
printf("星期一"\n);
break;
case 2:
printf("星期二"\n);
break;
case 3:
printf("星期三"\n);
break;
case 4:
printf("星期四"\n);
break;
case 5:
printf("星期五"\n);
break;
case 6:
printf("星期六"\n);
break;
case 7:
printf("星期天"\n);
break;
}
这比用if语句简单些,switch开始,由输入的整形进入检索,case是入口,打印好后,由break出来。当然也不一定没一个后面都要加break。
如:把星期一到星期五为工作日,星期六和星期天为休息日。
#include <stdio.h>
int main()
{
int day = 0;
switch(day)
{
case1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
如果输出的数字不在1-7之间,如果输出一个8,就没结果。我们可以在最后一个break后面输入
default:
printf("输出错误\n");
break;
循环语句
while(表达式)
{
循环语句;
}
如打印1到10
#include<stdio.h>
int main()
{
int i=1;
while(i<11)
{
printf("%d\n",i);
i++;
}
return 0;
}
break和continue的区别
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(5 ==i )
break;
printf("%d ", i);
i = i+1;
}
return 0;
}
执行结果如下:
当i为5的时候碰到break就终止代码,不打印出5
所以break的作用:
执行代码时候遇到break,就停止后期所有的代码,直接终止循环
#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
执行结果如下:
当i为5的时候,碰到continue,下面的代码不执行,返回while语句,i为5,就会再次碰到continue,再次碰到continue,陷入死循环。
所以continue的作用:
终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
for循环
for ( 表达式 1 ; 表达式 2 ; 表达式 3 )循环语句 ;//表达式1是初始化,表达式2是用来条件判断,表示3是用来调整
如用for循环打印1到10数字
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0; }
打印结果如下:
break和continue在for中的区别和作用
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (5 == i)
break;
printf("%d ", i);
}
return 0;
}
执行结果如下,可以看出当i为5时候,碰到break,终止代码,不再执行。所以打印的结果为1 2 3 4
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;
printf("%d ",i);
}
return 0;
}
执行结果如下:
当i为5时候碰到continue就会跳过执行调整部分即i++这时候i就为6,接着执行i不等于5打印出6,一直到10
在for循环中表达式2如果省略,就代表恒为真
那这种情况下会打印出多少个呢?
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
for (; i < 10; i++)
{
for (; j < 10; j++)
{
printf("hello\n");
}
}
return 0;
}
只会打印出10个,刚开始i=0然后进入j的循环中,j从0到9有10个,所以现在打印出10个。i=1时候开始内循环,在这时候j还是为10,不小于10,所以打印不出来。
因此,再写循环时候,能不省的就别省!!!
do....while 循环
do循环语句 ;while ( 表达式 ) ;
这种循环不管怎么样都会执行一次。
在do...while中,break和continue的区别:
#include <stdio.h>
int main()
{
int i = 0;
do
{
printf("%d\n", i);
i++;
if (5 == i)
break;
} while (i < 10);
return 0;
}
和for,while循环一样,碰到break就终止代码
#include <stdio.h>
int main()
{
int i = 0;
do
{
printf("%d\n", i);
i++;
if (5 == i)
continue;
} while (i < 10);
return 0;
}
当i为5时候碰到continue后,就跳到i<10的地方,会打印出5,接着6, 7, 8,9
goto语句
作用用于跳出两层或多层循环
for (...)for (...){for (...){if ( disaster )goto error ;}}…error :if ( disaster )//可以直接跳到error