




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、n順序結構順序結構n分支結構分支結構n循環(huán)結構循環(huán)結構n程序設計實例程序設計實例n本章小結本章小結順序結構順序結構n屬性屬性 某部分若執(zhí)行某部分若執(zhí)行, 則語句順序全部被執(zhí)行則語句順序全部被執(zhí)行 若不執(zhí)行,則全部語句一個也不執(zhí)行若不執(zhí)行,則全部語句一個也不執(zhí)行n形式形式 DS DS DS ( ,) AABMAX A BBAB當當n語法語法if語句語句 if ( 表達式表達式 ) 語句語句 if ( 表達式表達式 ) 語句語句 else 語句語句n形式形式 if (e) S1 else S2 if (e) Sn執(zhí)行過程與執(zhí)行過程與PAD圖圖 if (e) S1 else S2eS1FS2TS1e
2、S2n例例5.1 float max ( float a, float b ) if (ab)return a; elsereturn b; return aabreturn bn形式二形式二if ( e ) SeSF Sen布爾表達式布爾表達式n可以嵌套可以嵌套nelse歸屬問題歸屬問題if (ab) if (bc) x=0; else x=1;abx=1 x=0bcabx=1 x=0bcnelse 屬于最前邊的屬于最前邊的 if ,則,則if (ab) if (bc) x=0; else x=1;相當于相當于 if (ab) if ( bc ) x = 0 ; else x = 1 ;n前
3、述的問題的答案是前述的問題的答案是: 若若 ab 且且 bbx=1 x=0bcnelse 屬于第二個屬于第二個 if ,則,則 if (ab) if (bc) x=0; else x=1;相當于相當于if ( ab ) if (bc) x = 0 ; else x = 1 ; n上述的問題的答案是上述的問題的答案是 若若 ab 且且 bbx=1 x=0bcn兩義性兩義性 C標準規(guī)定標準規(guī)定:else部分與前面最鄰近的一個沒有配對部分與前面最鄰近的一個沒有配對 的的 if 配對配對 第二種方案解釋。第二種方案解釋。 若想描述第一種方案的結構只好用若想描述第一種方案的結構只好用 、 將中間的將中間
4、的 “ if () 語句語句”括起來,構成復合語句。括起來,構成復合語句。abx=1 x=0bcn例例5.3 求方程求方程 ax2 + bx + c = 0 的根的根 是一元二次方程是一元二次方程(a0)有實根有實根(0) 兩個不同的實根兩個不同的實根(0) 兩個相同的實根兩個相同的實根(=0)有虛根有虛根(0) 是一元一次方程是一元一次方程(a=0,b0) 是恒等式是恒等式(a=0, b=0)恒等式成立恒等式成立(c=0)恒等式不成立恒等式不成立(c0)xbbaca 242解二次方程解二次方程讀入讀入 a,b,c求解求解 x1, x2輸出輸出 x1,x2結束結束二次方程二次方程a0b0一次方
5、程一次方程退化退化0=0c=0矛盾矛盾c=0一次方程一次方程常數(shù)等式常數(shù)等式x=c/b=0兩實根兩實根:x1=x2兩虛根兩虛根:x1,x2二實根二實根:x1,x20計算計算否則否則if(a!=0) delta=b*b-4*a*c; if(delta0) printf(x1=%g ,x2=%gn, (-b+sqrt(delta)/(2*a),(-b-sqrt(delta)/(2*a); else if(delta=0)printf(x1=x2=%fn,-b/(2*a); elseprintf(x1=%g+%gi , x2=%g-%gin, -b/(2*a),sqrt(-delta)/(2*a),
6、 -b/(2*a),sqrt(-delta)/(2*a) );else / 以下處理以下處理a=0的情況的情況 if(b!=0)printf(x=%gn,-c/b); elseif(c=0) printf(0=0!n);else printf(%g=0n,c);演示例演示例5.3程序程序switch ( e ) case C1 :S1 break; case C2 :S2 break ; . . . case Cn :Sn break ; default :S0 switch ( e ) case C1 :S1 case C2 :S2 . . . case Cn :Sn default : S
7、0第一種形式多分支第一種形式多分支第二種形式多分支第二種形式多分支switch ( e ) case C1 :S1 break; case C2 :S2 break; . . . case Cn :Sn break; default :S0 其他其他計算計算 e 值值e=? S1 S2 S3 S4 S5S0C1C2C3C4C5結束結束計算計算 e 值值e=C1S1e=C2S2e=C3S3e=C4S4e=C5S5S0switch ( e ) case C1 :S1 case C2 :S2 . . . case Cn :Sn default : S0S1S2S3S4S5e=?C1C2C3C4C5S
8、6其它其它S1S2S3S4S5e=?C1C2C3C4C5S6其它其它n例例5.4 高速公路每公里的收費標準按不同種類汽車如下高速公路每公里的收費標準按不同種類汽車如下: 小汽車(小汽車( car ) 0.50 元元 卡車(卡車( truck ) 1.00 元元 大客車(大客車( bus ) 1.50 元元編程序,為某高速公路收費站計算各種車輛的收費額。編程序,為某高速公路收費站計算各種車輛的收費額。單價單價=0.50單價單價=1.00單價單價=1.50車型車型小汽車小汽車卡車卡車大客車大客車錄入車型、行駛里程錄入車型、行駛里程輸出:行駛費單價輸出:行駛費單價里程里程#include stdio
9、.henum tsort car , truck , bus sort ; / 車種說明車種說明int i ; float mileage, price ;/ 里程、費用里程、費用void main ( ) / 輸入車種輸入車種 printf ( “please choose ( 1.car 2.truck 3.bus ):” ) ; scanf (“%d”, & i ) ; switch ( i ) case 1 : sort = car ; break ; case 2 : sort = truck ; break ; case 3 : sort = bus; printf ( “
10、please input mileage : “ ) ; / 輸入里程輸入里程 scanf ( “%f”,&mileage ) ; switch ( sort ) / 計算計算 case car : price = 0.50 ; break ; case truck : price = 1.00 ; break ; case bus : price = 1.50; printf( “ cost= %.2fn”, price*mileage );/ 輸出輸出 演示例演示例5.4程序程序n計算數(shù)列計算數(shù)列 的前的前n項和。項和。1(1)kak ks=0; k=1;開始開始k = n結結束束
11、FTs = s+ak ;k = k+1 ; s=0; k=1;s = s+ak ;k = k+1 ; 開始開始k = n結束結束FTn循環(huán)循環(huán) 指程序的某部分被反復的重復執(zhí)行多次指程序的某部分被反復的重復執(zhí)行多次n循環(huán)程序設計循環(huán)程序設計 編寫重復執(zhí)行的程序編寫重復執(zhí)行的程序n循環(huán)體循環(huán)體 被重復執(zhí)行的部分被重復執(zhí)行的部分nC 的三種不同的重復性語句的三種不同的重復性語句, 它們是它們是 while 語句語句 先判斷條件的循環(huán);先判斷條件的循環(huán); do 語句語句 后判斷條件的循環(huán);后判斷條件的循環(huán); for 語句語句 也是先判斷條件的循環(huán)。也是先判斷條件的循環(huán)。n需要弄清楚的需要弄清楚的 循環(huán)
12、控制方式是什么?循環(huán)控制方式是什么? 控制條件是什么?控制條件是什么? 重復執(zhí)行部分(稱為重復執(zhí)行部分(稱為“循環(huán)體循環(huán)體”)是什么?)是什么?n語法語法 while 語句語句 while (表達式表達式 ) 語句語句n一般形式一般形式while ( e ) SSeFwhile eSn計算數(shù)列計算數(shù)列 的前的前n項和。項和。1(1)kak k s=0; k=1;開始開始k = n結結束束FTs = s+ak ;k = k+1 ; s=0; while k =ns+=1/(k*(k+1) ; 開始開始結束結束k=1;k+=1; void main ( ) int n , k=1; float s
13、=0; printf(“please input n:n”); scanf(“%d”,&n); while ( keps結結束束FTe = e+r ;n = n+1 ;r= r/n ; e=1 ; n=1; r=1 ; while r epse=e+r ; 開始開始結束結束r=r*1/n ;n=n+1;float logari( float eps ) int n ; float e,r ; e=1.0; n=1; r=1.0; while ( reps ) e=e+r; n=n+1; r=r/n; return e ; e=1.0; n=1; r=1.0;e=2.0; n=2; r=
14、0.5;e=2.5; n=3; r=0.1667;e=2.6667; n=4; r=0.0417;.n語法語法do 語句語句 do 語句語句 while ( 表達式表達式 );n一般形式一般形式do S while ( e );SeTdo-while eS 例例5.6 考慮本節(jié)開始的問題,編一個函數(shù)考慮本節(jié)開始的問題,編一個函數(shù) s(n) ,計算數(shù)列的計算數(shù)列的ak的前的前 n 項和項和ak kk11() sum = 0 ; k = 1 ; do-while k= n返回返回s(n)return sumsum += 1/(k*(k+1);k = k+1sum=0; k=1;sum+= ak ;
15、k = k+1 ; 開始開始k = n結束結束FTfloat s ( int n ) int k ; float sum ; sum = 0 ; k = 1 ; do sum + = 1.0/(k*(k+1); k+ ; while( k 0yy = yy+4開始開始結束結束求求 yy 后第一個閏年后第一個閏年yy 是閏年是閏年輸出輸出yyn= n-1/*PROGRAM find leap year*/#include stdio.hvoid main()int yy,n;printf(please input begin year:);scanf(%d,&yy);printf(ple
16、ase input the number of the leap year:);scanf(%d,&n);yy=(yy/4+1)*4;doif( (yy%4=0)&(yy%100!=0)|(yy%400=0) )printf(year %dt,yy);n-;yy=yy+4;while(n0);演示例演示例5.7程序程序例例5.8 g (x) = 0 x = f (x)等價變換等價變換n采用迭代法方法求解采用迭代法方法求解x=f(x)方程的根方程的根 選定一個選定一個 x的初值的初值 x0 ; 以以 x0 代入右端計算出一個值代入右端計算出一個值 x1=f(x0) 若若 x1 等
17、于等于x0 ,顯然,顯然 x0 為根,轉向為根,轉向 否則若否則若 x1x0 則令則令 x0=x1 ,轉向,轉向 結束,停止計算結束,停止計算f (x)y=xf (x0)x0 x1f (x1)x*x2可以使用簡單迭代的情況可以使用簡單迭代的情況f (x2)f (x)y=xf (x1)x2x1f (x0)x*x0不可以使用簡單迭代的情況不可以使用簡單迭代的情況f (x2)n簡單迭代方法使用條件簡單迭代方法使用條件 對于方程對于方程xf(x),當任意,當任意x (a, b) 存在存在0 L 1,使,使 |f(x)|L1 則方程則方程x = f(x)在在(a, b)上有唯一的根上有唯一的根x* 且對
18、任意初值且對任意初值x0 (a, b)時時 迭代序列迭代序列xk+1=f (xk) (k = 0, 1, )收斂于收斂于x*n在實際工作中,決大部分計算都是近似計算,只要在實際工作中,決大部分計算都是近似計算,只要求求 X1X0 即即X1 - X0X0 = X1X1 = f(X0)開始開始結束結束32g(x)=2x +0.5x -x+0.093=032f(x)=2x +0.5x +0.093= x#include stdio.h#include math.h#define eps 1e-6void main() float x0,x1; x0=0.0; x1=0.0; do x0=x1; x1
19、=2*x0*x0*x0 +0.5*x0*x0 +0.093; while(fabs(x1-x0)eps); printf(x=%fn,x0);演示例演示例5.8程序程序SeFwhile eSSeTdo-while eSn一般形式一般形式 for ( e1; e2 ; e3) S e1初值表達式初值表達式 用于設置該循環(huán)開始的一些初值用于設置該循環(huán)開始的一些初值 e2終值表達式終值表達式 用于控制循環(huán)結束用于控制循環(huán)結束 e3增量表達式增量表達式 用于每次循環(huán)體執(zhí)行后對控制條件的修正用于每次循環(huán)體執(zhí)行后對控制條件的修正e1e2Se3F結束結束for ( e1 ; e2 ;e3 )Se=1.0;n
20、=1;r=1.0;while ( reps ) e=e+r; n=n+1; r=r/n; e=1.0;n=1;for ( r=1.0; reps; r=r/n ) e=e+r; n=n+1; sum=0;k=1;r=1.0;while ( k=n ) sum=sum+1.0/(k*(k+1); k+; sum=0;for ( k=1; k=n;k+ ) sum=sum+1.0/(k*(k+1);例例5.9 5.9 編程序求向量內積。由終端輸入兩個編程序求向量內積。由終端輸入兩個n n維向量維向量X,Y. X,Y. 計算其內積計算其內積XY XY 。 xy = 0 for( i=1;i=n ;i
21、+) scanf(“%f%f”, &xi, &yi )s(n)返回返回return xy xy = xy + xi*yifloat S (int n ) int i ; float xy,xi,yi ; xy = 0; for (i=1;i=n;i=i+1 ) scanf(“%f%f”, &xi, &yi ) ; xy = xy + xi * yi ; return xy; 0 xy0-112n例例5.10編程序,畫函數(shù)編程序,畫函數(shù) y=f(x)=e-x sin(2X)在在0,2區(qū)間上的圖形區(qū)間上的圖形* *x = 0; for(i=1 ;i=40; i+)開
22、始開始結束結束計算計算 y = f(i*0.05)確定確定 y 坐標,在相應位置印坐標,在相應位置印 *#define dx 0.05#define dy 0.05#define pi 3.14159265#define y0 40#define endx 40void main( ) int n , i ,j ; float x , y ; x = 0 ; for ( i=0; i=endx; i+ ) y = exp(-x) * sin( 2 * pi * x ) ; n = y0+ (int)( y/dy ) ; for (j=0;j=n;j+) printf( ); printf(*n
23、); x = x + dx ; 演示例演示例5.10程序程序程序設計實例程序設計實例n打印打印99表表n打印打印100以內素數(shù)以內素數(shù)n模擬計算器模擬計算器n十六進制數(shù)翻譯十六進制數(shù)翻譯1 12 2 43 3 6 94 4 8 12 165 5 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81* 1 2 3 4 5 6 7 8 9 打印前打印前 9 行行打印底行打印底行開始開始結束結束1 12 2 43 3 6 94 4 8 12 165 5
24、 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81打印前打印前9行行打印前打印前9行行結束結束打印第打印第 i 行行 for (i=1;i=9;i+)打印第打印第i行行6 6 12 18 24 30 369 9 18 27 36 45 54 63 72 81行號行號本行數(shù)值本行數(shù)值打印第打印第i行行結束結束打印行標打印行標 i for(j=1;j=i;j+)打印打印 i*j9 9 18 27 36 45 54 63 72 816 6 12 1
25、8 24 30 36* 1 2 3 4 5 6 7 8 9打印底行打印底行打印底行打印底行結束結束 for (i=1;i=9;i+)印印 i印印 */*PROGRAM print table9*9 */#include stdio.hvoid main() int i,j; for(i=1;i10;i+) printf(%4d,i); for(j=1;j=i;j+) printf(%4d,i*j); printf(n); printf(%4c,*); for(i=1;i10;i+) printf(%4d,i);演示例演示例5.11程序程序 for (i=2;i=2;j-)flag = true
26、 i%j = 0bool prime( int n ) int j ; for ( j = n / 2 ; j = 2 ; j- ) if ( n%j = 0 ) return false ; return true ;bool prime( int); void main( ) int i ; for ( i = 2 ;i = 2 ; j- ) if ( n%j = 0 ) flag=false ; return flag ;演示例演示例5.12程序程序bool prime( int n ) int j ; for ( j = n / 2 ; j = 2 ; j- ) if ( n%j =
27、0 ) return false ; return true ;bool prime( int); void main( ) int i ,x; printf(“input x:”); scanf(“%d”,&x); for ( i = 2 ;i A讀字符讀字符=w W是運算符是運算符+-*/WA = A + BA = A - BA = A * BA = A / B顯示顯示 A讀數(shù)讀數(shù)=B讀字符讀字符=W結束結束void main() float a,b; char w; scanf(%f,&a); scanf(%c,&w); while(w=+)|(w=-)|(w=*
28、)|(w=/) scanf(%f,&b); switch(w) case +: a=a+b; break; case -: a=a-b; break; case *: a=a*b; break; case /: a=a/b; printf(%.2f ,a); scanf(%c,&w); 演示例演示例5.13程序程序n編一個函數(shù)編一個函數(shù)convert,從終端讀入一個十六進,從終端讀入一個十六進制數(shù),把它翻譯成十進制。制數(shù),把它翻譯成十進制。若翻譯正確,則若翻譯正確,則convert返回返回true否則若翻譯錯誤,則否則若翻譯錯誤,則convert返回返回falseDX.Dn十六
29、進制數(shù)的形式十六進制數(shù)的形式 AB.1f . ef 12f 12f.n主程序中主程序中若若convert()返回真值,則說明翻譯成功返回真值,則說明翻譯成功若若intflag為真,打印整數(shù)值(為真,打印整數(shù)值(n中保存)中保存)否則,打印實數(shù)數(shù)值(否則,打印實數(shù)數(shù)值(f中保存)中保存)打印打印“successful!”否則打印否則打印“fail”mainconvert()打印打印“失敗失敗”打印打印 “成功成功”結束結束intflag打印整數(shù)打印整數(shù)打印浮點數(shù)打印浮點數(shù)n判斷字符是否是十六進制數(shù)字對應的字符判斷字符是否是十六進制數(shù)字對應的字符bool isdigit(char ch)retur
30、n (ch=0)&(ch=A)&(ch=a)&(ch=0)&(ch=A)&(chch 翻譯整數(shù)部分翻譯整數(shù)部分返回返回翻譯小數(shù)部分翻譯小數(shù)部分讀讀(ch)讀讀(ch) ch=空白空白ch= r或或n返回真返回真合并整數(shù),小數(shù)部分合并整數(shù),小數(shù)部分,返回操作返回操作f=n+fn = 0n = n*16+value(ch)讀讀(ch) ch是數(shù)字是數(shù)字ch= .f = 0 ; g = 1.0讀讀(ch)ch是數(shù)字是數(shù)字f=f+g*value(ch)讀讀(ch)g = g/16返回假返回假/*PROGRAM convert hexadecimal number
31、 to decimal number*/#include stdio.h#define radix 16/確定是哪種進制確定是哪種進制int n;/全局保存整數(shù)全局保存整數(shù)float f;/全局保存實數(shù)全局保存實數(shù)bool intflag;/標志是否是整數(shù)標志是否是整數(shù)int calculate_char(char ch);/進算十六進制字符對應的數(shù)值進算十六進制字符對應的數(shù)值bool isdigit(char ch);/判斷字符是否是十六進制字符判斷字符是否是十六進制字符bool convert();/翻譯函數(shù)翻譯函數(shù)void main()if(convert()if(intflag)pri
32、ntf(%d n,n);elseprintf(%f n,f);printf(Successful!n);elseprintf(Fail!n);/* 翻譯函數(shù)翻譯函數(shù) */bool convert() char ch; float g; intflag=true; ch=getchar();/*濾掉前導空白字符濾掉前導空白字符*/while(ch= )ch=getchar();/*翻譯整數(shù)部分翻譯整數(shù)部分*/n=0;while( isdigit(ch) )n=n*radix + calculate_char(ch) ;ch=getchar(); if(ch=.)intflag=false;/*翻
33、譯小數(shù)部分翻譯小數(shù)部分*/f=0.0;g=1.0;ch=getchar();while( isdigit(ch) )g=g/radix;f=f+g* calculate_char(ch) ;ch=getchar(); /*整數(shù)部分與小數(shù)部分合并整數(shù)部分與小數(shù)部分合并*/f=f+n; if(ch=r|ch=n)return true; elsereturn false;演示例演示例5.14-1程序程序n前導空白字符部分;前導空白字符部分;n整數(shù)部分;整數(shù)部分;n小數(shù)點;小數(shù)點;n小數(shù)部分;小數(shù)部分;解法二解法二 狀態(tài)圖狀態(tài)圖(矩陣矩陣)方法方法 DX.DS0S1S2S3S4其他字符其他字符S0S
34、2S1S4數(shù)字數(shù)字小數(shù)點小數(shù)點小數(shù)點小數(shù)點數(shù)字數(shù)字數(shù)字數(shù)字空白字符空白字符空白字符空白字符其他字符其他字符小數(shù)點小數(shù)點空白字符空白字符其他字符其他字符S3數(shù)數(shù)字字空白字符空白字符其他字符其他字符小數(shù)點小數(shù)點n狀態(tài)矩陣狀態(tài)矩陣 數(shù)字數(shù)字sort=0小數(shù)點小數(shù)點sort=1空白字符空白字符sort=2其他字符其他字符sort=3S0拼整數(shù)拼整數(shù)/S1/S2/S0Err1/S4S1拼整數(shù)拼整數(shù)/S1/S2整數(shù)整數(shù) 結束結束/S4Err2/S4S2拼小數(shù)拼小數(shù)/S3Err3/S4實數(shù)實數(shù) 結束結束/S4Err4/S4S3拼小數(shù)拼小數(shù)/S3Err3/S4合并合并 結束結束/S4Err4/S4處理前導字符
35、狀態(tài)處理前導字符狀態(tài)(S0);處理整數(shù)部分狀態(tài)處理整數(shù)部分狀態(tài)(S1);處理小數(shù)點部分狀態(tài)處理小數(shù)點部分狀態(tài)(S2);處理小數(shù)部分狀態(tài)處理小數(shù)部分狀態(tài)(S3);處理錯誤狀態(tài)和結束狀態(tài)處理錯誤狀態(tài)和結束狀態(tài) (S4)開始開始初始化:初始化: s = 0;n = 0;f = 1.0 ; g = 1;s4結束結束形成形成 sort讀讀(ch)s01230錯誤錯誤(3);s = 4合并整數(shù)、小數(shù);合并整數(shù)、小數(shù);s=4sort12拼小數(shù)拼小數(shù); s = 33錯誤錯誤(4);s = 40s = 2;sort12拼整數(shù)拼整數(shù); s = 13錯誤錯誤(1);s = 40s = 2s=4sort12拼整數(shù)拼整
36、數(shù); s = 13錯誤錯誤(2);s = 40錯誤錯誤(3);s = 4s=4sort12拼小數(shù)拼小數(shù); s = 33錯誤錯誤(4);s = 4/* 十六進制翻譯函數(shù)十六進制翻譯函數(shù)2 */#include stdio.h#define radix 16int n ; /* 整數(shù)部分整數(shù)部分 */float f ; /* 小數(shù)部分小數(shù)部分 */bool intflag, errflag ; /* 整數(shù)標志、錯誤標志整數(shù)標志、錯誤標志 */char ch ; /* 當前讀入字符當前讀入字符 */int num ;/* ch 對應的數(shù)值對應的數(shù)值 */float g ;/* 翻譯小數(shù)部分權值翻譯小
37、數(shù)部分權值 */int s , sort ;/* 狀態(tài)、字符類狀態(tài)、字符類 */void com_integer(void); /* 翻譯整數(shù)部分翻譯整數(shù)部分 */void com_real(void);/* 翻譯小數(shù)部分翻譯小數(shù)部分 */int sort_char(char );/*字符分類、形成字符分類、形成 sort */int calculate_char(char); /*計算合法字符的數(shù)值計算合法字符的數(shù)值*/void com_error(int ); /*錯誤處理錯誤處理*/void com_integer(void) /* 翻譯整數(shù)部分翻譯整數(shù)部分 */n = n*radix+
38、num; void com_real(void) /* 翻譯小數(shù)部分翻譯小數(shù)部分 */g = g/radix;f = f+num*g; bool convert2 ( ) /* 狀態(tài)矩陣方法翻譯函數(shù)狀態(tài)矩陣方法翻譯函數(shù) */intflag = true ; /* 首先假設翻譯的是整數(shù)首先假設翻譯的是整數(shù) */errflag = true ; /* 首先假設翻譯正確首先假設翻譯正確 */ s = 0; /* 狀態(tài)初值狀態(tài)初值 */ g = 1.0 ; /* 小數(shù)部分的權值小數(shù)部分的權值 */ n = 0; /* 整數(shù)單元整數(shù)單元 */ f = 0; /* 實數(shù)單元實數(shù)單元 */ while (
39、s4 ) ch=getchar();/讀入字符讀入字符 sort=sort_char(ch);/為字符分類為字符分類 if(sort=0)num=calculate_char(ch);/字符對應的數(shù)值字符對應的數(shù)值switch ( s )/狀態(tài)操作狀態(tài)操作 case 0: switch (sort) case 0: com_integer(); 遇到數(shù)字翻譯整數(shù)遇到數(shù)字翻譯整數(shù) s = 1 ; break ; case 1: s = 2 ; 遇到小數(shù)點遇到小數(shù)點 break ; case 2: break ; 前導字符前導字符 case 3: com_error(1); break;case
40、1: switch (sort) case 0: com_integer(); 翻譯整數(shù)翻譯整數(shù) break ; case 1: s = 2; 翻譯整數(shù)時遇到小數(shù)點翻譯整數(shù)時遇到小數(shù)點 break ;case 2: s = 4; 翻譯整數(shù)時遇到空白字符翻譯整數(shù)時遇到空白字符 break ; case 3: com_error(2); 翻譯整數(shù)遇其它字符翻譯整數(shù)遇其它字符 break;case 2: switch ( sort ) case 0: com_real(); 翻譯小數(shù)翻譯小數(shù) s = 3 ; break ; case 2: s = 4; 翻譯整數(shù)時遇到空白字符翻譯整數(shù)時遇到空白字符
41、intflag = false ; break ; case 1: com_error(3); 存在兩個以上小數(shù)點存在兩個以上小數(shù)點 break; case 3: com_error(4); 遇到非法字遇到非法字 break; case 3: switch ( sort ) case 0: com_real(); 翻譯小數(shù)翻譯小數(shù) break ; case 2: s = 4; 翻譯整數(shù)時遇到空白字符翻譯整數(shù)時遇到空白字符 intflag = false ; f = n+f ; break ; case 1: com_error(3); 存在兩個以上小數(shù)點存在兩個以上小數(shù)點 break ; ca
42、se 3: com_error(4); 翻譯小數(shù)遇非法字符翻譯小數(shù)遇非法字符 break; /* switch( s ) */ /* while( s=0| n0)r+=(n%10)!n=n/10return rr+=st=n%10while(t0)s=1s=s*tt=t-1int f(int n)int r,s,t;r=0;while(n/100|n0)t=n%10;s=1;while(t0)s=s*t;t=t-1;r=r+s;n=n/10;return r; n=2;j-)prime(int m)結束結束return falsem%j= 0return true/* PROGRAM wri
43、teprime */#include stdio.hbool prime( int m ) int j ; for ( j = m / 2 ; j = 2 ; j- ) if ( m%j = 0 )return false ; return true ;int u,v,n;void main( ) n=0; u=3; v=u+2; while(n10)if ( prime(u)&prime(v)&(v-u)=2 ) printf(%5d %5dn , u , v ) ;n+; u+; v+; H(int x,int n)結束結束return 1n= 0計算計算Hn(x)retu
44、rn 2*xn= 1返回返回Hn(x)的值的值h0=1; h1=2*x for(i=2;i=n;i+)h2=2*x*h1-2*(i-1)*h0h0=h1h1=h2return h2int H(int x,int n)int h0,h1,h2;if(n=0)return 0;if(n=1)return 2*x; h0=1;h1=2*x;for(int i=2;i=n;i+)h2=2*x*h1-2*(i-1)*h0;h0=h1;h1=h2;return h2;want()結束結束x=0;y=0;z=0;x+x=?()x-y+y-z+z+ch!=r&ch!=nch=getchar()x,y,
45、z某個某個不是零不是零return falsereturn truebool want()int x=0,y=0,z=0; char ch;doch=getchar();switch(ch)case:x+;break;case:x-;break;case:y+;break;case:y-;break;case(:z+;break;case):z-; break;while(ch!=r&ch!=n);if(x!=0|y!=0|z!=0)if(x!=0)printf( is wrong!n);if(y!=0)printf( is wrong!n);if(z!=0)printf( is wr
46、ong!n); return false;else return true;main結束結束打印打印big*B+mid*M+sm*S=SUMfor(big=0;big=SUM/B;big+)for(mid=0; mid=SUM/M;mid+)#include stdio.h#define SUM 100#define B 3#define M 2#define S 0.5void main() int big,mid,sm; for(big=0;big=SUM/B;big+) for(mid=0;mid=SUM/M;mid+)sm=SUM-big-mid;if(big*B+mid*M+sm*S
47、=SUM) printf(big=%d,mid=%d,small=%dn, big,mid,sm);int fact ( int n ; int ans ) ans=1; WHILE n1 DO ans=n*ans; n=n-1 參數(shù)聲明之間用逗號分參數(shù)聲明之間用逗號分隔隔循環(huán)語句錯誤循環(huán)語句錯誤函數(shù)沒有返回語句函數(shù)沒有返回語句int fact ( int n) int ans=1; while(n0) ans=ans*n; n=n-1 return ans;for(i=1;i5;i+)打印上半部分打印上半部分for(i=5;i8;i+)打印下半部分打印下半部分A B C D E F G A
48、B C D E F G A A B C D E F GB C D E F G A AB C D E F G B C D E F G A A B B BB B B C D E F GC D E F G A BA BC D E F G C D E F G A BA B C C C C CC C C C C D E F GD E F G A B CA B CD E F G D E F G A B CA B C D D D D D D DD D D D D D D E F GE F G A B C DA B C DE F GE F G A B C DA B C D C C C C CC C C C C F G F G A B C D EA B C D EF GF G A B C D EA B C D E B B BB B B G G A B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國際貿易知識產權傭金協(xié)議
- 二零二五年度分手補償協(xié)議書及子女教育費用承擔
- 2025年度股份代持股份占比調整合同協(xié)議書模板
- 2025年度酒店餐飲服務兼職員工合同
- 二零二五年度隱名股東股權轉讓及管理權移交協(xié)議
- 二零二五年度足療養(yǎng)生店轉讓與品牌授權使用合同
- 二零二五年度學校食堂租賃協(xié)議書(含智能點餐系統(tǒng)建設)
- 二零二五年度文化旅游項目介紹費合作協(xié)議書
- 初中校長發(fā)言稿
- 安全教育領導發(fā)言稿
- 2024年廣西高考化學試卷真題(含答案解析)
- 老年人能力、綜合征評估量表、綜合評估基本信息表、護理服務項目清單
- 2024-2030年全球及中國體育贊助行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 數(shù)據(jù)崗位招聘筆試題與參考答案(某大型央企)2025年
- 第六單元 資本主義制度的初步確立 復習課件 2024-2025學年統(tǒng)編版九年級歷史上冊
- 2024年大學英語四級詞匯和語法全真模擬試題及答案(共六套)
- 人工智能崗位招聘筆試題及解答(某大型央企)2025年
- 緊急停車按鈕的安全設置要求
- 2024年玩具陀螺項目可行性研究報告
- v建筑主墩雙壁鋼圍堰施工工藝資料
- 新部編人教版六年級道德與法治下冊全冊全套課件
評論
0/150
提交評論