機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
C程序 流程控制語句
C程序 流程控制語句
 更新時間:2008-7-27 16:05:13  點擊數(shù):2
【字體: 字體顏色

條件語句
在Turbo C2.0中條件語句的一般形式為:
if(表達式)
   語句1;
else
   語句2;
上述結構表示: 如果表達式的值為非0(TURE)即真, 則執(zhí)行語句1, 執(zhí)行完語 句1從語句2后開始繼續(xù)向下執(zhí)行; 如果表達式的值為0(FALSE)即假, 則跳過語句1而執(zhí)行語句2。
注意:
     1. 條件執(zhí)行語句中"else 語句2;"部分是選擇項, 可以缺省, 此時條件語句變成:
if(表達式)
   語句1;
表示若表達式的值為非0則執(zhí)行語句1 , 否則跳過語句1繼續(xù)執(zhí)行。
    2. 如果語句1或語句2有多于一條語句要執(zhí)行時, 必須使用"{"和"}" 把這些語句包括在其中, 此時條件語句形式為:
if(表達式)
{
    語句體1;
}
else
{
    語句體2;
}
3. 條件語句可以嵌套, 這種情況經(jīng)常碰到, 但條件嵌套語句容易出錯, 其原因主要是不知道哪個if對應哪else。
例如:
    if(x>20||x<-10)
    if(y<=100&&y>x)
         printf("Good");
    else
         printf("Bad");
對于上述情況, Turbo C2.0規(guī)定: else語句與最近的一個if語句匹配, 上例中的else與if(y<=100&&y>x)相匹配。為了使else與if(x>20||x<-10)相匹配, 必須用花括號。如下所示:
if(x>20||x<-10)
{
    if(y<=100&&y>x)
    printf("Good");
}
else
    printf("Bad");
4. 可用階梯式if-else-if結構。
階梯式結構的一般形式為:
if(表達式1)
     語句1;
else if(表達式2)
     語句2;
else if(表達式3)
    語句3;
    .
    .
else
    語句n;
這種結構是從上到下逐個對條件進行判斷, 一旦發(fā)現(xiàn)條件滿點足就執(zhí)行與它有關的語句, 并跳過其它剩余階梯; 若沒有一個條件滿足, 則執(zhí)行最后一個else語句n。最后這個else常起著"缺省條件"的作用。
同樣, 如果每一個條件中有多于一條語句要執(zhí)行時, 必須使用"{"和"}"把這 些語句包括在其中。

 
switch語句
在編寫程序時, 經(jīng)常會碰到按不同情況分轉的多路問題, 這時可用嵌套if-else-fi語句來實現(xiàn), 但if-else-if語句使用不方便, 并且容易出錯。對這種情況, Turbo C2.0提供了一個開關語句。

開關語句格式為:
switch(變量)
{
    case 常量1:
       語句1或空;
    case 常量2:
       語句2或空;
       .
       .
       .
    case 常量n;
      語句n或空;
   default:
      語句n+1或空;
}
執(zhí)行switch開關語句時, 將變量逐個與case后的常量進行比較, 若與其中一個相等, 則執(zhí)行該常量下的語句, 若不與任何一個常量相等, 則執(zhí)行default 后面的語句。
注意:
1. switch中變量可以是數(shù)值, 也可以是字符。
2. 可以省略一些case和default。
3. 每個case或default后的語句可以是語句體, 但不需要使用"{"和"}"括起來。
下例的switch中變量為整數(shù)型。

main()
{
int test;
for(test=0; test<=10; test++)
{
switch(test) /*變量為整型數(shù)的開關語句*/
{
case 1:
printf("%d\n", test);
break; /*退出開關語句*/
case 2:
printf("%d\n", test);
break;
case 3:
printf("%d\n", test);
break;
default:
puts("Error");
break;
}
}
}
下例的switch中變量為字符型。

