C語言程序設計 第3版 課件 第6章 結構化程序設計_第1頁
C語言程序設計 第3版 課件 第6章 結構化程序設計_第2頁
C語言程序設計 第3版 課件 第6章 結構化程序設計_第3頁
C語言程序設計 第3版 課件 第6章 結構化程序設計_第4頁
C語言程序設計 第3版 課件 第6章 結構化程序設計_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

6.1、順序結構程序設計實例導入:

編寫一個程序,實現(xiàn)這樣的功能:要求從鍵盤輸入任一八進制數(shù)字,可以實現(xiàn)將該數(shù)字轉換為十進制數(shù)字,比如當輸入八進制4520時,輸出4520所對應的十進制數(shù)2384。第六章結構化程序設計(4520)8=4*8*8*8+5*8*8+2*80+解析:4520/10004520%1000/1004520%100/10千位數(shù)4:百位數(shù)5:十位數(shù)2:個位數(shù)0:4520%10求一個四位八進制數(shù)o_number所對應的十進制d_number,則需先求出o_number的千位、百位、十位、個位數(shù),假如分別用a、b、c、d表示。a=o_number/1000;b=o_number%1000/100;c=o_number%100/10;d=o_number%10;d_number=a*8*8*8+b*8*8+c*8+d;算法描述1、定義變量into_number1,d_number2,a,b,c,d;2、輸入o_number1Lscanf(“%d”,&number);3、求出a、b、c、d:a=o_number/1000;b=o_number%1000/100;c=o_number%100/10;d=o_number%10;4、求出d_number2

:d_number=a*8*8*8+b*8*8+c*8+d;5、輸出d_number2

:printf(“%d”,d_number);完整的程序main(){into_number,d_number,a,b,c,d;

scanf("%d",&o_number);a=o_number/1000;b=o_number%1000/100;c=o_number%100/10;d=o_number%10;d_number=a*8*8*8+b*8*8+c*8+d;

printf(“O:%d,D:%d",o_number,d_number);}printf(“pleaseinputaoctalnumber:\n”);getch();實訓編寫一個體重測量儀:要求從鍵盤輸入身高和體重后,能夠計算出體重指數(shù)。體重指數(shù)=體重(kg)/(身高)2;算法描述:1、定義3個變量:floatindex,weight,height;2、輸入體重:scanf(“%f”,&weight);3、輸入身高:scanf(“%f”,&height);4、計算指數(shù):index=weight/(height*height);5、輸出指數(shù):printf(“%f”,index);完整程序main(){floatweight,height,index;

scanf("%f",&weight);

scanf("%f",&height);index=weight/(height*height);

printf("Theindexofyourweightis:%f",index);}printf(“\npleaseinputyourweight:");printf(“\npleaseinputyourheight:");getch();總結:1、順序結構是最簡單的一種結構,它按照操作執(zhí)行的先后順序來編寫程序。2、編程應該遵循:先根據(jù)功能要求設計出算法(用自然語言描述或用流程圖描述),然后再根據(jù)算法編寫程序。3、程序應該結構清晰、界面美觀、容易操作

編寫一個體重測量儀:要求從鍵盤輸入身高和體重后,能夠計算出體重指數(shù)。

體重指數(shù)=體重(kg)/(身高)2;要求實現(xiàn)這樣的判斷:如果體重指數(shù)<25,屬于正常;

否則屬于肥胖.實訓:體重測量儀改進版16.2、選擇結構程序設計如果index<25,輸出“Youareright!”否則輸出“Youarefat!”main(){floatweight,height,index;

scanf("%f",&weight);

scanf("%f",&height);index=weight/(height*height);

printf("Theindexofyourweightis:%f",index);

}printf(“\npleaseinputyourweight:");printf(“\npleaseinputyourheight:");if(index<25)printf(“Youareright!”);elseprintf(“Youarefat!”);一、if語句的使用1、if語句的標準形式if(表達式)語句1else語句2表達式語句1語句2例:如果工資salary大于1600元,則多余部分按15%征稅,否則按5%征稅.If(salary>1600)revenue=(salary-1600)*0.15;elserevenue=(salary-1600)*0.05;YN

從鍵盤輸入一個數(shù),求出該數(shù)絕對值所對應的開方開始定義變量a,b,c輸入aa>=0b=ab=-ac=sqrt(b)輸出c結束YN算法1實訓#include"math.h"main(){floata,b,c;printf("\npleaseinputanumber:\n");scanf("%f",&a);

if(a>=0)b=a;elseb=-a;c=sqrt(b);printf("Thesqrtof%fis%f\n",a,c);getch();}程序1開始定義變量a,b,c輸入aa<=0b=ab=-ac=sqrt(b)輸出c結束N算法2Y程序2#include"math.h"main(){floata,b,c;printf("\npleaseinputanumber:\n");scanf("%f",&a);b=a;

