




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第四章程序控制結構及結構化程序設計
§4.1算法與程序設計算法是對特定問題求解步驟的一種描述算法的描述①自然語言描述法向計算機中輸入一個數X,若X≥0,則顯示X的值;否則不顯示。②偽代碼描述法ifx>0x→y③流程圖表示法流程圖:是一種能夠比較形象地描述“算法”的工具,它對于編制程序很有幫助。流程圖又稱為框圖,它是由如下幾種不同的圖形符號組合而成的。
起止框處理框輸入輸出框流程線條件判斷框連接符起止框:它代表一個算法的開始與結束。處理框:它可以表示算法中的一個或若干個步驟,這些步驟不涉及輸入與輸出。輸入輸出框:它表示一個算法中需要進行輸入或輸出處理的步驟。為了與一般的處理步驟區別開來,輸入輸出框采用了平行四邊形的形式。條件判斷框:當一個算法中需要依據某一條件來決定后續操作時,就采用此框。流程線:它表明每一步驟之間的先后順序,標識一個算法的走向。流程圖表示算法
開始結束輸入XX大于或等于0顯示X的值ynC程序構成:文件→函數→語句序列。語句:C語言中描述計算過程的最基本單位。由分號;結束。結構化程序設計方法:程序語句序列由三種基本結構(順序、分支、循環)構成,結構清晰、可讀性強。§4.2語句一、表達式語句C語言的表達式加上一個分號“;”結尾,就構成表達式語句,表達式語句主要完成運算功能。賦值表達式加上一個分號“;”結尾就構成了賦值語句,由于運算的結果往往需要保存起來,所以賦值語句也成為用得最多的表達式語句。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);
}
注意:內部各條語句還是以分號結尾,結尾的右花括號后
不加分號,i,j只可以在復合語句中使用。
三、空語句
沒有內容,只有一個分號“;”,便構成了一條空語句。空語句不執行任何操作,但在C語言中完全合法。空語句在邏輯上屬于表達式語句,后面幾節就要用到空語句。
例如:
while(x>0);
{
sum=sum+x;
x--;
}
§4.3程序的三種基本結構
一、順序結構
按書寫的先后順序執行語句。
二、分支結構
按照當時的某個條件決定是否執行某些語句。
三、循環結構
在一定條件下反復執行某些語句,直到這個條件不成立為止。語句1語句3語句2語句2條件語句1ny條件語句yn初始化語句條件修改語句工作語句yn初始化語句條件工作語句修改語句ny§4.4順序結構的程序設計【例4.1】賦值語句使用舉例(輸入三角形三邊的長度,求面積并將面積值輸出)。海倫公式:假設有一個三角形,邊長分別為a、b、c,三角形的面 積S可由以下公式求得。算法分析:而公式里的p:
需要5個實型變量調用求平方根函數,結果賦給一個變量求出邊長和的一半程序如下:#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);運行結果如下:s=□□□6.00【例4.2】求三個整數的和及平均分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);}運行結果如下:345sum=12,aver=□□□4.00§4.5分支結構(選擇結構)三種條件語句:1、if語句2、if~else語句3、switch語句§4.5.1if語句if語句的一般形式:
if(表達式)語句;
條件表達式通常為關系表達式或邏輯表達式。if語句中的語句只能是一條語句,如果需要多條語句則使用復合語句。編寫程序時使用縮進使結構清晰。if(0>1) printf(“1”);printf(“2”);if(1>0) {printf(“1”);printf(“2”);}運行結果如下:2運行結果如下:12條件表達式通常為關系表達式或邏輯表達式。條件表達式也可以是其他類型的表達式,甚至可以是一個常量或變量。if(y+5)x++;if(2)x++;if(‘a’)
x++;if(x)y++;if(2) {printf(“1”);
printf(“2”);}運行結果如下:12if(x)if(x!=0)不等價if(x==0)
【例4.5】輸入一個整數,若是3的倍數,則顯示“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】輸入兩個整數,將小數存入x,大數存入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】輸入兩個整數,輸出較大者。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】輸入三個整數,打印其中的最小值。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;條件分支的嵌套雙分支結構單分支結構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多分支結構【例4.11】考試成績百分制轉換為五分制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語句可直接處理多分支選擇,不使用分支嵌套,簡化程序結構。switch(表達式){case常量表達式1:語句組1;break;case常量表達式2:語句組2;break;...case常量表達式n:語句組n;break;default:語句組n+1;}
表達式語句組n語句組2語句組1=值1=值2=值n語句組n+1=其他常量表達式值必須互不相同,否則就會出現矛盾的現象。case與default的順序可以任意。執行完某case后的語句后,將順序執行后面case后的語句,直到遇break語句才退出整個switch結構的執行。如果沒有default且“表達式”值不等于任何case后常量表達式的值,則直接退出switch結構而轉到其后的語句執行。switch(表達式){case常量表達式1:語句組1;case常量表達式2:語句組2;break;...case常量表達式n:語句組n;break;}【例4.12】考試成績五分制轉換為百分制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】考試成績百分制轉換為五分制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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 3-12競爭和冒險1-邏輯冒險的判斷
- 山東省名校聯盟2024?2025學年高一下學期3月校際聯考 數學試題(含解析)
- 右江民族醫學院《有機化學B》2023-2024學年第二學期期末試卷
- 瀟湘職業學院《建筑工程質量與安全》2023-2024學年第二學期期末試卷
- 南昌大學科學技術學院《工程項目與質量管理》2023-2024學年第二學期期末試卷
- 陜西省西安市交大附中2024-2025學年第二學期十二月份月考英語試題含答案
- 濮陽科技職業學院《西方文學(上)》2023-2024學年第二學期期末試卷
- 廈門大學嘉庚學院《現代科學與工程計算(二)》2023-2024學年第二學期期末試卷
- 山西晉中理工學院《藥用動物學實驗》2023-2024學年第二學期期末試卷
- 上海嘉定區2025年高三零診綜合試題含解析
- 社會救助項目購買服務策劃方案
- 園林花卉 課件 第五章 室內花卉
- 《起重機械安全技術規程》(TSG51-2023)知識培訓
- 凝血與抗凝系統
- 中職英語高二期中考試試卷(含答案)
- 道路深層病害探地雷達無損檢測技術規范DB41-T 2525-2023
- 高壓電工作業培訓課件2024
- 2024年長春市初中語文學業水平考試網上閱卷模擬練習卷附答案
- 2024年事業單位考試題庫及答案(共200題)
- 水工維護高級工技能鑒定理論考試題庫(含答案)
- 勘查地球化學全冊配套完整課件
評論
0/150
提交評論