版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第四章程序控制結(jié)構及結(jié)構化程序設計
§4.1算法與程序設計算法是對特定問題求解步驟的一種描述算法的描述①自然語言描述法向計算機中輸入一個數(shù)X,若X≥0,則顯示X的值;否則不顯示。②偽代碼描述法ifx>0x→y③流程圖表示法流程圖:是一種能夠比較形象地描述“算法”的工具,它對于編制程序很有幫助。流程圖又稱為框圖,它是由如下幾種不同的圖形符號組合而成的。
起止框處理框輸入輸出框流程線條件判斷框連接符起止框:它代表一個算法的開始與結(jié)束。處理框:它可以表示算法中的一個或若干個步驟,這些步驟不涉及輸入與輸出。輸入輸出框:它表示一個算法中需要進行輸入或輸出處理的步驟。為了與一般的處理步驟區(qū)別開來,輸入輸出框采用了平行四邊形的形式。條件判斷框:當一個算法中需要依據(jù)某一條件來決定后續(xù)操作時,就采用此框。流程線:它表明每一步驟之間的先后順序,標識一個算法的走向。流程圖表示算法
開始結(jié)束輸入XX大于或等于0顯示X的值ynC程序構成:文件→函數(shù)→語句序列。語句:C語言中描述計算過程的最基本單位。由分號;結(jié)束。結(jié)構化程序設計方法:程序語句序列由三種基本結(jié)構(順序、分支、循環(huán))構成,結(jié)構清晰、可讀性強?!?.2語句一、表達式語句C語言的表達式加上一個分號“;”結(jié)尾,就構成表達式語句,表達式語句主要完成運算功能。賦值表達式加上一個分號“;”結(jié)尾就構成了賦值語句,由于運算的結(jié)果往往需要保存起來,所以賦值語句也成為用得最多的表達式語句。1.簡單賦值語句一般形式為:<變量>=<表達式>;x=x+1;ch=getchar();
2.多重賦值語句一般形式為:<變量1>=<變量2>=……<變量n>=<表達式>;i=j=k=1;但不可以intx=y=z=0;初始化3.復合賦值語句一般形式為:<變量><復合運算符><表達式>;x+=2;二、復合語句復合語句:多個語句用花括號擴起來組成的語句。
目的:是將這多個語句看成是一條語句。復合語句的一般形式:{ [說明部分] <語句部分>}
{
intx=2,y;y=x++;}
例如:
if(x>y)
{inti,j;
i=s;
j=i++;
printf(“%d,%d”,i,j);
}
注意:內(nèi)部各條語句還是以分號結(jié)尾,結(jié)尾的右花括號后
不加分號,i,j只可以在復合語句中使用。
三、空語句
沒有內(nèi)容,只有一個分號“;”,便構成了一條空語句??照Z句不執(zhí)行任何操作,但在C語言中完全合法??照Z句在邏輯上屬于表達式語句,后面幾節(jié)就要用到空語句。
例如:
while(x>0);
{
sum=sum+x;
x--;
}
§4.3程序的三種基本結(jié)構
一、順序結(jié)構
按書寫的先后順序執(zhí)行語句。
二、分支結(jié)構
按照當時的某個條件決定是否執(zhí)行某些語句。
三、循環(huán)結(jié)構
在一定條件下反復執(zhí)行某些語句,直到這個條件不成立為止。語句1語句3語句2語句2條件語句1ny條件語句yn初始化語句條件修改語句工作語句yn初始化語句條件工作語句修改語句ny§4.4順序結(jié)構的程序設計【例4.1】賦值語句使用舉例(輸入三角形三邊的長度,求面積并將面積值輸出)。海倫公式:假設有一個三角形,邊長分別為a、b、c,三角形的面 積S可由以下公式求得。算法分析:而公式里的p:
需要5個實型變量調(diào)用求平方根函數(shù),結(jié)果賦給一個變量求出邊長和的一半程序如下:#include<stdio.h>#include<math.h>main(){floata,b,c,p,s;a=3.0;b=4.0;c=5.0;p=a+b+c;p/=2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“s=%7.2f",s);}scanf(“%f”,&a);scanf(“%f”,&b);scanf(“%f”,&c);運行結(jié)果如下:s=□□□6.00【例4.2】求三個整數(shù)的和及平均分main(){intnum1,num2,num3,sum;floataver;printf(“inputthreeintegernumbers:”);scanf(“%d%d%d”,&num1,&num2,&num3);sum=num1+num2+num3;aver=sum/3.0;printf(“sum=%d,aver=%7.2f\n”,sum,aver);}運行結(jié)果如下:345sum=12,aver=□□□4.00§4.5分支結(jié)構(選擇結(jié)構)三種條件語句:1、if語句2、if~else語句3、switch語句§4.5.1if語句if語句的一般形式:
if(表達式)語句;
條件表達式通常為關系表達式或邏輯表達式。if語句中的語句只能是一條語句,如果需要多條語句則使用復合語句。編寫程序時使用縮進使結(jié)構清晰。if(0>1) printf(“1”);printf(“2”);if(1>0) {printf(“1”);printf(“2”);}運行結(jié)果如下:2運行結(jié)果如下:12條件表達式通常為關系表達式或邏輯表達式。條件表達式也可以是其他類型的表達式,甚至可以是一個常量或變量。if(y+5)x++;if(2)x++;if(‘a(chǎn)’)
x++;if(x)y++;if(2) {printf(“1”);
printf(“2”);}運行結(jié)果如下:12if(x)if(x!=0)不等價if(x==0)
【例4.5】輸入一個整數(shù),若是3的倍數(shù),則顯示“ok”。#include<stdio.h>main(){inta;scanf("%d",&a);if(a%3==0)printf("ok");}
a%3==0printf(“ok”)0(不成立)1(成立)【例4.6】輸入一個字符,若是大寫字母,則輸出其ASCII碼。#include<stdio.h>main(){charch;ch=getchar();if(ch>='A'&&ch<='Z')printf("ch=%d\n",ch);}ch>=‘A’&&ch<=‘Z’printf(“ch=%d\n”,ch)0(不成立)1(成立)【例4.7】輸入兩個整數(shù),將小數(shù)存入x,大數(shù)存入y,并輸出。main(){intx,y,temp;printf(“inputx,y:”);scanf(“%d%d”,&x,&y);if(x>y){temp=x;x=y;y=temp;}printf(“x=%d,y=%d\n",x,y);}58585
§4.5.2if~else語句if~else語句的一般形式:if(表達式) 語句1;else 語句2;
語句2表達式語句1非零(成立)零(不成立)else或if(表達式){ 語句1;… 語句n;}else{ 語句1; …語句n;}【例4.8】輸入兩個整數(shù),輸出較大者。main(){inta,b;scanf("a=%d,b=%d",&a,&b);if(a>b)printf("max=%d",a);
elseprintf("max=%d",b);}顯示ba>b顯示a非零(成立)零(不成立)printf(“max=%d”,(a>b)?a:b);max=(a>b)?a:b;printf(“max=%d”,max);【例4.9】判斷某一年是否是閏年是則輸出yearxxxxisaleapyear.否則輸出yearxxxxisnotaleapyear.main(){inty;scanf(“%d”,&y);if((y%4==0&&y%100!=0)||(y%400==0)) printf("year%disaleapyear.\n",y);else printf("year%disnotaleapyear.\n",y);}【例4.10】輸入三個整數(shù),打印其中的最小值。main(){intx,y,z,min;printf(“inputx,y,z:”);scanf(“%d%d%d”,&x,&y,&z);if(x>y)min=y;elsemin=x;if(min>z)min=z;printf(“min=%d\n",min);}if(x>y)if(y>z)min=z;elsemin=y;elseif(x>z)min=z;elsemin=x;條件分支的嵌套雙分支結(jié)構單分支結(jié)構min=x;if(min>y)min=y;if(min>z)min=z;
if(條件1)語句1;else
if(條件2)語句2;…
else
if(條件n-1)語句n-1;
else語句n;條件1條件2語句2語句1語句n語句n-1假假假真真真真條件n-1多分支結(jié)構【例4.11】考試成績百分制轉(zhuǎn)換為五分制main(){intscore;chargrade;printf(“inputscore”);scanf(“%d”,&score);if(score>=90)grade='A';elseif(score>=80)grade='B';elseif(score>=70)grade='C';elseif(score>=60)grade='D';elsegrade='E';printf(“grade=%c\n”,grade);}§4.5.3switch語句
switch語句可直接處理多分支選擇,不使用分支嵌套,簡化程序結(jié)構。switch(表達式){case常量表達式1:語句組1;break;case常量表達式2:語句組2;break;...case常量表達式n:語句組n;break;default:語句組n+1;}
表達式語句組n語句組2語句組1=值1=值2=值n語句組n+1=其他常量表達式值必須互不相同,否則就會出現(xiàn)矛盾的現(xiàn)象。case與default的順序可以任意。執(zhí)行完某case后的語句后,將順序執(zhí)行后面case后的語句,直到遇break語句才退出整個switch結(jié)構的執(zhí)行。如果沒有default且“表達式”值不等于任何case后常量表達式的值,則直接退出switch結(jié)構而轉(zhuǎn)到其后的語句執(zhí)行。switch(表達式){case常量表達式1:語句組1;case常量表達式2:語句組2;break;...case常量表達式n:語句組n;break;}【例4.12】考試成績五分制轉(zhuǎn)換為百分制main(){charch;scanf(“%c”,&ch);
switch(ch){case‘A’:printf(“90-100\n”);
case‘B’:printf(“80-89\n”);case‘C’:printf(“70-79\n”);case‘D’:printf(“60-69\n”);case‘E’:printf(“<60\n”);default:printf(“error\n”);}}break;break;break;break;break;【例4.13】考試成績百分制轉(zhuǎn)換為五分制main(){intscore,m;chargrade=‘\0’;printf(“inputscore”);scanf(“%d”,&score);
m=score/10;
switch(m)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居家養(yǎng)老食堂合同(2篇)
- 2025年度O2O電商代運營團隊培訓與支持合同3篇
- 二零二五年度酒吧服務員全職雇傭合同規(guī)范文本3篇
- 二零二五年度生物科技園開發(fā)與管理承包合同2篇
- 二零二五版綠色環(huán)保辦公樓房地產(chǎn)買賣代理合同3篇
- 基于二零二五年度的采購合同2篇
- 二零二五年攝影攝像與后期制作合同2篇
- 二零二五版板材模板設計與制造技術服務合同3篇
- 二零二五年度電力系統(tǒng)用變壓器安裝及節(jié)能降耗合同3篇
- 二零二五版土地購置與綠色生態(tài)農(nóng)業(yè)合作合同3篇
- 銀行會計主管年度工作總結(jié)2024(30篇)
- 教師招聘(教育理論基礎)考試題庫(含答案)
- 2024年秋季學期學校辦公室工作總結(jié)
- 上海市12校2025屆高三第一次模擬考試英語試卷含解析
- 三年級數(shù)學(上)計算題專項練習附答案集錦
- 長亭送別完整版本
- 《鐵路軌道維護》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書簡版wps
- 職業(yè)學校視頻監(jiān)控存儲系統(tǒng)解決方案
- 《銷售心理學培訓》課件
- 2024年安徽省公務員錄用考試《行測》真題及解析
評論
0/150
提交評論