目录
1.if语句
语法结构:
if ( 表达式 )语句 ;if ( 表达式 )语句 1 ;else语句 2 ;// 多分支if ( 表达式 1 )语句 1 ;else if ( 表达式 2 )语句 2 ;else语句 3 ;
演示代码
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age<18)
{
printf("少年\n");
}
else if(age>=18 && age<30)
{
printf("青年\n");
}
else if(age>=30 && age<50)
{
printf("中年\n");
}
else if(age>=50 && age<80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
如果条件成立,该如何执行多条语句
#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
浮空else语句
//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
else的匹配:else是和他离得最近的if语句相匹配。
switch语句
switch语句也是一种多分支语句。通常适用于多分支的情况。
如:
输入 1 ,输出星期一输入 2 ,输出星期二输入 3 ,输出星期三输入 4 ,输出星期四输入 5 ,输出星期五输入 6 ,输出星期六输入 7 ,输出星期日
switch语句的实现
switch ( 整型表达式 )\\不能是浮点型{case 整形常量表达式 :语句 ;}
switch中的break
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
break可以阻断语句的进行起到终止的作用通过要求来设置break的位置1.#include <stdio.h>int main (){int day = 0 ;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 ;}return 0 ;}2.#include <stdio.h>//switch 代码演示int main (){int day = 0 ;switch ( day ){case 1 :case 2 :case 3 :case 4 :case 5 :printf ( "weekday\n" );break ;case 6 :case 7 :printf ( "weekend\n" );break ;}return 0 ;}
break
语句
的实际效果是把语句列表划分为不同的分支部分。
编程好习惯在最后一个 case 语句的后面加上一条 break 语句。(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break 语句)。
default子句
如果表达的值与所有的
case
标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在
C
中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条
default
子句,把下面的标签
default
:
写在任何一个
case
标签可以出现的位置。
当
switch
表达式的值并不匹配所有
case
标签的值时,这个
default
子句后面的语句就会执行。
所以,每个
switch
语句中只能出现一条
default
子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个
case
标签一样执行
default
子句。
编程好习惯在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break 。
循环语句
while
for
do while
while循环
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。那我们怎么做呢?C 语言中给我们引入了: while 语句,可以实现循环。
//while 语法结构while ( 表达式 )循环语句 ;
例如:打印1-10的数字
#include <stdio.h>int main (){int i = 1 ;while ( i <= 10 ){printf ( "%d " , i );i = i + 1 ;}return 0 ;}
while语句中break和continue的使用
break是跳出该循环
continue是不进行该次循环的下面步骤,重新开始下一次的循环
break 在 while 循环中的作用:其实在循环中只要遇到 break ,就停止后期的所有的循环,直接终止循环。所以: while 中的 break 是用于 永久 终止循环的。
eg:
//break 代码实例#include <stdio.h>int main (){int i = 1 ;while ( i <= 10 ){if ( i == 5 )break ;printf("%d",i);i=i+1;}return 0;}这里代码输出的结果是什么?1 2 3 4
continue 是用于终止本次循环的,也就是本次循环中 continue 后边的代码不会再执行,而是直接跳转到 while 语句的判断部分。进行下一次循环的入口判断
eg:
//continue 代码实例 2#include <stdio.h>int main (){int i = 1 ;while ( i <= 10 ){i = i + 1 ;if ( i == 5 )continue ;printf ( "%d " , i );}return 0 ;}这里代码输出的结果是什么1 2 3 4 6 7 8 9 10
for循环
语法
for ( 表达式 1 ; 表达式 2 ; 表达式 3 )循环语句 ;
表达式
1
表达式
1
为
初始化部分
,用于初始化循环变量的。
表达式
2
表达式
2
为
条件判断部分
,用于判断循环时候终止。
表达式
3
表达式
3
为
调整部分
,用于循环条件的调整。
eg:
打印1-10的数字#include <stdio.h>int main (){int i = 0 ;//for(i=1/* 初始化 */; i<=10/* 判断部分 */; i++/* 调整部分 */)for ( i = 1 ; i <= 10 ; i ++ ){printf ( "%d " , i );}return 0 ;}
for和while比较
int i = 0 ;// 实现相同的功能,使用 whilei = 1 ; // 初始化部分while ( i <= 10 ) // 判断部分{printf ( "hehe\n" );i = i + 1 ; // 调整部分}// 实现相同的功能,使用 whilefor ( i = 1 ; i <= 10 ; i ++ ){printf ( "hehe\n" );}
可以发现在
while
循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较
远,这样查找修改就不够集中和方便。所以,for
循环的风格更胜一筹;
for
循环使用的频率也最高。
重点
// 请问循环要循环多少次?#include <stdio.h>int main (){int i = 0 ;int k = 0 ;for ( i = 0 , k = 0 ; k = 0 ; i ++ , k ++ )k ++ ;return 0 ;}循环0次//k=0直接是0,为假,直接不符合条件,跳出循环
do-while循环
语法
do循环语句 ;while ( 表达式 );
do-while的break和continue
#include <stdio.h>int main (){int i = 1 ;do{if ( 5 == i )break ;printf ( "%d " , i );i = i + 1 ;} while ( i <= 10 );return 0 ;}#include <stdio.h>int main (){int i = 1 ;do{if ( 5 == i )continue ;printf ( "%d " , i );i = i + 1 ;} while ( i <= 10 );return 0 ;}