《C語言程序設計教程》課件第3章 順序結構程序設計_第1頁
《C語言程序設計教程》課件第3章 順序結構程序設計_第2頁
《C語言程序設計教程》課件第3章 順序結構程序設計_第3頁
《C語言程序設計教程》課件第3章 順序結構程序設計_第4頁
《C語言程序設計教程》課件第3章 順序結構程序設計_第5頁
已閱讀5頁,還剩33頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

第三章順序結構程序設計2第三章

順序結構程序設計教學目標:了解程序控制的三種結構掌握賦值語句的使用熟悉格式輸入輸出函數的用法教學重點與難點:掌握格式輸入輸出函數的用法33.1程序控制的三種基本結構

C語言是結構化程序設計語言,主要有:順序結構、選擇結構和循環結構三種。3.1.1結構化算法1.程序程序是由軟件開發人員根據用戶需求設計的、用程序設計語言描述的指示計算機執行操作的一組指令序列。程序一般包括兩個方面:數據結構(對數據的描述)和算法(對操作的描述)。其中,算法是程序設計的核心部分。43.1.1結構化算法2.算法為解決一個特定的問題而采取的方法和步驟稱為算法??梢园涯硞€相對復雜的活動分解成為若干個相對簡單的部分。3.算法的描述描述算法的方法有多種,常用的有自然語言、傳統流程圖、N-S結構圖等。

(1)自然語言:人們日常使用的語言,通俗易懂,通常是指一種自然地隨文化演化的語言。

(2)傳統流程圖:傳統流程圖由一些圖形框和流程線組成,如圖3.1所示。5圖3.1傳統流程圖符號3.1.1結構化算法6起止框:表示程序的開始或結束。輸入輸出框:表示輸入或輸出數據。判斷框:表示按照給定的條件進行判斷,根據條件是否成立來決定后續操作。判斷框中寫出判斷條件,并引出兩條或多條流程線表示進行不同的處理。處理框:表示基本處理操作。流程線:表示程序的執行流向,用于連接各流程圖符號。3.1.1結構化算法7【例3.1】用傳統流程圖描述輸入的數據是否大于0。3.1.1結構化算法8(3)N-S結構圖3.1.1結構化算法91.順序結構順序結構是最簡單的程序結構,按照語句出現的先后順序由上向下依次執行。如圖3.5所示,先執行語句塊A,再執行語句塊B。

3.1.2程序的三種基本結構102.選擇結構選擇結構又稱為分支結構,即根據給定的條件選擇執行其中一個分支。選擇結構有三種,單分支、雙分支和多分支結構,如圖3.6、圖3.7、圖3.8所示

3.1.2程序的三種基本結構11圖3.8多分支選擇結構

3.1.2程序的三種基本結構123.循環結構循環結構是根據條件來決定循環體是否反復執行。按照循環控制條件出現的位置,可分為當型循環和直到型循環兩種循環結構。

當型循環:首先判斷條件,當條件表達式為真時,反復執行循環語句,直到條件為假時終止循環,如圖3.9所示。

直到型循環:先執行循環語句,然后再判斷條件是否成立。如果條件表達式為真,則繼續執行循環語句,直到條件為假時,跳出循環,如圖3.10所示。

3.1.2程序的三種基本結構133.1.2程序的三種基本結構143.2賦值語句順序結構中常見的是賦值語句,由賦值表達式加分號構成。其一般形式為:

變量=表達式;例如:a=8;/*將變量a賦值為8*/c=a+b;/*將表達式a+b的值賦給變量c*/15注意:賦值語句左側只能是變量,右側的表達式可以是常量、變量、數組元素、函數或其他表達式。(2)賦值號“=”與關系運算符“==”是有區別的,后者用于判斷運算符左右兩邊是否相等。(3)賦值運算符“=”右邊的表達式可以是其他表達式,從而構成嵌套形式,即:變量=(變量=表達式);(4)賦值語句允許連續賦值,而在變量聲明中,不允許連續給多個變量賦初值。3.2賦值語句163.3格式輸入輸出函數