if(a<=0)b=-a;c=sqrt(b);printf(“Thesqrtof%fis%f\n",a,c);getch();}2、if語句最簡單的形式if(表達式)語句表達式語句1NYmain(){inta,b,max;scanf(“%d%d”,&a,&b);max=a;if(b>max)max=b;printf(“max=%d”,max);}思考:當輸入45和32時,下面這個程序的輸出結果是什么?體重測量儀改進版2編寫一個體重測量儀:要求從鍵盤輸入身高和體重后,能夠計算出體重指數(shù)。

體重指數(shù)=體重(kg)/(身高)2;要求實現(xiàn)這樣的判斷:

偏瘦:體重指數(shù)<18

正常:18<=體重指數(shù)<25;

微胖:25<=體重指數(shù)<30;

較胖:30<=體重指數(shù)<35;

肥胖:35<=體重指數(shù)<40;

很胖:體重指數(shù)>=40;

如果體重指數(shù)小于18,偏瘦否則如果體重指數(shù)小于25,標準

否則如果體重指數(shù)小于30,微胖

否則如果體重指數(shù)小于35,較胖

否則如果體重指數(shù)小于40,肥胖

否則很胖3、if語句的第三種形式if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3

elseif(表達式4)語句4else表達式5

表達式1語句1YN表達式2語句2YN表達式3Y語句3N表達式4Y語句4N語句5從鍵盤輸入一個學生的分數(shù),要求實現(xiàn)這樣的判斷功能:如果分數(shù)大于100,輸出”Inputerror!”如果分數(shù)介于100到90之間,輸出”VeryGood!”如果分數(shù)介于80到90只,輸出”Good!”如果分數(shù)介于70到80之間,輸出”Middle”如果分數(shù)介于60到70之間,輸出”Pass”如果分數(shù)小于60,輸出”NoPass!”實訓算法1描述1、定義一個變量score;2、輸入score的值;3、如果score>100,輸出“Inputerror!”4、否則如果score>=90,輸出“VeryGood!”5、否則如果score>=80,輸出“Good!”6、否則如果score>=70,輸出“Middle!”7、否則如果score>=60,輸出“Pass!”8、否則輸出“NoPass!”9、否則輸出“Inputerror!main(){floatscore;printf("pleaseinputanumber:\n");scanf("%f",&score);

if(score>100)printf("Inputerror!");elseif(score>=90)printf("verygood!");elseif(score>=80)printf("good!"); elseif(score>=70)printf("middle!"); elseif(score>=60)printf("pass!"); elseprintf("nopass!"); getch();}elseif(score>=0)printf(“Nopass!”);elseprintf(“Inputerror!”);}總結if語句的三種基本形式if(表達式)語句1else語句21、最基本的形式2、最簡單的形式if(表達式)語句3、層次形式if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3

elseif(表達式4)語句4else表達式5

實訓假如從鍵盤輸入67,下面這個程序的結果是什么,如果輸入89,90,101呢?main(){floatscore;scanf("%f",&score);if(score>=60)if(score>=90)printf("A");elseprintf("B");elseif(score>=0)printf("C");elseprintf("Inputerror!");}二、if語句的嵌套if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4一般使用形式假如從鍵盤輸入5,下面程序的輸出結果是什么?main(){intx,y;scanf("%d",&x);if(x>=0)if(x>10)y=x*x-5;elseif(x>5)y=x*x*x+2; elsey=x;elseif(x<-10)y=x*x+5;elsey=x*x+11;printf("%d",y);}思考題某單位的工資是這樣計算的:

工資=基本工資+工齡工資;工齡為1年:工齡工資=基本工資*0.1;工齡為2—3年:工齡工資=基本工資*0.25;工齡為4—5年:工齡工資=基本工資*0.5;工齡為6—8年:工齡工資=基本工資*0.8;工齡大于8年的:工齡工資=基本工資*工齡*0.1;基本工資為1500元。要求從鍵盤輸入教師的工齡,可以根據(jù)工齡計算該教師的基本工資。使用if語句來編寫如下的程序:實訓算法描述:1、定義兩個實型變量:工資salary、工齡工資a_salary;定義一個整型變量:工齡age;2、輸入工齡age;3、如果age==1;a_salary=1500*0.1;4、如果2<=age<=3;a_salary=1500*0.25;5、如果4<=age<=5;a_salary=1500*0.5;6、如果6<=age<=8;a_salary=1500*0.8;7、如果8<=age;a_salary=1500*age*0.1;8、salary=1500+a_salary;9、輸出salary;main(){floatsalary,a_salary;intage;scanf("%d",&age);if(age==1)a_salary=1500*0.1;elseif(age>=2&&age<=3)a_salary=1500*0.25;elseif(age>=4&&age<=5)a_salary=1500*0.5; elseif(age>=6&&age<=8)a_salary=1500*0.8; elseif(age>8)a_salary=1500*age*0.1;salary=1500+a_salary;printf("%.1f",salary);}main(){floatsalary,a_salary;intage;scanf("%d“,&age);

switch(age){case1:a_salary=1500*0.1;break;case2:a_salary=1500*0.25;break;case3:a_salary=1500*0.25;break;case4:a_salary=1500*0.5;break;case5:a_salary=1500*0.5;break;case6:a_salary=1500*0.8;break;case7:a_salary=1500*0.8;break;case8:a_salary=1500*0.8;break;default:a_salary=1500*age*0.1;}salary=1500+a_salary;printf("salary:%.1f",salary);}復習判斷一個學生成績的“優(yōu)、良、中、差”:假如從鍵盤輸入的字母是‘A’,輸出評語“YouareExcellent!”;如果輸入‘B’,輸出評語“Youarewell!”;如果輸入‘C’,輸出評語“Youarepassing!”;如果輸入‘D’,輸出評語“Youarenotpassing!”。如果輸入的不是這四個字母,則出現(xiàn)提示“Inputerror!”請編寫一個程序,實現(xiàn)該判斷功能。1、定義一個字符型變量score;2、輸入字符score;3、如果score==‘A’,輸出“Excellent!”4、如果score==‘B’,輸出“well!”5、如果score==‘C’,輸出“pass!”6、如果score==‘D’,輸出“Notpass!”7、如果以上都不是,則輸出“Inputerror!”算法描述If語句實現(xiàn)main(){charscore;scanf(“%c”,&score);if(score==‘A’)printf(“excellent!”);elseif(score==‘B)printf(“well!”);elseif(score==‘C’)printf(“pass!”);elseif(score==‘D’)printf(“Nopass”);elseprintf(“Inputerror!”);}switch語句實現(xiàn)main(){charscore;scanf(“%c”,&score);switch(score){case‘A’:printf(“Excellent!”);case‘B’:printf(“Well!”);case‘C’:printf(“Pass!”);case‘D’:printf(“Nopass!”);default:printf(“Inputerror!”);}}break;break;break;break;三、switch語句的使用switch(表達式)

{case常量表達式:語句1case常量表達式:語句2……case常量表達式:語句ndefault:語句n+1}四、條件運算符的使用程序段1if(a>b)max=a;elsemax=b;max=(a>b)

?a:

b一般使用形式:

表達式1?表達式2:表達式3程序段2if(x>=0)y=x;elsey=-X;y=(X>=0)?x:-x;優(yōu)先級僅僅比賦值運算符和逗號運算符高,自右至左的結合性.

某企業(yè)發(fā)放的年終獎金根據(jù)職工該年的積分計算。積分等于或低于0分的,獎金為0;積分在1到19分之間的,獎金為積分數(shù)乘以100;積分在20到29之間的,獎金為積分數(shù)乘以150;積分在30到39之間的,獎金為積分數(shù)乘以200;積分在40到49分之間的,獎金為積分數(shù)乘以250;積分在50分以上的,獎金都為積分數(shù)乘以300。編寫一程序,從鍵盤輸入積分數(shù),可以求出該職工的年終獎。分別用if和switch語句來實現(xiàn)綜合實訓6.3、循環(huán)結構程序設計所謂循環(huán),就是對一段程序重復執(zhí)行多次循環(huán)體語句:程序中需要被重復執(zhí)行的部分循環(huán)的初始條件:循環(huán)的執(zhí)行條件:i=0;i<50;實現(xiàn)循環(huán)的三種方法:while語句do_while語句for語句while語句while語句的一般形式:while(循環(huán)的執(zhí)行條件){循環(huán)體語句

}條件循環(huán)體YNprintf("pleaseinputthescoreofexam:");scanf("%f",&E_score);printf("\npleaseinputthescoreofperformance:");scanf("%f",&P_score);printf("\npleaseinputthescoreof:");scanf("%f",&M_score);F_score=E_score*0.4+P_score*0.3+M_score*0.3;printf("%.1f",F_score);while(i<50)

{

}i=0;i=i+1;main(){floatE_score,P_score,M_score,F_score;int}do_while語句do_while語句的一般形式是:do{

循環(huán)體語句

}while(循環(huán)的執(zhí)行條件);條件循環(huán)體YNIf(number%i==0)printf(“%6d”,i);while(i<sqrt(number));i=2;i=i+1;{}main(){intnumber,i;scanf(“%d”,&number);}#include”math.h”dofor語句for語句的一般形式是:for(循環(huán)變量初始值;循環(huán)的條件;循環(huán)變量變化)

循環(huán)體語句main(){intnumber,i;scanf(“%d”,&number);for(i=2;i<sqrt(number);i++)if(number%i==0)printf(“%6d”,i);}#include”math.h”循環(huán)變量賦初始值循環(huán)條件循環(huán)體語句循環(huán)變量變化YNfor(循環(huán)變量初始值;循環(huán)的條件;循環(huán)變量變化)

循環(huán)體語句綜合實訓編寫一個程序,輸出1到200間所有可以被18整除的數(shù)。1、如果1%18==0,輸出1;2、如果2%18==0,輸出2;3、如果3%18==0,輸出3;4、如果4%18==0,輸出4;5、如果5%18==0,輸出5;200、如果200%18==0,輸出200;If(i%18==0)printf(“%d”,i);i=1;i<=200;i++for(

)inti;main(){}變形1:If(i%18==0)printf(“%d”,i);i<=200;i++for(

;

)inti;main(){}i=1;結論1:表達式1可以省略,但是分號不能省.If(i%18==0)printf(“%d”,i);i=1;i++for(

;

)inti;main(){}變形2:{If(i>200)break;}結論2:表達式2也可以省略,如果省略,分號不能省,而且需要在循環(huán)體中加使循環(huán)能夠結束的語句If(i%18==0)printf(“%d”,i);i=1;i<=200;for(

)inti;main(){變形3:}{i++;}結論3:表達式3也可以省略,如果省略,分號不能省,應該在循環(huán)體中加入使循環(huán)趨于結束的語句If(i%18==0)printf(“%d”,i);i=1;i++;for(;;;)inti;main(){}If(i>200)break;{}變形4:結論4:三個表達式都可以省略,但是分號不能省.循環(huán)結構程序設計復習和訓練實例2:

百錢百雞實例1:

兔子繁殖問題兔子繁殖問題題目:一個飼養(yǎng)場引進一對剛出生的新品種兔子,這對兔子從出生的第三個月開始,每月新生一對兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,問到第三年末,該飼養(yǎng)場共有兔子多少對?

解析1123581321f1f22、printf(“%d%d”,f1,f2);f13、f1=f1+f2;f2f2=f1+f2;4、printf(“%d%d”,f1,f2);f15、f1=f1+f2;f2f2=f1+f2;循環(huán)體迭代:

不斷以新值代替舊值的操作Fibonacci數(shù)列1、f1=1;f2=1;printf(“%ld,%ld”,f1,f2);f1=f1+f2;f2=f1+f2;while(i<=18)i=1;i=i+1;f1=1;f2=1;inti;longf1,f2;main()/*循環(huán)控制變量初始化*//*循環(huán)條件*//*循環(huán)體*/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論