版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算中心計算中心- NEU Computer Center- NEU Computer Center焦明海焦明海() () 8368760283687602第四章第四章 程序控制語句程序控制語句20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 3 3 目錄4.1 c語句概述4.2 格式輸入輸出4.3 字符數(shù)據(jù)的輸入輸出4.4 順序結(jié)構(gòu)程序設(shè)計舉例4.5 選擇結(jié)構(gòu)程序設(shè)計4.6 循環(huán)控制結(jié)構(gòu)程序設(shè)計20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 4 4 4.1 C語句概述 1. 控制語句控制語句( 9 9種種) : 完成一定的控制功能完成一定的控制功能 if (
2、 ) else 條件語句條件語句( 雙分支選擇語句雙分支選擇語句) switch 多分支選擇語句多分支選擇語句 for ( ) while ( ) 循環(huán)語句循環(huán)語句 do while ( ) continue 結(jié)束本次循環(huán)語句結(jié)束本次循環(huán)語句 break 中止語句中止語句 goto 轉(zhuǎn)向語句轉(zhuǎn)向語句 return 從函數(shù)返回語句從函數(shù)返回語句 2. 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 : 由一個函數(shù)調(diào)用加一個分號構(gòu)成由一個函數(shù)調(diào)用加一個分號構(gòu)成 如如: printf(“very good!”);3. 表達式語句表達式語句 : 由表達式加分號構(gòu)成由表達式加分號構(gòu)成 如如: x=12 ; ( 賦值表達式語句
3、賦值表達式語句 ) 4. 空語句空語句 : 由一個分號構(gòu)成由一個分號構(gòu)成 , 它什么也不做它什么也不做 ; 復(fù)合語句復(fù)合語句 : 用用 括起來的語句序列括起來的語句序列 如如 int temp ; temp = x ; x = y ; y = temp ; 注意注意 : 1. 復(fù)合語句是一個整體復(fù)合語句是一個整體, 相當于一條語句相當于一條語句2. 一個復(fù)合語句中可以包含其他的復(fù)合語句一個復(fù)合語句中可以包含其他的復(fù)合語句3. 在復(fù)合語句的花括號后不要再加分號在復(fù)合語句的花括號后不要再加分號4. 復(fù)合語句中可定義變量復(fù)合語句中可定義變量 , 但此變量只在但此變量只在 該復(fù)合語句內(nèi)有效該復(fù)合語句內(nèi)
4、有效20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 6 6 4.2 格式輸入輸出函數(shù)一、一、 printf函數(shù)函數(shù) 格式格式: printf ( 格式控制格式控制, 輸出表列輸出表列 ) ; 如如: printf(“a=%dn” , a) ;1. 格式控制格式控制: 用用“ ” 括起來的字符串括起來的字符串 , 包括如下兩個部分包括如下兩個部分 (1) 普通字符普通字符( 包括轉(zhuǎn)義字符包括轉(zhuǎn)義字符) : 需要原樣輸出的字符需要原樣輸出的字符 (2) 格式說明格式說明: 由由%和格式字符組成和格式字符組成 其作用是將輸出數(shù)據(jù)按指定的格式輸出其作用是將輸出數(shù)據(jù)按指定的格式輸出C語
5、言沒有提供專門的輸入語言沒有提供專門的輸入/輸出語句,其輸入輸出操作是輸出語句,其輸入輸出操作是由函數(shù)實現(xiàn)的。由函數(shù)實現(xiàn)的。C語言提供的函數(shù)以庫的形式存在,這些庫語言提供的函數(shù)以庫的形式存在,這些庫函數(shù)定義在頭文件函數(shù)定義在頭文件stdio.h中。因此在程序中如果用到輸入輸中。因此在程序中如果用到輸入輸出函數(shù),需在程序的頭部包含該頭文件。出函數(shù),需在程序的頭部包含該頭文件。#include#include “stdio.h” % 格式字符格式字符 l m.n 0 - - 格式字符格式字符 : 指定輸出項的數(shù)據(jù)類型和輸出格式指定輸出項的數(shù)據(jù)類型和輸出格式 c d f s 長度修正符長度修正符 :
6、 l 對長整型和對長整型和double型型 域?qū)捈熬让枋龇驅(qū)捈熬让枋龇?m.n ( m控制域?qū)捒刂朴驅(qū)? n 控制小數(shù)位數(shù)控制小數(shù)位數(shù) ) 數(shù)數(shù)0用以在指定數(shù)字前的空位是否用用以在指定數(shù)字前的空位是否用0填補填補(對整型對整型,實型可用實型可用) 負號用以指定輸出項是否為左對齊方式負號用以指定輸出項是否為左對齊方式 2. 輸出列表輸出列表 : 輸出項可以是常量輸出項可以是常量, 變量變量, 表達式表達式例例: int x=8, y=- -2;float a=3.14; printf(“%dn”, 25); printf(“%03dn”, x); printf(“%3.6fn”, a);
7、printf(“%2.3sn”, “C Language”); printf(“x*y=%dn”, x*y); printf(“|y|=%dn”, fabs(y) );250083.140000C Lx*y=-16|y|=2 二、二、 scanf函數(shù)函數(shù) 格式格式: scanf ( 格式控制格式控制 , 變量地址表列變量地址表列 ) ; 1. 地址參數(shù)地址參數(shù) : 變量的地址可通過地址運算符變量的地址可通過地址運算符“&”得到得到 例例 int x ; &x 將給出變量將給出變量x 所占內(nèi)存空間的首地址所占內(nèi)存空間的首地址 2. 格式控制格式控制 (1) 格式說明格式說明 % * m l 格式
8、字符格式字符 m 用以指定寬度讀入數(shù)據(jù)用以指定寬度讀入數(shù)據(jù) * : 表示跳過相應(yīng)位置的輸入數(shù)據(jù),不賦給對應(yīng)變量表示跳過相應(yīng)位置的輸入數(shù)據(jù),不賦給對應(yīng)變量如如 scanf(“%d %*c%d%*c%d”,&d, &m,&y) ; 3/14/2006 3. 注意問題注意問題 (1) 格式控制中出現(xiàn)的除格式說明以外的其他字符格式控制中出現(xiàn)的除格式說明以外的其他字符, 在輸入數(shù)據(jù)時要輸入與其相同的字符在輸入數(shù)據(jù)時要輸入與其相同的字符 如如 scanf(“a=%d , b=%d”, &a , &b) ; 輸入輸入: a=12 , b=45 (3) 輸入數(shù)值數(shù)據(jù)時,遇到以下情況時輸入結(jié)束輸入數(shù)值數(shù)據(jù)時,遇
9、到以下情況時輸入結(jié)束 遇到空格遇到空格, 或按或按“回車回車”鍵鍵, “跳格跳格”鍵鍵 按指定的寬度結(jié)束按指定的寬度結(jié)束 如如 scanf(“%d%3d%2d”, &x , &y , &z) ; 輸入輸入: 25 1867490 x 為為 25 , y 為為 186 , z 為為 74 遇到非法輸入遇到非法輸入 如如scanf(“%d%d”, &x , &y ) ; 輸入輸入: 25 , 3 x 為為 25 , y 無正確數(shù)據(jù)無正確數(shù)據(jù)( 因遇到逗號而出錯因遇到逗號而出錯)(2) 用用%c輸入字符時輸入字符時, 空格和轉(zhuǎn)義字符都會作為有效字符輸入空格和轉(zhuǎn)義字符都會作為有效字符輸入 如如 sca
10、nf(“%c%c”, &ch1, &ch2) ; 輸入輸入 : A B 則則ch 1為字符為字符A , ch2為空格為空格 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1010 4.3 字符數(shù)據(jù)的輸入和輸出 一、一、 字符輸出函數(shù)字符輸出函數(shù)( putchar函數(shù)函數(shù)) 格式格式 : putchar(參數(shù)參數(shù)) 功能功能: 將參數(shù)對應(yīng)的字符輸出到顯示器上將參數(shù)對應(yīng)的字符輸出到顯示器上, 參數(shù)可以是字符型或整型的常量和參數(shù)可以是字符型或整型的常量和 變量變量例例: #include void main( ) char a=B, b, c; b=O; putchar(a);
11、putchar(b); putchar(Y); 輸出輸出: BOY: BOY注意注意: putchar: putchar函數(shù)只有一個參數(shù)函數(shù)只有一個參數(shù)二、二、 字符輸入函數(shù)(字符輸入函數(shù)( getchar函數(shù))函數(shù)) 格式格式 : getchar( ) ( 注意它是無參函數(shù)注意它是無參函數(shù) ) 功能功能 : 從鍵盤輸入一個字符從鍵盤輸入一個字符例例:#include void main( ) char ch; ch=getchar( ); getchar( ); putchar(ch); putchar(n); putchar(getchar( ) ; 假設(shè)輸入假設(shè)輸入: ABCD: ABC
12、D輸出輸出: : A A C C注意注意: :一般連續(xù)輸入可顯示字符一般連續(xù)輸入可顯示字符, , 若中間有空格若中間有空格, ,回車等字符回車等字符, , 在輸出時是不可見的在輸出時是不可見的若輸入若輸入: A BC: A BC若輸入若輸入: AB: AB輸出輸出: : A A B B輸出輸出: : A A 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1212 4.4 順序結(jié)構(gòu)程序設(shè)計舉例例例: :輸入三角形輸入三角形3 3邊長邊長, ,求其面積求其面積公式公式 area=s(s-a)(s-b)(s-c) s=(a+b+c)/2 #include void main( )
13、 float a,b,c,s,area; scanf(“%f%f%f”,&a,&b,&c); s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=%fn”,area);輸入輸入a,b,c 3a,b,c 3邊長邊長按公式計算按公式計算s s的值的值按公式計算按公式計算areaarea的值的值輸出輸出areaarea的值的值20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1313 4.5 選擇結(jié)構(gòu)程序設(shè)計1.關(guān)系運算符和關(guān)系表達式2.邏輯運算符和邏輯表達式3.if語句4.switch語句5.程序舉例20082008
14、東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1414 1.關(guān)系運算符和關(guān)系表達式 注意注意 : (1) 字符數(shù)據(jù)按其字符數(shù)據(jù)按其ASCII碼值進行比較碼值進行比較 (2) 應(yīng)避免應(yīng)避免2個實數(shù)作個實數(shù)作 = = 或或 != 的比較的比較 一、關(guān)系運算符一、關(guān)系運算符 = 278 是允許的是允許的 , 它相當于它相當于 (52)7)8 (4) 可以將關(guān)系表達式看成是一種整型表達式可以將關(guān)系表達式看成是一種整型表達式20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1515 2.邏輯運算符和邏輯表達式 一、一、 邏輯運算符邏輯運算符 ! & | 1. 3個運算符的優(yōu)先級由高到
15、低為個運算符的優(yōu)先級由高到低為 ! & | 2. ! 的優(yōu)先級高于關(guān)系運算的優(yōu)先級高于關(guān)系運算, &和和 | 的優(yōu)先級的優(yōu)先級 低于關(guān)系運算低于關(guān)系運算 3. ! 是右結(jié)合性是右結(jié)合性, & 和和 | 是左結(jié)合性是左結(jié)合性 , 85&!2二、邏輯表達式二、邏輯表達式1.1.邏輯表達式的值應(yīng)該是邏輯表達式的值應(yīng)該是“邏輯真邏輯真”或或“邏輯假邏輯假”, 邏輯運算的結(jié)果以數(shù)值邏輯運算的結(jié)果以數(shù)值1代表代表“真真”, 以數(shù)值以數(shù)值0代表代表“假假”; 進行判斷時進行判斷時, 非零值代表非零值代表“真真”, 零值代表零值代表“假假”例例: : 表示表示 x -1,1x -1,1區(qū)間區(qū)間 應(yīng)寫為應(yīng)寫為:
16、 x=-1 & x=-1 & x=12.2.邏輯運算中的規(guī)律邏輯運算中的規(guī)律 (1) 在在& 表達式中表達式中, 若左端為若左端為0, 則不必再計算右端則不必再計算右端, 表達式值為表達式值為0 即即: 0 & a = 0 (2) 類似有類似有 1 | a = 1 規(guī)律規(guī)律:0|a =a 0&a=01|a=1 1&a=aa|a=a a&a=aa|!a=1 a&!a=0!(a|b)=!a&!b !(a&b)=!a|!b 例例 #include void main( ) int x, y, z ; x = y = z = 0 ; +x | +y & +z ; printf(“%d ,%d ,%dn
17、”, x,y,z); x = y = z = -1 ; +x & +y | +z ; printf(“%d ,%d ,%dn”, x,y,z); (+x) | ( (+y)&(+z) )輸出結(jié)果輸出結(jié)果:1 , 0 , 00 , - -1 , 0(+x) & (+y) | (+z) 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1818 3.if語句 一、一、if 語句的兩種形式語句的兩種形式 1. 單分支形式單分支形式: if ( 表達式表達式 ) 語句語句 2. 雙分支形式雙分支形式: if ( 表達式表達式 ) 語句語句1 else 語句語句2 執(zhí)行過程執(zhí)行過程: :
18、 先計算表達式先計算表達式的值的值, 如果值為如果值為1, 就執(zhí)行其后的就執(zhí)行其后的 語句語句, 如果值為如果值為0, 就繼續(xù)向下執(zhí)行就繼續(xù)向下執(zhí)行.執(zhí)行過程執(zhí)行過程: : 先計算表達式的值先計算表達式的值, 如果值為如果值為1, 就執(zhí)行其后的就執(zhí)行其后的 語句語句1, 如果值為如果值為0, 就執(zhí)行就執(zhí)行else后的語句后的語句2說明說明: 1. 語句可以是簡單語句或復(fù)合語句語句可以是簡單語句或復(fù)合語句 2. 表達式一般為邏輯或關(guān)系表達式表達式一般為邏輯或關(guān)系表達式, 且應(yīng)用且應(yīng)用( )括起來括起來 語句語句1 語句語句2成立成立不成立不成立P語句語句成立成立P20082008東北大學(xué)計算機基
19、礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 1919 #include #include void main( ) int x, y; scanf(“%d”, &x); if (x0) y=pow(x, 3)+x+1; printf(“y=%dn”, y); 例例: :編程求解函數(shù)編程求解函數(shù) Y= 0 X=0Y= 0 X0+X+1 X0 #include #include void main( ) int x, y; scanf(“%d”, &x); if (xb?abac?bc?acbc輸出輸出a , b, c是是是是是是否否否否否否#include void main( ) int a,b,c,t
20、; scanf(“%d%d%d”,&a,&b,&c); if (ab) t=a; a=b; b=t; if (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; printf(“%d,%d,%dn”, a, b, c);二、二、 if 語句的嵌套語句的嵌套 : 在在if 語句中又包括一個或多個語句中又包括一個或多個if 語句語句規(guī)定規(guī)定: 在在if 嵌套結(jié)構(gòu)中嵌套結(jié)構(gòu)中, else是與其前面最近的尚未配對的是與其前面最近的尚未配對的if 配對配對1. if (表達式表達式1) if (表達式表達式2) 語句語句4. if (表達式表達式1) if (表達式表達式
21、2) 語句語句1 else 語句語句22. if (表達式表達式1) 語句語句1 else if (表達式表達式2) 語句語句23. if (表達式件表達式件1) 語句語句1 else if (表達式表達式2) 語句語句2 else 語句語句3對第對第4 4種形式可以有兩種理解方式種形式可以有兩種理解方式: :(1) if (表達式表達式1) if (表達式表達式2) 語句語句1 else 語句語句2 (2) if (表達式表達式1) if (表達式表達式2) 語句語句1 else 語句語句2 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 2222 例例: 編程求解函數(shù)編程
22、求解函數(shù) y = y = - -1 x0方法方法1if (x=0) if (x0) y=1; else y=0;else y=- -1;y=- -1y=0y=1x=0 x0真真假假真真假假方法方法3y=- -1;if(x!=0) if(x0) y=1; else y=0; y = y = - -1 x=00 x0y=- -1x!=0 x0y=1y=0真真真真假假假假修改方法修改方法3y=- -1;if(x!=0) if(x0) y=1; else y=0; y=- -1x!=0 x0y=1y=0真真真真假假假假 三、三、 條件運算條件運算 例例 max=ab? a : b+1 ab? a :
23、cd? c : d 注意注意: (1) 表達式表達式1, 表達式表達式2和表達式和表達式3 的數(shù)據(jù)類型可以互不相同的數(shù)據(jù)類型可以互不相同 (2) 條件表達式的值的數(shù)據(jù)類型與表達式條件表達式的值的數(shù)據(jù)類型與表達式2, 表達式表達式 3中數(shù)中數(shù) 據(jù)類型較高的那個保持一致?lián)愋洼^高的那個保持一致 如如 75? 10 : 1.4 條件表達式的值為條件表達式的值為10.0 ab? a : (cd? c : d )1. 條件運算符條件運算符 ? : 優(yōu)先級僅高于賦值類優(yōu)先級僅高于賦值類, 是右結(jié)合性是右結(jié)合性 執(zhí)行過程執(zhí)行過程: 先計算表達式先計算表達式1 , 若其值為非零值若其值為非零值(真真), 則計
24、算表達式則計算表達式2 的值的值, 該條件表達式的值即為表達式該條件表達式的值即為表達式2 的值的值; 若表達式若表達式1的值為零的值為零(假假), 則計算表達式則計算表達式3 的值的值, 該條件表達式的值即為表達式該條件表達式的值即為表達式3 的值的值2. 條件表達式的一般形式條件表達式的一般形式 : 表達式表達式1? 表達式表達式2 : 表達式表達式3 max=(ab? a : b+1)用條件表達式實現(xiàn)用條件表達式實現(xiàn) #include void main( ) int max; max=xy? x : y ; max=zmax? z : max; printf(“max=%d”,max)
25、; 當當ifif中的語句為簡單賦值語句時中的語句為簡單賦值語句時, ,我們可以用條件表達式我們可以用條件表達式來取代來取代if if 語句語句例例 求求3 3個數(shù)中的最大數(shù)個數(shù)中的最大數(shù)#includevoid main( ) int max; if (xy) max=x; else max=y; if (zmax) max=z; printf(“max=%d”,max);20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 2626 4.switch語句 一、一、switch語句的格式語句的格式 switch ( 表達式表達式 ) case 常量表達式常量表達式1 : 語句語句1
26、 case 常量表達式常量表達式2 : 語句語句2 : : : case 常量表達式常量表達式n : 語句語句n default : 語句語句n+1 注意注意: 1. 表達式一般多為整型或字符型表達式表達式一般多為整型或字符型表達式 2. case后常量表達式的值必須互不相同后常量表達式的值必須互不相同 3. case和和default的出現(xiàn)次序不影響結(jié)果的出現(xiàn)次序不影響結(jié)果 4. 語句語句1至語句至語句n+1為復(fù)合語句時可省略為復(fù)合語句時可省略 多個多個case可以共用一組執(zhí)行語句可以共用一組執(zhí)行語句 Switch語句可以嵌套語句可以嵌套 switch語句的執(zhí)行過程語句的執(zhí)行過程 : 計算計
27、算switch后表達式的值后表達式的值 如果表達式的值與某個如果表達式的值與某個case常量表達式的值相等時常量表達式的值相等時, 就執(zhí)行此就執(zhí)行此case后的語句后的語句, 執(zhí)行完后將繼續(xù)執(zhí)行下一個執(zhí)行完后將繼續(xù)執(zhí)行下一個case后的語句后的語句, 如果表達式的值與所有如果表達式的值與所有case常量表達式的值都不同常量表達式的值都不同, 就執(zhí)行就執(zhí)行default后的語句后的語句 例例 void main ( ) int x, y ; printf(“input a number:n”); scanf(“%d” , &x) ; switch (x) case 1 : y=10 ; prin
28、tf(“%dn” , y) ; case 2 : y=20 ; printf(“%dn” , y) ; case 3 : y=30 ; printf(“%dn” , y) ; default : y=0 ; printf(“%dn” , y) ; 如果輸入如果輸入x為為 2則輸出則輸出: 20 30 0如果輸入如果輸入x為為 6則輸出則輸出: 020082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 2828 注意注意 : 在執(zhí)行一個在執(zhí)行一個case 分支后分支后, 應(yīng)用應(yīng)用break語句結(jié)束語句結(jié)束switch語句語句 void main ( ) int x, y ; print
29、f(“input a number:n”); scanf(“%d” , &x) ; switch (x) case 1 : y=10 ; printf(“%dn” , y) ; break; case 2 : y=20 ; printf(“%dn” , y) ; break; case 3 : y=30 ; printf(“%dn” , y) ; break; default : y=0 ; printf(“%dn” , y) ; 如果輸入如果輸入x為為 2則輸出則輸出: 20 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 2929 4.6 循環(huán)控制1.概述2. while
30、語句3. do-while語句4. for語句5. 循環(huán)的嵌套6. break語句和continue語句20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 3030 1.概述在實際問題中在實際問題中, 我們常常遇到需要重復(fù)處理的工作我們常常遇到需要重復(fù)處理的工作例如例如: 求求1100的和的和 , 或求一個班英語成績的平均分或求一個班英語成績的平均分一般來說循環(huán)控制方法分兩種一般來說循環(huán)控制方法分兩種:(1) 條件循環(huán)條件循環(huán) ( while循環(huán)循環(huán) 和和 do while 循環(huán)循環(huán) ) 條件滿足時執(zhí)行循環(huán)條件滿足時執(zhí)行循環(huán), 條件不滿足時結(jié)束循環(huán)條件不滿足時結(jié)束循環(huán)(2) 計數(shù)
31、循環(huán)計數(shù)循環(huán) ( for 循環(huán)循環(huán) ) 先確定循環(huán)次數(shù)先確定循環(huán)次數(shù), 然后執(zhí)行循環(huán)然后執(zhí)行循環(huán), 完成循環(huán)次數(shù)后結(jié)束完成循環(huán)次數(shù)后結(jié)束注注: C語言中的語言中的for循環(huán)非常靈活循環(huán)非常靈活, 功能強大功能強大, 也可以實現(xiàn)也可以實現(xiàn) 循環(huán)次數(shù)不確定的情況循環(huán)次數(shù)不確定的情況, 完全可以代替完全可以代替while循環(huán)循環(huán)20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 3131 2.while語句2. 執(zhí)行過程執(zhí)行過程 : 先計算表達式的值先計算表達式的值, 值為真值為真(非零非零)時執(zhí)行循環(huán)體時執(zhí)行循環(huán)體, 值為假時結(jié)束循環(huán)值為假時結(jié)束循環(huán) 1. 格式格式 : while
32、(表達式表達式) 循環(huán)體語句循環(huán)體語句3. 注意注意 :(1) 表達式必須用表達式必須用( ) 括起來括起來(2) 循環(huán)體語句為復(fù)合語句時循環(huán)體語句為復(fù)合語句時, 必須用必須用 把它們括起來把它們括起來(3) 循環(huán)體語句中必須有使循環(huán)趨向結(jié)束的語句循環(huán)體語句中必須有使循環(huán)趨向結(jié)束的語句 A當當P成立成立AP成立成立不成立不成立例例: 求求1100 的和的和#include void main ( ) int i , sum; sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“sum=%dn”, sum);分析分析: 輸入輸入, 輸出分別是什么輸出
33、分別是什么? 需要幾個變量需要幾個變量? 程序大體可分為幾個步驟程序大體可分為幾個步驟?sum=0i=1i=100 ?sum=sum+ii=i+1輸出輸出sum的值的值例例: 求求1n 的和的和, n為任意正整數(shù)為任意正整數(shù)sum=0i=1i=n ?sum=sum+ii=i+1輸出輸出sum的值的值輸入輸入n #include void main ( ) int i , sum , n ; sum=0; i=1; printf(“Input value n:n”); scanf(“%d”, &n); while (i=n) sum=sum+i; i+; printf(“sum=%dn”, su
34、m);例例: 求某個班英語成績的平均分求某個班英語成績的平均分, 該班學(xué)生人數(shù)和每個該班學(xué)生人數(shù)和每個 學(xué)生的成績由鍵盤輸入學(xué)生的成績由鍵盤輸入sum=0i=1i=n ?sum=sum+si=i+1輸出輸出ave的值的值輸入輸入n (n表示學(xué)生人數(shù)表示學(xué)生人數(shù))輸入輸入s (s表示成績表示成績)ave=sum/n #include void main ( ) int i , n ; float s , sum , ave ; sum=0; i=1; printf(“Input the student number: ”); scanf(“%d”, &n); while (i=n) scanf(
35、“%f”, &s); sum=sum+s ; i+ ; ave=sum/n ; printf(“ave=%2fn”, ave);例例: 編程求編程求 的近似值的近似值, 公式公式 /4 1- -1/3+1/5- -1/7+1/9- -分析分析:題目仍可以看成是累加求和題目仍可以看成是累加求和不同的是不同的是, 相加的每一項正負相間相加的每一項正負相間, 公式是無窮的公式是無窮的, 所以我們規(guī)定當所以我們規(guī)定當相加項的絕對值小于相加項的絕對值小于0.000001(即即106 )時停止計算時停止計算#include #include void main( ) int s; float n , t
36、, pi ; s=1 ; n=1; t=1; pi=0; while ( fabs(t)1e-6 ) pi=pi+t ; n=n+2; s=- -s; t=s/n; pi=4*pi ; printf(“ pi=%10.6fn”, pi );tpins11- -13- -1/310 10.671/55120082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 3636 3.do-while語句不成立不成立AP成立成立 當當P成立成立 A 1. 格式格式 : do 循環(huán)體語句循環(huán)體語句 while (表達式表達式) ;2. 執(zhí)行過程執(zhí)行過程 : 先執(zhí)行循環(huán)體先執(zhí)行循環(huán)體, 然后計算表達式的
37、值然后計算表達式的值, 若值為真則重復(fù)執(zhí)行循環(huán)體若值為真則重復(fù)執(zhí)行循環(huán)體, 若值為假則結(jié)束循環(huán)若值為假則結(jié)束循環(huán)3. 注意注意 :(1) 表達式必須用表達式必須用( ) 括起來括起來(2) 循環(huán)體語句為多條語句時循環(huán)體語句為多條語句時, 必須用必須用 把它們括起來把它們括起來(3) 循環(huán)體語句中必須有使循環(huán)趨向結(jié)束的語句循環(huán)體語句中必須有使循環(huán)趨向結(jié)束的語句 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 3737 例例: 求求1100 的和的和#include void main ( ) int i , sum; sum=0; i=1; do sum=sum+i; i+;
38、while (i=100) ; printf(“sum=%dn”, sum);sum=0i=1i=100 ?sum=sum+ii=i+1輸出輸出sum的值的值4. while循環(huán)和循環(huán)和do-while循環(huán)的比較循環(huán)的比較 while do-whilewhile do-while(1)(1)先判斷條件再執(zhí)行循環(huán)體先判斷條件再執(zhí)行循環(huán)體 先執(zhí)行循環(huán)體再判斷條件先執(zhí)行循環(huán)體再判斷條件(2)(2)循環(huán)體可能一次也不執(zhí)行循環(huán)體可能一次也不執(zhí)行 至少執(zhí)行一次循環(huán)體至少執(zhí)行一次循環(huán)體#include void mian( ) int sum=0 , i ; scanf(“%d”, &i ); while
39、(i=10) sum=sum+i ; i+ ; printf(”%dn”,sum);#include void mian( ) int sum=0 , i ; scanf(“%d”, &i ); do sum=sum+i ; i+ ; while (i=10) ; printf(”%dn”,sum);20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 3939 4.for語句1. 格式格式 : for (表達式表達式1 ; 表達式表達式2 ; 表達式表達式3) 循環(huán)體語句循環(huán)體語句2. 執(zhí)行過程執(zhí)行過程: (1) 計算表達式計算表達式1 (2) 計算表達式計算表達式2, 若值為真
40、則執(zhí)行循環(huán)體若值為真則執(zhí)行循環(huán)體, 再執(zhí)行第再執(zhí)行第(3)步步; 若值為假則結(jié)束循環(huán)若值為假則結(jié)束循環(huán) (3) 計算表達式計算表達式3, 再重復(fù)執(zhí)行第再重復(fù)執(zhí)行第(2)步步sum=0; i=1;while ( i=100 ) sum=sum+i ; i+ ; sum=0;for( i=1 ; i=100 ; i+) sum=sum+i ;例例 : 將將1100求和的求和的while循環(huán)轉(zhuǎn)換為用循環(huán)轉(zhuǎn)換為用for循環(huán)實現(xiàn)循環(huán)實現(xiàn)3. 說明說明(1) 可以省略表達式可以省略表達式1 sum = 0 ; for ( i=1 ; i=100 ; i+ ) sum = sum+i ; i=1;(2) 可
41、以省略表達式可以省略表達式3 sum = 0 ; for ( i=1 ; i=100 ; i+ ) sum = sum+i ; i+ ;(3) 同時省略表達式同時省略表達式1和表達式和表達式3 sum = 0 ; i=1 ; for ( ; i=100 ; ) sum = sum+i ; i+ ; (4) 表達式表達式1 , 表達式表達式3還可以是逗號表達式還可以是逗號表達式 for ( sum = 0 , i = 1 ; i=100 ; sum = sum+i , i+ ) ;(5) 表達式表達式1 , 表達式表達式3 可以是與循環(huán)控制無關(guān)的其他表達式可以是與循環(huán)控制無關(guān)的其他表達式 i=1
42、 ; for( sum=0 ; i=100 ; sum=sum+i ) i+ ; 空語句空語句(6) 表達式表達式2一般不會省略一般不會省略, 若省略表達式若省略表達式2循環(huán)將不能停止循環(huán)將不能停止sum = 0 ; for ( i=1 ; ; i+ ) sum = sum+i ; sum = 0 ; i=1;for ( ; ; ) sum = sum+i ; i+ ; i=1;while(1) sum=sum+i ; i+; 20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 4242 例例: 求某個班英語成績的平均分求某個班英語成績的平均分#include void main
43、 ( ) int i , n ; float s , sum , ave ; sum=0; i=1; scanf(“%d”, &n); while ( i=n ) scanf(“%d”, &s); sum=sum+s ; i+ ; ave=sum/n ; printf(“%2fn”, ave);#include void main ( ) int i , n ; float s , sum , ave ; sum=0; scanf(“%d”, &n); for ( i=1; i=n ; i+ ) scanf(“%d”, &s); sum=sum+s ; ave=sum/n ; printf(“
44、%2fn”, ave);例例: 求求Fibonacci數(shù)列的前數(shù)列的前20 個數(shù)個數(shù) Fibonacci數(shù)列數(shù)列: 1 , 1 , 2 , 3 , 5 , 8 , 13 #include void main( ) int i , f1 , f2 , f3; f1=1; f2=1; printf(“%8d%8d”, f1 , f2); for ( i=3 ; i=20 ; i+ ) f3=f1+f2; f1=f2; f2=f3; printf(“%8d”, f3); if ( i%4=0) putchar(n); 分析數(shù)列的規(guī)律分析數(shù)列的規(guī)律: 從第從第3個數(shù)開始個數(shù)開始, 每個數(shù)是每個數(shù)是其前兩個數(shù)之和其前兩個數(shù)之和f1f2f3112231 235+20082008東北大學(xué)計算機基礎(chǔ)教研室東北大學(xué)計算機基礎(chǔ)教研室 4444 5.循環(huán)的嵌套1. 循環(huán)的嵌套循環(huán)的嵌套: 一個循環(huán)體內(nèi)包含另一個完整的循環(huán)結(jié)構(gòu)一個循環(huán)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年等方性磁粉項目可行性研究報告
- 2024年度四川省公共營養(yǎng)師之四級營養(yǎng)師題庫檢測試卷B卷附答案
- 2024年度四川省公共營養(yǎng)師之三級營養(yǎng)師考前沖刺試卷B卷含答案
- 2022-2027年中國烘焙紙行業(yè)市場調(diào)查研究及投資戰(zhàn)略研究報告
- 2024-2030年中國理財產(chǎn)品抵押貸款行業(yè)發(fā)展運行現(xiàn)狀及投資潛力預(yù)測報告
- 2024年政府采購項目可行性研究報告
- 2025年下穿宜柳高速公路方案報告范本
- 2025年中國直銷行業(yè)市場深度調(diào)研分析及投資前景研究預(yù)測報告
- 2025白鶴灘水電站工程合同驗收規(guī)定
- 2025年中國軟包裝行業(yè)市場全景評估及發(fā)展戰(zhàn)略規(guī)劃報告
- 2024年計算機二級MS Office考試題庫500題(含答案)
- 人教版七年級上冊《生物》期末試卷(完整)
- 福建中考英語作文15分評分標準
- 智慧磐石工程建設(shè)方案
- 等保2完整版本.0介紹及建設(shè)流程
- 蘇教版科學(xué)六年級上冊期末測試卷含完整答案(各地真題)
- 市場法評估企業(yè)價值
- DL-T 1476-2023 電力安全工器具預(yù)防性試驗規(guī)程
- 通信安全員ABC證報名考試題庫及答案
- 英山縣南河鎮(zhèn)黑石寨飾面用花崗巖礦礦產(chǎn)資源開發(fā)利用與生態(tài)復(fù)綠方案
- 開放系統(tǒng)10861《理工英語(4)》期末機考真題及答案(第103套)
評論
0/150
提交評論