《C語言程序設(shè)計》課件-第3章 順序結(jié)構(gòu)程序設(shè)計_第1頁
《C語言程序設(shè)計》課件-第3章 順序結(jié)構(gòu)程序設(shè)計_第2頁
《C語言程序設(shè)計》課件-第3章 順序結(jié)構(gòu)程序設(shè)計_第3頁
《C語言程序設(shè)計》課件-第3章 順序結(jié)構(gòu)程序設(shè)計_第4頁
《C語言程序設(shè)計》課件-第3章 順序結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

C語言程序設(shè)計智能工程學(xué)院“現(xiàn)場課程”目錄CONTENTS

C語句概述2.1

格式輸入輸出2.2

字符輸入輸出2.3

提示嚴(yán)格來講,程序中聲明部分的內(nèi)容不應(yīng)稱為語句。例如,“inta;”不是一條C語句,因為它不產(chǎn)生機器操作,而只是對變量的定義。但是,為了方便講解,我們對兩者并未進行嚴(yán)格區(qū)分??傮w而言,C語句可以分為以下五類。

3.1C語句概述C語言作為結(jié)構(gòu)化程序設(shè)計語言的代表,其核心執(zhí)行單元是語句。語句通過遵循特定語法規(guī)則,實現(xiàn)數(shù)據(jù)操作、流程控制、函數(shù)調(diào)用等具體功能,是構(gòu)成C程序的基本“行動單元”。所有C語句都以分號(;)

結(jié)尾,這是區(qū)分語句與其他語法元素(如表達式、變量聲明)的關(guān)鍵標(biāo)志。表達式語句:最基礎(chǔ)的執(zhí)行單元定義:由“表達式+分號”構(gòu)成,核心作用是“計算表達式的值并執(zhí)行副作用”(如變量賦值、函數(shù)調(diào)用)。注意:部分表達式(如a+b)本身無實際副作用,單獨作為語句時(a+b;)僅計算值但不存儲或使用,通常無實際意義,這類語句稱為“空操作語句”的一種特殊形式。常見示例:賦值語句:x=10;(將10賦值給變量x,副作用是修改x的值)自增/自減語句:i++;(i的值加1,副作用是修改i)函數(shù)調(diào)用語句:printf("Hello");(調(diào)用printf函數(shù)輸出字符串,副作用是控制臺打?。?fù)合表達式語句:y=x*2+3;(先計算表達式值,再賦值給y)表達式語句1

3.1C語句概述定義:用于聲明變量、函數(shù)或類型別名的語句,核心作用是“告訴編譯器某個標(biāo)識符的存在及類型”。變量聲明:分為“定義性聲明”(分配內(nèi)存,如inta;)和“引用性聲明”(不分配內(nèi)存,如externinta;,用于跨文件引用變量);函數(shù)聲明:又稱“函數(shù)原型”,告知編譯器函數(shù)的返回值類型、參數(shù)個數(shù)及類型(如intadd(intx,inty););類型聲明:用typedef定義類型別名(如typedefintSize;,后續(xù)可用Size代替int定義變量)。示例:intnum;//變量定義性聲明(分配4字節(jié)內(nèi)存,默認(rèn)值不確定)externdoublepi;//變量引用性聲明(pi在其他文件中定義)charget_char();//函數(shù)聲明(告知編譯器:get_char無參數(shù),返回char)typedefstruct{//類型聲明(定義結(jié)構(gòu)體類型Person)charname[20];intage;}Person;聲明語句2

3.1C語句概述控制語句是結(jié)構(gòu)化程序設(shè)計的核心,用于改變程序“自上而下”的默認(rèn)執(zhí)行順序,實現(xiàn)分支、循環(huán)、跳轉(zhuǎn)等邏輯。C語言共提供9種控制語句,按功能可分為3類::控制語句3

3.1C語句概述定義:用大括號({})

將多條語句包裹起來,形成一個“語句塊”,在語法上等價于一條語句。核心特點:塊內(nèi)可以定義變量(C99及以后標(biāo)準(zhǔn)支持“塊作用域變量”,變量僅在塊內(nèi)有效);常用于控制語句的“分支體”或“循環(huán)體”,將多條相關(guān)語句封裝為一個整體。示例(for循環(huán)中的復(fù)合語句):#include<stdio.h>intmain(){for(inti=1;i<=5;i++)//i是塊作用域變量,僅在for循環(huán)體內(nèi)有效{intsquare=i*i;//square也是塊作用域變量printf("%d的平方是%d\n",i,square);//此處可以運行}printf("%d的平方是%d\n",i,square);//此處無法訪問i或square(編譯報錯)}復(fù)合語句4