C語言本身并不提供輸入輸出語句,輸入輸出是由函數實現的。在C標準函數庫中常用的輸入輸出函數有:printf()、scanf()、putchar()和getchar()等。在使用C語言庫函數時,要用“#include”命令將有關的“頭文件”包括到用戶源文件中,這些頭文件包含了程序中調用函數的有關信息。因此,在調用輸入輸出庫函數時,文件開頭應包含以下命令:#include<stdio.h>或#include“stdio.h”17常用的頭文件及功能說明如表3.1所示3.3格式輸入輸出函數頭文件功能說明stdio.h標準輸入輸出函數math.h數學函數ctype.h字符處理函數string.h字符串處理函數conio.h屏幕處理函數time.h日期與時間函數stdlib.h動態存儲分配函數18格式化輸出函數printf()的功能是按照指定的格式向計算機的終端(一般是顯示器)輸出若干任意類型的數據。語法格式為:printf("格式控制字符串",輸出列表);例如:printf(“Howareyou?”); printf("%d",a);1.格式控制字符串格式控制字符串是由雙引號括起來的字符串,用于指定輸出的格式。它由格式轉換說明符、控制字符和普通字符組成。3.3.1格式輸出函數printf()19

(1)格式轉換說明符

格式轉換說明符是以“%”開頭,在“%”后面跟有各種格式字符,以說明輸出數據的類型、形式、長度和小數位數等。常用的printf函數的格式說明符如表3.2所示。

3.3.1格式輸出函數printf()格式符功能說明%d,%i以帶符號的十進制形式輸出整數%u以無符號的十進制形式輸出整數%o以無符號的八進制形式輸出整數%x,%X以無符號的十六進制形式輸出整數%c輸出一個字符%s輸出字符串%f輸出小數形式的實數,默認為6位小數%e,%E輸出指數形式的實數20另外,在格式轉換說明符中,還可在“%”符號與格式字符間插入附加格式說明符,如表3.3所示。3.3.1格式輸出函數printf()附加字符功能說明l用于長整型,可加在格式符d、o、x、u的前面m(代表一個正整數)數據最小寬度,若數據實際寬度大于m,則按實際寬度輸出;若實際寬度小于m,則在前面補0或空格.n(代表一個正整數)若為實數,則表示輸出n位小數;若為字符串,則表示從左截取的字符個數+輸出的數字前帶有正負號-輸出的數據左對齊,默認為右對齊21

(2)控制字符控制字符即轉義字符,用于控制鍵盤上的動作。以反斜杠“\”開頭,后面跟一個或多個字符,如回車換行符“\n”等

(3)普通字符普通字符是需要照原樣輸出的字符,一般用來描述輸出結果。其中包括雙引號內的逗號,等號、空格、普通字母、漢字等。3.3.1格式輸出函數printf()222.輸出列表輸出列表中列出的是需要輸出的數據項,各數據項之間以“,”分隔,可以是變量、常量或表達式。3.使用printf函數的幾點說明(1)輸出列表中的各個輸出項要求和格式轉換說明符在數量、順序和類型上保持一一對應和匹配。(2)當多個輸出項為表達式時,一般先按從右到左的順序計算各表達式的值,然后再按從左到右的順序輸出結果。(3)格式轉換說明符與輸出列表中參數不一致時可能產生錯誤。3.3.1格式輸出函數printf()23【例3.3】printf()函數的簡單應用。程序如下:#include<stdio.h>main(){inta=97,b=98;printf("%d,%d\n",a,b);/*以十進制形式輸出a,b*/printf("%c,%c\n",a,b);/*以字符形式輸出a,b*/printf("a=%d,b=%d\n",a,b);}程序運行結果:97,98a,ba=97,b=98

3.3.1格式輸出函數printf()24【例3.4】使用printf()函數輸出數值型數據。程序如下:#include<stdio.h>main(){inta=10,b=256,c=1024;floate=1234.567;

printf("%d,%d,%d\n",a,b,c);printf("%6d,%6d,%6d\n",a,b,c);/*數據的最小寬度為6*/printf("%o,%o,%o\n",a,b,c);/*以八進制形式輸出a,b*/printf("%f,%8.2f,%-8.2f\n",e,e,e);}程序運行結果:10,256,1024ㄩㄩㄩㄩ10,ㄩㄩㄩ256,ㄩㄩ102412,400,20001234.567017,ㄩ1234.57,1234.573.3.1格式輸出函數printf()25格式輸入函數scanf()的功能是按照指定的格式從鍵盤上輸入任意類型的數據。其語法的一般格式為:

scanf("格式控制字符串",地址列表);例如:scanf("%d,%d,%d",&a,&b,&c);

