版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第2章 C語(yǔ)言的基本控制結(jié)構(gòu) 2.3 循環(huán)結(jié)構(gòu) 2.2 選擇結(jié)構(gòu) 2.1 順序結(jié)構(gòu)12.1 順序結(jié)構(gòu)順序結(jié)構(gòu):按照語(yǔ)句的書(shū)寫(xiě)順序依次執(zhí)行每條語(yǔ)句。 語(yǔ)句:三. 表達(dá)式語(yǔ)句(操作語(yǔ)句)a=3 a=3;一. 流程控制語(yǔ)句二. 函數(shù)調(diào)用語(yǔ)句:如 printf( );i=i+1 i=i+1;i+;x+y;2四. 空語(yǔ)句 ;五. 復(fù)合語(yǔ)句 z=x+y; t=z/100; printf(“%f”,t); 此處沒(méi)有分號(hào)3 賦值運(yùn)算符與賦值表達(dá)式 賦值運(yùn)算符:= 右結(jié)合 簡(jiǎn)單賦值運(yùn)算: 變量=表達(dá)式過(guò)程:計(jì)算、轉(zhuǎn)換、賦值 自反算術(shù)賦值運(yùn)算(復(fù)合賦值運(yùn)算)+= 自反加賦值-= 自反減賦值*= 自反乘賦值/= 自
2、反除賦值%= 自反模賦值4如: a+= 3 a=a+3x*=y+8 x=x*(y+8) 多重賦值運(yùn)算a=(b=5)a=b=5a=5+(c=6)c的值為6,a的值為11,表達(dá)式的值為1152.2 選擇結(jié)構(gòu) 選擇結(jié)構(gòu)是指根據(jù)某些數(shù)據(jù)的取值或計(jì)算結(jié)果選取不同操作的處理方式。選擇結(jié)構(gòu)的描述由兩個(gè)基本部分組成,一是對(duì)選擇條件的描述;二是對(duì)處理分支的描述。 62.2.1 關(guān)系運(yùn)算與邏輯運(yùn)算運(yùn)算符 功能 大于 = 大于等于 小于 c用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子優(yōu)先級(jí):算術(shù) 關(guān)系 賦值 高低 a=(bc)a=bc a=(b328如:a=3,b=2, c=1則:(ab)=cd=abd 的值為1f=ab
3、cab 的值為11c 的值為0f 的值為0值為19 邏輯運(yùn)算符&、|雙目運(yùn)算符,如 a & b ,左結(jié)合 &、|的優(yōu)先級(jí)低于關(guān)系運(yùn)算符,!高于算術(shù)運(yùn)算符&與,|或,!非如:(!a)|(ab)!a|ab(ab)&(xy) ab & xy!單目運(yùn)算符,如 !a ,右結(jié)合10判斷一個(gè)量是否為真時(shí),非0為真,0為假 邏輯表達(dá)式邏輯表達(dá)式的值: 1 或 0如:a=4, !a值為0a=4,b=5, a&b值為1a|b值為1!a|b值為14&0|2 值為111注意:不是所有的運(yùn)算符都被執(zhí)行如: a & b & ca | b | c如已知:a=1, b=2, c=3, d=4, m=1, n=1則:( m=a
4、b ) & ( n=cd )m=0 , n=cd 不被執(zhí)行,n=1例如: x = 0 & y+ 如果x小于0,將不計(jì)算y+。例如: x=0|y+如果x大于或等于0,將不計(jì)算y+12注意:數(shù)學(xué)上的 axb 不同于C 中的 a=x=b如:a=0, b=0.5, x=0.3正確表示:a=x & x=b 結(jié)果為1a=x=b 1=b 結(jié)果為0132.2.2 if語(yǔ)句 if ( ) 14if ( ) else if(3) printf(“OK”);if(a)printf(“%d”, a);說(shuō)明:1. 表達(dá)式結(jié)果非0即為真2. 在每個(gè)分支語(yǔ)句后面有一分號(hào)3. if和else后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句,
5、也可以是一個(gè)復(fù)合語(yǔ)句 15例1:P37 分析整數(shù)絕對(duì)值的計(jì)算過(guò)程。 #include main( )int input, output;printf( “nEnter a integer:” );scanf( “%d”, &input );if ( input 0 )/* 判斷input 是否小于 0*/output = - input;elseoutput = input;printf( “ABS(%d)=%dn”, input, output );16例: 輸入3個(gè)整數(shù),按由小到大順序輸出。#include void main( ) int a,b,c,t; scanf(“%d%d%d”,
6、&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,%d”,a,b,c); 輸入:3 7 1輸出:1, 3, 7Y交換a、babNY交換a、cacNY交換b、cbcN17#include main( ) int x, y; printf( “nEnter 2 integers:” ); scanf( “%d%d”, &x, &y ); if ( x 0) if(y0)printf( “I quadrant n” ); else printf(“VI quadrantn”); e
7、lse if ( y 0 ) printf( “II quadrant n” ); else printf( “III quadrant n” ); P38例2:輸入坐標(biāo)點(diǎn),判斷該坐標(biāo)點(diǎn)處于第幾象限 。內(nèi)層嵌套的if語(yǔ)句內(nèi)層嵌套的if語(yǔ)句1.輸入坐標(biāo)點(diǎn)x,y2.如果x0 且y0第1象限 否則第4象限3.否則: 如果y0第2象限 否則第3象限18例:當(dāng)輸入不同字符時(shí),通過(guò)多分支選擇結(jié)構(gòu), 顯示該字符所屬的種類(lèi)#include void main( ) char c; printf(“Enter a character:”); c=getchar( ); if(c=0&c=A&c=a&c=z) p
8、rintf(“The character is a lower lettern”); else printf(“is other charactern”); if(條件1)語(yǔ)句1else if(條件2)語(yǔ)句2else if(條件m)語(yǔ)句melse 語(yǔ)句n19格式:switch(表達(dá)式) case 常量1:語(yǔ)句序列 break; case 常量2:語(yǔ)句序列 break; case 常量n:語(yǔ)句序列 break; default:語(yǔ)句序列 break; break的作用:終止當(dāng)前語(yǔ)句的執(zhí)行, 跳出switch結(jié)構(gòu) 首先計(jì)算表達(dá)式,將該值與每個(gè)case后的常量進(jìn)行比較;如果等于某個(gè)常量,則執(zhí)行該ca
9、se后的語(yǔ)句序列,直到switch結(jié)束;如果該值與每個(gè)case常量都不相同,則執(zhí)行default后的語(yǔ)句序列。2.2.3 多路選擇和switch語(yǔ)句每個(gè)case后面的常量不能相同。20例:讀入17之間的某個(gè)數(shù),輸出表示一星期中相應(yīng)某一天的單詞。 #include main( ) int number; printf(“Enter int number:”); scanf(“%d”, &number); switch(number) case 1: printf(“Mondayn”); break; case 2: printf(“Tuesdayn”); break; case 3: print
10、f(“Wednesdayn”); break; case 4: printf(“Thursdayn”); break; case 5: printf(“Fridayn”); break; case 6: printf(“Saturdayn”); break; case 7: printf(“Sundayn”); break; default: printf(“Errorn”); 21#include main( ) char c; scanf(“%c”,&c); printf(“nIts a”);/*用輸出撇號(hào)*/ switch(c) case 0: case 1: case 9: print
11、f(“digiter.n”); break; case : case n: case t: printf(“white.n”); break; default: printf(“char.n”); break 例:判斷由鍵盤(pán)輸入的字符是數(shù)字、字母,還是空格。 允許幾種case執(zhí)行相同的語(yǔ)句序列22#include main( ) double a, b, c; char op; printf( “n Enter a expression ” ); scanf( “%lf%c%lf”, &a, &op, &b ); switch( op ) case + : c = a + b; break;
12、case - : c = a b; break; case * : c = a * b; break; case / : c = a / b; break; default : printf( “Input Errorn” ); break; printf( “%lf%c%lf=%lfn”, a, op, b, c ); P41 例3:輸入一個(gè)格式為 x+y 的二元算術(shù)運(yùn)算表達(dá)式,輸出這個(gè)表達(dá)式的計(jì)算結(jié)果。Enter a expression 4.3-2.04.300000-2.000000=2.30000023例4(自學(xué)):通過(guò)鍵盤(pán)讀取兩個(gè)復(fù)數(shù)和運(yùn)算符,完成復(fù)數(shù)運(yùn)算的操作,并輸出計(jì)算的結(jié)果。
13、#include main( )double a, b, c, d, r, i, t;char op;/* 保存運(yùn)算符 */printf( “nEnter the first complex number:” );scanf( “%lf%lf”, &a, &b );printf( “nEnter the second complex number:” );scanf( “%lf%lf”, &c, &d );getchar();printf( “nEnter a operator:” );scanf( “%c”, &op );/* 輸入運(yùn)算符 */switch( op ) /* 檢查運(yùn)算符 */
14、見(jiàn)下頁(yè) printf( “The result is %lf + %lfin”, r, i );24case + :r= a+c; i= b+d;break;case - :r= a c;i= b d;break;case * :r= a*c b*d; i= b*c + a*d;break;case / :t= c*c d*d; if( t = 0 ) printf( “The denominator is 0.n” );return0;r= ( a*c+b*d) / t; i= ( b*ca*d ) / t;break;default:printf( “Invalidation operat
15、or .n” );return0;252.3 循環(huán)結(jié)構(gòu) 2.3.1 while 語(yǔ)句 格式:while ( ) 條件語(yǔ)句非0026例: 求#include void main( )int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d”,sum);循環(huán)體注意:循環(huán)體為多個(gè)語(yǔ)句時(shí),必須用大括號(hào)括起來(lái)構(gòu)成復(fù)合語(yǔ)句,否則循環(huán)范圍只到while后面的第一個(gè)分號(hào)處。27P45例5:從鍵盤(pán)輸入10個(gè)整數(shù),計(jì)算它們的平均值 #include main( )int sum = 0, i = 1; int x; /* 保存當(dāng)前輸入的數(shù)據(jù) */printf
16、( “nEnter 10 integers:” );while( i = 10 ) scanf( “%d”, &x ); /* 讀入整數(shù)x */i+; /* 累加已輸入的數(shù)據(jù)個(gè)數(shù) */sum=sum + x; /* 累加輸入的數(shù)據(jù)總和 */printf( “The average value is %lfn”, sum*1.0/(i-1); 282.3.2 for循環(huán)語(yǔ)句格式: for(初值表達(dá)式; 條件表達(dá)式; 增量表達(dá)式) 循環(huán)體語(yǔ)句12345真假初值表達(dá)式:給循環(huán)變量賦初值。條件表達(dá)式:循環(huán)的條件,決定循環(huán)是否繼續(xù)。增量表達(dá)式:改變循環(huán)變量的值,給循環(huán)變量增加一個(gè)定量(步長(zhǎng))。29mai
17、n( ) int i, n, sum=0; scanf(“%d”, &n); for( i=1;i=n;i+) sum=sum+i; printf(“sum=%dn”,sum);用while實(shí)現(xiàn):i=1;while(i=n) sum=sum+i; i+;例求30P47例6:從鍵盤(pán)讀入5個(gè)字符,找出其中ASCII值最大的字符,并將該字符輸出10次。#include main( )int i, x, max = 0;for( i=0; i max ) max= x;for( i=0; i10; i+ ) putchar( max ); 31#include #define N 10main( )i
18、nt score, i, max, min; max=0; min=100; float sum=0; for(i=1; imax) max=score; if(scoremin) min=score; printf(“Canceled max score:%dn”,max); printf(“ Canceled min score:%dn”,min); printf(“Average score:%fn”,(sum-max-min)/(N-2); 大獎(jiǎng)賽評(píng)分程序:去掉一個(gè)最高分和一個(gè)最低分,計(jì)算平均分。32說(shuō)明:1. for( ;條件表達(dá)式; ) 表達(dá)式 1、3 可省, 但分號(hào)不能省2. i
19、=1; for( ;i=n;i+)for(i=1;i=n;i+)3. 表達(dá)式 1、3 省略 i=1; for( ; i=n; ) sum=sum+i; i+; 332.3.3 do while 語(yǔ)句 格式:do 循環(huán)體語(yǔ)句 while ( 條件表達(dá)式 ) ; 34例求main( ) int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(“%d”,sum);35#include “stdio.h”main( ) char c; do c=getchar( ); putchar(c); while(c!=n);例:將輸入的字符原樣輸出36
20、P48例7:從鍵盤(pán)輸入一行字符,統(tǒng)計(jì)其中包含的數(shù)字字符個(gè)數(shù),并輸出。#include main( )int ch, num = 0;printf( “Enter a line text:” );do ch= getchar( ); if( 9 = ch & ch = 0 ) num+; while( ch != n );printf( “num = %dn”, num );37例:輸入一串?dāng)?shù)字,要求以相反的順序?qū)⑺鼈冚敵?include “stdio.h”main( ) int number,right; printf(“Enter your number:n”); scanf(“%d”,&n
21、umber); do right=number%10; printf(“%d”,right); number=number/10; while(number!=0); printf(“n”);執(zhí)行情況:Enter your number:1234554321第二次:Enter your number:0038P49例8:輸入一個(gè)整數(shù)n,打印輸出一個(gè)由n行字符星號(hào)*組成的等邊三角形;例如,當(dāng)輸入4時(shí),輸出如下所示的三角形: * 行號(hào) 1 空格數(shù):3 星號(hào)數(shù): 1 *_* 行號(hào) 2 空格數(shù):2 星號(hào)數(shù): 2 *_*_* 行號(hào) 3 空格數(shù):1 星號(hào)數(shù): 3 *_*_*_* 行號(hào) 4 空格數(shù):0 星號(hào)數(shù): 4 行號(hào) i 空格數(shù):n-i 星號(hào)數(shù): i39#include main( )int n, i, j;printf( “Enter the side of the triangle:” );scanf( “%d”, &n ); for( i=1; i=n; i+ ) /*循環(huán)n次,輸出n行*/ for( j=1; j=n-i; j+ )/*循環(huán)n-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作聘請(qǐng)合同范例
- 承包電工合同范例
- 樁基維修合同范例范例
- 小區(qū)消防通道畫(huà)線施工方案
- 墊板銷(xiāo)售合同范例
- 廣州集資建房合同范例
- 渠道征地合同范例
- 南陽(yáng)農(nóng)村建房合同范例
- 內(nèi)科練習(xí)題庫(kù)與答案
- 潛山租房合同范例
- 大學(xué)物理實(shí)驗(yàn)智慧樹(shù)知到期末考試答案2024年
- 5G網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估與緩解措施
- 2024年四川省普通高中學(xué)業(yè)水平考試(思想政治樣題)
- 中儲(chǔ)糧西安公司社會(huì)招聘試題
- 南呂一枝花不伏老課件
- 品質(zhì)部年終總結(jié)報(bào)告2022
- 康復(fù)科建設(shè)可行性方案及措施
- 華為手機(jī)行業(yè)洞察分析
- 蘇州市2023-2024學(xué)年高二上學(xué)期期末考試英語(yǔ)試卷(含答案)
- JGT366-2012 外墻保溫用錨栓
- 醫(yī)院網(wǎng)絡(luò)安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論