3.1C語句概述定義:僅由一個分號(;)構(gòu)成的語句,不執(zhí)行任何操作。適用場景:當(dāng)語法要求必須有一條語句,但邏輯上無需執(zhí)行操作時(如循環(huán)體為空、switch的case無需處理)。示例(空循環(huán)體的for循環(huán)):longstart=clock();

//功能:等待1秒(通過循環(huán)消耗時間,實際開發(fā)用sleep函數(shù)更規(guī)范)for(;clock()-start<CLOCKS_PER_SEC;);//循環(huán)體為空,分號是空語句while(getchar()!='\n');//本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。這里的循環(huán)體為空語句。空語句5

3.1C語句概述C語言本身沒有提供輸入輸出語句,輸入和輸出操作由C函數(shù)庫中的函數(shù)來實現(xiàn)。在使用系統(tǒng)庫函數(shù)時,要使用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包含進來。本節(jié)將介紹最常用的標(biāo)準(zhǔn)輸入輸出函數(shù)——格式輸入輸出函數(shù),這些函數(shù)包含在“stdio.h”文件中,故在程序開頭應(yīng)該添加預(yù)編譯命令:#include<stdio.h>或#include"stdio.h"

名師點睛在初學(xué)本節(jié)內(nèi)容時,讀者不必花許多精力去探究每個細(xì)節(jié),重點在掌握最常用的一些規(guī)則。其他部分可在需要時隨時查閱。學(xué)習(xí)這部分內(nèi)容時最好邊看書邊上機練習(xí),通過編寫和調(diào)試程序逐步深入地掌握輸入輸出的應(yīng)用。