#include<stdio.h>
main()
{
char c;
while(c!=27) /*循環(huán)直到按Esc鍵結束*/
{
c=getch(); /*從鍵盤不回顯接收一個字符*/
switch(c)
{
case 'A': /*接收的字符為'A'*/
putchar(c);
break; /*退出開關語句*/
case 'B':
putchar(c);
break;
default: /*接收的字符非'A'和'B'*/
puts("Error");
break;
}
}
}

for循環(huán)

for循環(huán)是開界的。它的一般形式為:
for(<初始化>; <條件表過式>; <增量>)
     語句;
(1)初始化總是一個賦值語句, 它用來給循環(huán)控制變量賦初值;
(2) 條件表達式是一個關系表達式, 它決定什么時候退出循環(huán);
(3) 增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用";"分開。


例如:
for(i=1; i<=10; i++)
     語句;
上例中先給i賦初值1, 判斷i是否小于等于10, 若是則執(zhí)行語句, 之后值增加1。再重新判斷, 直到條件為假, 即i>10時, 結束循環(huán)。
注意:
1. for循環(huán)中語句可以為語句體, 但要用"{"和"}"將參加循環(huán)的語句括起來。
2. for循環(huán)中的"初始化"、"條件表達式"和"增量"都是選擇項, 即可以缺省, 但";"不能缺省。省略了初始化, 表示不對循環(huán)控制變量賦初值。 省略了條件表達式, 則不做其它處理時便成為死循環(huán)。省略了增量, 則不對循環(huán)控制變量進行操作, 這時可在語句體中加入修改循環(huán)控制變量的語句。
3. for循環(huán)可以有多層嵌套。
例16:
main()
{
   int i, j, k;
   printf("i j k\n");
   for (i=0; i<2; i++)
   for(j=0; j<2; j++)
   for(k=0; k<2; k++)
   printf(%d %d %d\n", i, j, k);
}

 
for循環(huán)

for循環(huán)是開界的。它的一般形式為:
for(<初始化>; <條件表過式>; <增量>)
     語句;
(1)初始化總是一個賦值語句, 它用來給循環(huán)控制變量賦初值;
(2) 條件表達式是一個關系表達式, 它決定什么時候退出循環(huán);
(3) 增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個部分之間用";"分開。


例如:
for(i=1; i<=10; i++)
     語句;
上例中先給i賦初值1, 判斷i是否小于等于10, 若是則執(zhí)行語句, 之后值增加1。再重新判斷, 直到條件為假, 即i>10時, 結束循環(huán)。
注意:
1. for循環(huán)中語句可以為語句體, 但要用"{"和"}"將參加循環(huán)的語句括起來。
2. for循環(huán)中的"初始化"、"條件表達式"和"增量"都是選擇項, 即可以缺省, 但";"不能缺省。省略了初始化, 表示不對循環(huán)控制變量賦初值。 省略了條件表達式, 則不做其它處理時便成為死循環(huán)。省略了增量, 則不對循環(huán)控制變量進行操作, 這時可在語句體中加入修改循環(huán)控制變量的語句。
3. for循環(huán)可以有多層嵌套。
例16:
main()
{
   int i, j, k;
   printf("i j k\n");
   for (i=0; i<2; i++)
   for(j=0; j<2; j++)
   for(k=0; k<2; k++)
   printf(%d %d %d\n", i, j, k);
}

while循環(huán)與do-while 循環(huán)

while循環(huán)的一般形式為:
while(條件)
    語句;
while循環(huán)表示當條件為真時, 便執(zhí)行語句。直到條件為假才結束循環(huán)。并繼續(xù)執(zhí)行循環(huán)程序外的后續(xù)語句.
例17:
#include<stdio.h>
main()
{
char c;
c='\0'; /*初始化c*/
while(c!='\X0D') /*回車結束循環(huán)*/
c=getche(); /*帶回顯的從鍵盤接收字符*/
}
上例中, while循環(huán)是以檢查c是否為回車符開始, 因其事先被初始化為空,所以條件為真, 進入循環(huán)等待鍵盤輸入字符; 一旦輸入回車, 則c='\X0D', 條件為假, 循環(huán)便告結束。
與for循環(huán)一樣, while循環(huán)總是在循環(huán)的頭部檢驗條件, 這就意味著循環(huán)可能什么也不執(zhí)行就退出。
注意:
1. 在while循環(huán)體內也允許空語句。
例如:
while((c=getche())!='\X0D');
這個循環(huán)直到鍵入回車為止。
2. 可以有多層循環(huán)嵌套。
3. 語句可以是語句體, 此時必須用"{"和"}"括起來。
例18:
#include<stdio.h>
main()
{
char c, fname[13];
FILE *fp; /*定義文件指針*/
printf("File name:"); /*提示輸入文件名*/
scanf("%s", fname); /*等待輸入文件名*/
fp=fopen(fname, "r"); /*打開文件只讀*/
while((c=fgetc(fp)!=EOF) /*讀取一個字符并判斷是否到文件結束*/
putchar(c); /*文件未結束時顯示該字符*/

}

do-while 循環(huán)
do-while 循環(huán)的一般格式為:
do
語句;
while(條件);
這個循環(huán)與while循環(huán)的不同在于: 它先執(zhí)行循環(huán)中的語句, 然后再判斷條件是否為真, 如果為真則繼續(xù)循環(huán); 如果為假, 則終止循環(huán)。因此, do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。同樣當有許多語句參加循環(huán)時, 要用"{"和"}"把它們括

continue 語句
continue語句的作用是跳過循環(huán)本中剩余的語句而強行執(zhí)行下一次循環(huán)。
continue語句只用在for、while、do-while等循環(huán)體中, 常與if條件語句一起使用, 用來加速循環(huán)。 
main()
{
   char c;
   while(c!=0X0D) /*不是回車符則循環(huán)*/
   {
     c=getch();
     if(c==0X1B)
       continue; /*若按Esc鍵不輸出便進行下次循環(huán)*/
     printf("%c\n", c);
   }
}

break語句
    break語句通常用在循環(huán)語句和開關語句中。當break用于開關語句switch中時, 可使程序跳出switch而執(zhí)行switch以后的語句; 如果沒有break語句, 則將成為一個死循環(huán)而無法退出。
當break語句用于do-while、for、while循環(huán)語句中時, 可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句, 通常break語句總是與if語句聯(lián)在一起。 即滿足條件時便跳出循環(huán)。
main()
{
   int i=0;
   char c;
   while(1) /*設置循環(huán)*/
   {
    c='\0'; /*變量賦初值*/
    while(c!=13&&c!=27) /*鍵盤接收字符直到按回車或Esc鍵*/
    {
      c=getch();
      printf("%c\n", c);
    }
    if(c==27)
      break; /*判斷若按Esc鍵則退出循環(huán)*/
    i++;
    printf("The No. is %d\n", i);
  }
  printf("The end");
}
注意:
1. break語句對if-else的條件語句不起作用。
2. 在多層循環(huán)中, 一個break語句只向外跳一層。

 
return語句

return語句的一般格式為:

return表達式;

函數(shù)的返回值是由函數(shù)體中的return語句實現(xiàn)返回的。

return語句一般放在函數(shù)體的最后,用于結束函數(shù)的執(zhí)行,返回調用函數(shù)。若它帶有表達式(此表達式可以用一對小括號括起來),系統(tǒng)會將它轉化為在函數(shù)頭中定義的類型。因而要求表達式的類型與定義中的函數(shù)值類型一致。若一個不帶表達式的return語句放在函數(shù)的最后,則可省略。

一個函數(shù)中可以有多個return語句,但只能有一個return語句起作用。

 
 

  • 上一篇: C語言初學者入門講座 第一講 慨述
  • 下一篇: C函數(shù)功能說明
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1