1.格式控制字符串格式控制字符串與printf函數中的“格式控制字符串”作用相同,也是由雙引號括起來,以“%”字符開始,以一個格式字符結束,中間可以插入附加說明字符。常用的scanf函數的格式說明符如表3.4所示。3.3.2格式輸入函數scanf()26格式符功能說明%d,%i以帶符號的十進制形式輸入整數%u以無符號的十進制形式輸入整數%o以無符號的八進制形式輸入整數%x,%X以無符號的十六進制形式輸入整數%c輸入一個字符%s輸入字符串%f輸入小數形式的實數%e,%E輸入指數形式的實數3.3.2格式輸入函數scanf()27同樣,還可在“%”符號與格式字符間插入附加格式說明符,如表3.5所示。3.3.2格式輸入函數scanf()附加字符功能說明L或l輸入長整型,可加在格式符d、o、x、u的前面;輸入double型,可加在格式符f或e的前面h輸入短整型,可加在格式符d、o、x、i的前面m表示輸入數據所占寬度(實型數據除外)*表示指定的輸入項在讀入后不賦值給相應的變量282.地址列表地址列表中的地址是由地址運算符“&”后跟變量名組成的,變量地址之間以逗號“,”分隔。用戶不必關心具體的地址是多少,直接使用即可。例如:scanf("%d,%d,%d",&a,&b,&c);3.使用scanf()函數時應注意以下幾點:(1)scanf函數地址列表中必須給出變量的地址,如果給出變量名則出錯。例如:scanf("%d,%d",a,b);是非法的。應改為:scanf("%d,%d",&a,&b);只有數組例外,具體見第六章數組。3.3.2格式輸入函數scanf()29(2)對于實型數據,使用scanf函數輸入時不能控制其精度。例如:scanf("%10.2f",&a);是非法的。

(3)如果“格式控制字符串”中有非格式字符,則輸入數據時也要在對應的位置輸入該非格式字符。例如:scanf("%d,%d,%d",&a,&b,&c);其中使用了非格式字符“,”,因此輸入時應為:1,2,3↙又如:scanf("a=%d,b=%d",&a,&b);輸入時應為:a=8,b=9↙3.3.2格式輸入函數scanf()30

(4)如果“格式控制字符串”中沒有非格式字符,則認為輸入的字符均為有效字符,包括空格和轉義字符。例如:scanf("%c%c%c",&a,&b,&c);如果輸入“aㄩbㄩc↙”,則表示把字符‘a’賦給a,空格‘ㄩ’賦給b,字符‘b’賦給c。只有當輸入為“abc”時,才能將字符‘a’賦給a,‘b’‘賦給b,‘c’賦給c。(5)輸入多個數值型數據時,若“格式控制字符串”中沒有非格式字符間隔,則可使用空格鍵、Tab鍵或Enter鍵間隔。C編譯系統在遇到空格鍵、Tab鍵、Enter鍵或非法數據(若使用“%d”對應輸入“8C”時,C為非法數據)時則認為該數據輸入結束。(6)若在格式控制符中出現“%*”,scanf函數讀入對應的值后不賦給相應的變量,即跳過該輸入值。3.3.2格式輸入函數scanf()313.4字符輸入輸出函數字符輸出函數putchar()的功能是向計算機的終端(一般是顯示器)輸出一個字符。其語法的一般格式為:putchar(c);其中,c可以是字符常量或字符變量。例如:putchar('A');/*輸出大寫字母A*/putchar(97);/*輸出小寫字母a,即ASCII碼為97對應的字符*/32【例3.6】putchar()函數的應用。程序如下:#include<stdio.h>main(){charx,y,z;intt;x='A';y='B';z='C';t=97;

程序運行結果:ABCaA3.4.1字符輸出函數putchar()putchar(x);putchar(y);putchar(z);putchar('\n');putchar(t);putchar(t-32);}33字符輸入函數getchar()的功能是從鍵盤上輸入一個字符。其語法的一般格式為:

getchar();例如:charch;ch=getchar();/*將輸入的字符賦值給字符變量*/getchar()函數也可與putchar()函數一起使用,又如:putchar(getchar());/*輸出從鍵盤上輸入的一個字符*/3.4.2字符輸入函數getchar()34【例3.7】getchar()函數的應用。程序如下:#include<stdio.h>main(){charch1,ch2;ch1=getchar();ch2=getchar();putchar(ch1);putchar(ch2);}

程序運行結果:AB↙AB3.4.2字符輸入函數getchar()353.5程序綜合實例【例3.8】從鍵盤上輸入某名學生三門課(語文、數學、外語)考試成績,計算出該學生總成績和平均成績(保留2位小數)。程序如下:#include<stdio.h>main(){floata,b,c,sum,average;printf("請輸入該名學生語文、數學和外語成績:\n");scanf("%f,%f,%f",&a,&b,&c);sum=a+b+c;average=sum/3;printf("總成績:%5.2f,平均成績:%5.2f\n",sum,average);}

程序運行結果:請輸入該名學生語文、數學和外語成績:85.5,97.

溫馨提示

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

評論

0/150

提交評論