3.2格式輸入輸出在前面各章節(jié)中已多次用到了printf函數(shù)(格式輸出函數(shù)),它的作用是將指定的數(shù)據(jù)按指定的格式輸出到顯示器上。格式輸出函數(shù)printf,其一般格式為:printf("格式控制",輸出項列表);例如:printf("a=%d,b=%f",a,b);括號內(nèi)包括兩部分內(nèi)容:(1)“格式控制”是用雙撇號括起來的一個字符串,稱為“轉(zhuǎn)換控制字符串”。它包括兩個信息:①格式聲明。格式聲明由“%”和格式字符組成,如%d、%f等。它的作用是以指定的格式輸出數(shù)據(jù)。②普通字符。普通字符即需要原樣輸出的字符,例如,上面printf函數(shù)雙撇號內(nèi)的“a=”、“b=”及中間的逗號都是普通字符,會原樣輸出到屏幕上。printf函數(shù)的一般格式1

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)(2)“輸出項列表”是程序需要輸出的一些數(shù)據(jù),可以是常量、變量或表達式。輸出項列表中給出了各個輸出項,要求格式聲明和各輸出項在數(shù)量和類型上應(yīng)該一一對應(yīng)。例如,以下的printf函數(shù)中,第一個“%d”與變量a對應(yīng),第二個“%c”與變量b對應(yīng),第三個“%d”與表達式a+b對應(yīng)。

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)下面,我們重點介紹一下格式聲明這部分內(nèi)容。格式聲明一般形式為:%[標(biāo)志][0][輸出最小寬度][.精度][長度]格式字符其中方括號[]中的項為可選項。也可以表示為:%[±][0][m][.n][l或h]格式字符printf函數(shù)中的格式聲明2下面,我們重點介紹一下格式聲明這部分內(nèi)容。格式聲明一般形式為:%[標(biāo)志][0][輸出最小寬度][.精度][長度]格式字符其中方括號[]中的項為可選項。也可以表示為:%[±][0][m][.n][l或h]格式字符各項的意義介紹如下:標(biāo)志字符為“-”或“+”,指定輸出數(shù)據(jù)的對齊方式:指定“+”時,輸出右對齊;指定“-”時,輸出左對齊;不指定標(biāo)志時缺省為“+”,默認(rèn)右對齊。用十進制整數(shù)m來表示輸出的最少位數(shù)。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出;若實際位數(shù)少于定義的寬度,則補空格或0(如在m前有數(shù)字0,則補0)。精度格式符以“.”開頭,后跟十進制整數(shù)n。意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個數(shù);若實際位數(shù)大于所定義的精度數(shù),則截去超過的部分。長度格式符有h和l兩種,h表示按短整型輸出,l表示按長整型輸出。格式字符用來表示輸出數(shù)據(jù)的類型,各種格式字符及其功能說明如表所示。

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)標(biāo)志

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)格式符含義及相關(guān)舉例【例3-1】使用格式輸出函數(shù)printf輸出不同類型變量。#include<stdio.h>intmain(){intint_num=12345;//基本整數(shù)類型,通常為4字節(jié)shortshort_num=-678;//短整數(shù)類型,通常為2字節(jié)longlong_num=987654321;//長整數(shù)類型,通常為4或8字節(jié)unsignedintuint_num=4294967295U;//無符號整數(shù),只能表示非負(fù)數(shù)floatfloat_num=3.14159f;//單精度浮點數(shù),約6-7位有效數(shù)字,需加f后綴doubledouble_num=2.718281828459045;//雙精度浮點數(shù),約15-17位有效數(shù)字printf("int類型:%d\n",int_num);//%d用于輸出有符號十進制整數(shù)printf("short類型:%hd\n",short_num);//%hd用于輸出short類型整數(shù)printf("long類型:%ld\n",long_num);//%ld用于輸出long類型整數(shù)printf("unsignedint類型:%u\n",uint_num);//%u用于輸出無符號整數(shù)printf("八進制表示:%o\n",int_num);//%o用于輸出八進制整數(shù)(無前綴)printf("十六進制表示(小寫):%x\n",int_num);//%x用于輸出十六進制(小寫字母)printf("十六進制表示(大寫):%X\n\n",int_num);//%X用于輸出十六進制(大寫字母)printf("===浮點類型===\n");printf("float類型(默認(rèn)):%f\n",float_num);//%f用于輸出浮點數(shù)(默認(rèn)6位小數(shù))printf("float類型(指數(shù)形式):%e\n",float_num);//%e以科學(xué)計數(shù)法輸出(小寫e)printf("double類型(保留3位小數(shù)):%.3lf\n",double_num);//%.3lf控制保留3位小數(shù)printf("自動選擇最短格式:%g\n\n",double_num);//%g自動選擇%f或%e中更簡潔的格式return0;}

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)【運行結(jié)果】程序運行結(jié)果如圖所示。

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)【程序說明】通過這些示例,可以清晰地了解如何針對不同類型的變量選擇合適的格式說明符,以及如何使用修飾符控制輸出格式?!纠?-2】在printf函數(shù)中使用附加符號。#include<stdio.h>intmain(){ inta=15; /*定義整型變量a并賦值*/ doubleb=12345678.1234567; /*定義雙精度型變量b并賦值*/ printf("a=%5d,a=%-5d,a=%05d\n",a,a,a); /*使用m控制輸出位數(shù),用-左對齊, 空位補0*/ printf("b=%f,b=%lf,b=%8.3f\n",b,b,b); /*輸出b,用m.n控制輸出的長度和 小數(shù)點位數(shù)*/ printf("%15s\n","IloveC"); /*使用m控制輸出字符串長度*/ printf("%-15.5s\n","IloveC"); /*使用-m.n進行左對齊、限制字符串 長度和字符位數(shù)*/ return0; /*函數(shù)返回值0*/}

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)【運行結(jié)果】程序運行結(jié)果如圖所示。

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)【程序說明】輸出變量a時,“%5d”表示輸出寬度為5,而a值為15,只有兩位,故補三個空格;“%-5d”表示輸出寬度為5并且左對齊,因此后補三個空格;“%05d”表示輸出寬度為5并用“0”來補空位。輸出變量b時,“%f”和“%lf”格式的輸出相同,說明符號“l(fā)”對“f”類型無影響?!?8.3f”表示輸出寬度為8,精度為3,由于實際長度超過8位,故應(yīng)按實際位數(shù)輸出,小數(shù)位數(shù)超過3位部分被截去。輸出字符串時,“%15s”表示輸出字符串寬度為15,如果字符串本身長度不足15,則用空格左補齊,可以看到“IloveC”前存在7個空格?!?-15.5s”表示輸出寬度雖為15,但這里指定了精度“.5”,也就是說指定了輸出字符的個數(shù)為5,并且用“-”指定了左對齊,所以輸出5個字符“Ilov”,后面還有10個空格。

3.2格式輸入輸出3.2.1格式輸出——printf函數(shù)scanf()函數(shù)用于從標(biāo)準(zhǔn)輸入設(shè)備(通常是鍵盤)讀取格式化的數(shù)據(jù)。格式輸入函數(shù)scanf的一般格式為:scanf("格式控制",輸入項地址列表);例如:scanf("a=%d,b=%f",&a,&b);scanf函數(shù)的一般格式1

3.2格式輸入輸出3.2.2格式輸入——scanf函數(shù)括號內(nèi)包括兩部分內(nèi)容:“格式控制”與printf函數(shù)類似,也包含兩部分內(nèi)容:格式聲明與普通字符。格式聲明用于規(guī)定輸入的格式(如%d、%f等),如輸入數(shù)據(jù)的類型、長度等;普通字符是需按原樣輸入的字符,如前面的“a=”、“b=”及中間的逗號。輸入項地址列表,由需要輸入變量的地址組成。變量的地址需用取地址運算符“&”得到。多個輸入項之間用逗號隔開,同樣要求格式聲明和各輸入項在數(shù)量和類型上一一對應(yīng)。

