C语言条件语句及循环语句

C语言语句

1、分支语句 有两种,第一种是负责实现双分支的if语句,另一种是负责实现多分支的开关语句switch。

1.1 if语句

(1)只有一个分支

if(条件表达式){
    语句块             // 条件表达式成立 (即值为true)时执行该语句块
}

例子:

int a;
 
a = 0;
 
// 如果a等于0时执行大括号中的语句。否则不执行。
//由于上面的语句把a的值改为0了,现在条件表达式“a=0”是成立的,所以a=a+1会被执行。
if(a = 0){
    a = a + 1;
}

 

(2)有两个分支

if(条件表达式){
    语句块1            // 条件表达式成立(即值为true)时执行语句块1
}
else{
    语句块2            // 条件表达式不成立时执行语句块2
}

例子:

int a;
 
a = 0;
 
if(a < 0){
    a = a + 1;             // a小于0时执行
}else{
    a = a - 1;             // a不小于0(即a大于等于0)时执行
}

(3)有多个分支(类似switch语句)

if(条件表达式1){
    语句块1            // 条件表达式1成立(即值为true)时执行语句块1
}
else if(条件表达式2){
    语句块2            // 条件表达式2成立时执行语句块2
}
else if(条件表达式3){
    语句块3            // 条件表达式3成立时执行语句块3
}
...
else{
    语句块n            // 以上条件表达式全部不成立时执行语句块n
}

例子:

int a;
int b;
 
a = 3;
b = 9;  

if(a = 3){
    a = a + 1;             // a = 3时执行
}else if(b = 9){
    b = b + 1;             // b = 9时执行

if(a > 3 || b > 9){
    a = a - 1;              // a>3或者b>9 时执行 
    b = b - 1;
}else{
    a = 0;                   // 以上条件都不满足时执行 
    b = 0;

1.2 switch语句

switch(表达式){
    case 表达式1:
        语句块1           // 表达式的值等于表达式1 则执行语句块1
        break; 
    case 表达式2:
        语句块2           // 表达式的值等于表达式2 则执行语句块2
        break; 
        ...   
     case 表达式n:
        语句块n           // 表达式的值等于表达式n 则执行语句块n
        break;    
    defualt:
        语句块n           // 表达式的值不等于以上所有的表达式 ,则执行defualt(默认)语句块n
}

表达式n的类型应与表达式值的类型一致,可以是整形或字符型。假设已定义“int a;”整形变量a,那么表达式“a”、“a+4 ”、“a*(a+4)”等的值都为整形数,这时表达式就应该用整形数。

例子1:

int a = 3; 
switch(a-2){
    // 当a-2=1时执行“case 1”下的语句。
    case 1:
        a = a+1;
        break;   
    // 当a-2=2时执行“case 2”下的语句。
    case 2:
        a = a+2;
        break; 
    // 如果上述情况都不满足,则执行“defualt”下的语句。
    defualt:
        a = a+3;
}

注意:每个case语句块后面的“break;”语句的意思是跳出switch语句,若没有“break;”语句则程序会继续执行下去。例如,若去掉“case 1”末尾的“break;”语句,那么程序在执行完语句“a = a+1;”后,程序将继续执行“case 2”里的语句“a = a+2;”;若“case 2”末尾也没有“break;”语句,那么“default”里的语句也将被执行。

例子2:

char ch=getcher();

swich(ch)

{case 'a':printf("test10000");break;

case '8':printf("test100231")break:

case 'b':printf("test20000");break;

case '...' :    .............;break;

可以是键盘中输入某个字符作为判断条件。

2、循环语句

2.1 do...while语句

do{
    循环体
}while(循环条件表达式);

首先“循环体”被执行一次,然后判断“循环条件表达式”是否为真;“循环条件表达式”为假则循环结束;若“循环条件表达式”为真则再次执行“循环体”接着再次判断“循环条件表达式”是否为真...如此循环执行直到“循环条件表达式”为假才结束循环。

do...while语句的特点是无论“循环条件表达式”值的真或假,“循环体”至少被执行一次。

例子:

int i = 0;
 
do{
    i = i + 1;
}while( i < 10 );

语句 “i = i + 1;” 被循环执行10次后i的值为10,这时”循环条件表达式“ ”i < 10“ 不再为真,循环结束。

2.2 while语句(循环时变量不会递增,不会像for一样有i++)

while(循环条件表达式){
    循环体 
}

首先判断 “循环条件表达式” 是否为真,假则结束循环;若 “循环条件表达式” 为真则执行 “循环体” 接着再次判断 “循环条件表达式” 是否为真...如此循环执行直到 “循环条件表达式” 为假才结束循环。

while语句与do...while语句的不同点是,除非“循环条件表达式”为值,否则不会执行“循环体”。

例子:

int i = 0;
 
while( i < 10 ){
    i = i + 1;
}

语句 “i = i + 1;” 将被被循环执行10次。

2.3 for语句

for(表达式1; 循环条件表达式; 表达式2){
    循环体
}

for循环体语句比较复杂同时也是最灵活的循环语句。for语句的执行顺序是:

(a) 执行 “表达式1”

(b) 判断 “循环条件表达式” 是否为真,不为真则跳到步骤(e)

(c) 执行 “循环体”

(d) 执行 “表达式2”,跳到步骤(b)

(e) 循环结束

例子:

int i = 10;
int n = 0;
 
for( i=1; i<=10; i=i+1){
    n = n * i;
}

2.4 循环控制语句

在任何循环语句的循环体中都可以使用 “continue;” 和 “break;” 语句对循环进行相关控制。

(1) “continue;” 语句

该语句的作用是放弃本次循环,并马上进入下一次循环。

把 2.3 的例子修改如下:

int i = 10;
int n = 0;
 
for( i=1; i<=10; i=i+1){ 
    if( i == 5 ) 
        continue; 

    n = n * i;
}

这段程序最终算得n为1~4,6~10这9个数的乘积。因为第5次循环(即i=5)时执行了 “continue” 语句,导致这次循环被放弃,进而 "continue" 下面的 “n = n * i;” 语句没被执行到。

(2) “break;” 语句

该语句的作用是结束整个循环。

把 2.3 的例子修改如下:

int i = 10;
int n = 0;
 
for( i=1; i<=10; i=i+1){ 
    if( i == 5 ) 
        break; 

    n = n * i;
}

这段程序最终算得n为1~4这4个数的乘积。因为第5次循环(即i=5 )时执行了 “break” 语句,导致整个循环被结束,进而第6次、第7次...第10次循环都不会被执行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值