找回密码
 立即注册
查看: 251|回复: 0

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

[复制链接]
发表于 2022-5-11 10:40 | 显示全部楼层 |阅读模式
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次循环都不会被执行了。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-3 10:18 , Processed in 0.136337 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表