3.2格式輸入輸出3.2.2格式輸入——scanf函數(shù)12scanf函數(shù)中的格式聲明與printf函數(shù)中的格式聲明類似,以“%”開始,以一個格式字符結(jié)束,中間可以插入附加的符號。其形式為:%[m][l或h]格式字符其中方括號中為可選項,可以沒有,但格式字符不能缺少。數(shù)據(jù)寬度m:m為十進制整數(shù),用于指定輸入數(shù)據(jù)的寬度(即數(shù)字個數(shù))。例如:scanf("%4d",&a);如果輸入:123456則只讀入4位給變量a,即a為1234,后面的5、6被舍棄。如輸入小于4位,則不影響。對指定了寬度的格式輸入,數(shù)據(jù)之間可以無分隔符,將根據(jù)各自寬度來讀入。例如:scanf("%3d%3d",&a,&b);輸入:123456,則a等于123,b等于456。長度l/hl表示輸入長整型或雙精度型數(shù)據(jù),h表示輸入短整型數(shù)據(jù)。例如:%ld、%lo、%lx表示輸入數(shù)據(jù)為長整型(十進制、八進制、十六進制);%lf、%le表示輸入數(shù)據(jù)為雙精度型(小數(shù)形式、指數(shù)形式);%hd、%ho、%hx表示輸入數(shù)據(jù)為短整型。scanf函數(shù)中的格式聲明2

3.2格式輸入輸出3.2.2格式輸入——scanf函數(shù)

3.2格式輸入輸出格式符含義及相關(guān)舉例3.2.2格式輸入——scanf函數(shù)

提示使用注意事項1.變量地址:scanf()的參數(shù)必須是變量的地址(使用&運算符),字符串?dāng)?shù)組除外inta;floatb;charstr[20];scanf("%d%f%s",&a,&b,str);//str不需要&,因為數(shù)組名本身就是地址2.輸入分隔:默認(rèn)以空白字符(空格、制表符、換行符)作為輸入數(shù)據(jù)的分隔3.輸入格式匹配:輸入數(shù)據(jù)的格式應(yīng)與格式字符串中的格式說明符匹配intx,y;scanf("%d,%d",&x,&y);//正確輸入:10,204.緩沖區(qū)問題:scanf()會留下?lián)Q行符在輸入緩沖區(qū),可能影響后續(xù)輸入,特別是字符輸入inta;charc;scanf("%d",&a);//輸入10并回車scanf("%c",&c);//這里會讀取到回車符'\n',而不是用戶輸入的下一個字符解決方法:在%c前加空格,跳過空白字符scanf("%c",&c);//注意%c前的空格

3.2格式輸入輸出3.2.2格式輸入——scanf函數(shù)字符輸出函數(shù)putchar的功能是向輸出設(shè)備輸出一個字符,其一般格式為:putchar(c);c為欲輸出的字符常量或變量,亦可為整型常量或變量(ASCII碼)?!纠?-3】輸出ABC三個字符?!締栴}分析】輸出三個字符,可用三次putchar函數(shù)進行輸出,這里我們分別用字符變量、整型變量和字符常量作為putchar的參數(shù)來進行輸出。

3.3字符輸入輸出3.3.1字符輸出——putchar函數(shù)【參考代碼】#include<stdio.h>intmain(){ chara='A'; /*定義字符型變量a并賦初值'A'*/ intb=66; /*定義整型變量b并賦初值66*/ putchar(a); /*輸出變量a的值*/ putchar(b); /*輸出變量b的值*/ putchar('C'); /*輸出字符'C'*/ putchar('\n'); /*輸出換行符*/ return0; /*函數(shù)返回值0*/}

3.3字符輸入輸出3.3.1字符輸出——putchar函數(shù)運行結(jié)果程序運行結(jié)果如圖所示。

提示可以用putchar函數(shù)輸出轉(zhuǎn)義字符,例如:putchar('\n'); /*輸出換行符*/putchar('\101'); /*輸出字符A,因為八進制的101等于十進制的65*/putchar('\''); /*輸出單撇號*/

3.3字符輸入輸出3.3.1字符輸出——putchar函數(shù)字符輸入函數(shù)getchar的功能是從輸入設(shè)備上讀入一個字符,其一般格式為:getchar();該函數(shù)的返回值為所讀入的字符,所以一般與賦值語句聯(lián)合使用,將讀取的字符賦給變量,例如:charc; /*定義字符變量c*/c=getchar()

溫馨提示

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

最新文檔

評論

0/150

提交評論