




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、關于語言入門教程基礎第一張,PPT共四百三十四頁,創(chuàng)作于2022年6月第一章 計算機語言與C語言概述 1.1 計算機語言概念 計算機語言定義 計算機能夠識別和接受的語言。 要使計算機按自己的意圖工作,必須使用計算機所能接受、理解和執(zhí)行的指令指揮計算機工作。第二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 計算機語言的種類 機器語言 低級語言 匯編語言 (面向計算機) BASIC 入門語言 F77 科學計算 高級語言 Foxpro 數(shù)據(jù)庫管理 (面向問題 ) C 多用途 計算機語言第三張,PPT共四百三十四頁,創(chuàng)作于2022年6月機器語言 最早問世,用二進制代碼構成指令。 如: 100000
2、(+) 110000 (-) 用機器語言編程的缺點: 繁瑣、不直觀、不易調試。 如計算y=2x2+3x-1需要七八條指令。 移植性差。 依賴于計算機。 第四張,PPT共四百三十四頁,創(chuàng)作于2022年6月匯編語言 用符號構成指令,如:MOV、ADD 用匯編語言編程: 相對直觀,但仍繁瑣,仍是面向計算機的語言。 匯編語言是計算機間接接受的語言第五張,PPT共四百三十四頁,創(chuàng)作于2022年6月高級語言與低級語言相比,有根本性的區(qū)別: 是面向問題的語言。高級語言的一條指令(語句): y=2*x*x+3*x-1; 對應于:y=2x2+3x-1 y=sin(x); 對應于:y=sinx用高級語言編程:直觀
3、、易懂、移植性好(不依賴于具體計算機)第六張,PPT共四百三十四頁,創(chuàng)作于2022年6月上機運行高級語言程序需經(jīng)過編譯: 編譯 執(zhí)行 要上機完成一個計算問題,主要的任務就是用高級語言編寫出相應的源程序。即至少要學會一種計算機語言。 高級語言源程序 機器指令目的程序結果編譯程序第七張,PPT共四百三十四頁,創(chuàng)作于2022年6月1.2 C語言的特點 集高級語言和低級語言的優(yōu)點于一身: 能實現(xiàn)低級語言的大部分功能(如直接訪問內存物理地址、進行位操作等)。 圖形功能強。 運算符和數(shù)據(jù)結構豐富。 語法限制不太嚴格,程序設計自由度大。 生成目標代碼質量高,程序執(zhí)行效率高。 第八張,PPT共四百三十四頁,創(chuàng)
4、作于2022年6月1.3 簡單的C程序介紹 例1: main() 主函數(shù)說明 程序框架 printf(“abcdef”); 函數(shù)體 語句 程序的功能是輸出字符串:abcdef 第九張,PPT共四百三十四頁,創(chuàng)作于2022年6月例2:求兩數(shù)之和。main() int a,b,c; a a=100; b=50; b c=a+b; c printf(“n c=%d”,c);程序運行結果:c=150 第十張,PPT共四百三十四頁,創(chuàng)作于2022年6月例3:求兩數(shù)中的最大值。 函數(shù)類型 函數(shù)名 形參main() int max (int x,int y) int a,b,c; int z; scanf(
5、“%d,%d”,&a,&b); if(xy) z=x; c=max(a,b); else z=y; printf(“nmax is:%d”,c); return(z); a x b y c z (兩個函數(shù)組成)353555第十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 總結上例可知:(1) C程序由函數(shù)構成。(2) 函數(shù)由兩部分組成: 函數(shù)說明部分:函數(shù)名、函數(shù)類型、形參名、形參類型。 函數(shù)體:實現(xiàn)函數(shù)的具體操作;由語句構成。(3) 程序總是從main函數(shù)開始執(zhí)行。(4) 書寫格式自由。(5)語句必須有分號。 : 第十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 第二章 算法 2.1
6、 算法的概念 要利用計算機處理問題,光學習語言的語法規(guī)則還不夠,最重要的是要學會針對各類型的問題,擬定出有效的解題方法和步驟。解題方法和步驟就是算法。第十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月算法: 為了解決一個問題而采取的有限步驟。 計算機算法: 如何使計算機一步一步地工作的具體過程。 第十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 利用計算機處理問題的步驟: 1)設計好算法算法設計; 2)用計算機語言實現(xiàn)算法程序設計。 算法必須是“有效”的。 算法設計還要充分考慮算法的好壞。 衡量算法好壞的主要標準: 程序簡練。 執(zhí)行速度快。 占空間少。 第十五張,PPT共四百三十四頁,創(chuàng)
7、作于2022年6月例:考慮 的算法。算法:直接表達。直接用語句 s=1+2+3+4+5+6+7+8+9+10當項數(shù)較多時該算法不適用s=i110第十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月算法:迭代法(累加求和法) s=1+2+3+4+5+6+7+8+9+10 算法步驟: s i 使s=0 + 使i=1 累加器 記數(shù)器 s+is i+1i 若i10轉,否則轉 輸出s01123364105該算法通用,是好算法第十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月2.2 算法的表示 算法需要有統(tǒng)一的表示方法 常用的表示方法有: 自然語言 流程圖 結構化流程圖 N-S流程圖. 第十八張,PPT
8、共四百三十四頁,創(chuàng)作于2022年6月1、自然語言 對于計算 s=1+2+3+4+5+6+7+8+9+10 用自然語言表示為: 使s=0 (s為累加器) 使i=1 (i為計數(shù)器) s+is (累加求和公式) i+1i (計數(shù)器加1) 若i10轉,否則轉 輸出s的值 特點:通俗易懂、文字冗長、含義不大嚴格。 第十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月2、流程圖 用流程圖符號表示算法。 常用的流程圖符號 起止框 輸入輸出框 處理框 流程線 判斷框 第二十張,PPT共四百三十四頁,創(chuàng)作于2022年6月 對于計算 s=1+2+3+4+5+6+7+8+9+10 用流程圖表示為:s+i s i+1
9、 i S+i s S+i s i10 輸出s 0 s 1 i 直觀形象,易于理解,次序清楚YN第二十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月3、結構化流程圖 傳統(tǒng)的流程圖有一個弊端:對流程線沒有嚴格的限制,對于較復雜的算法可能會變成亂麻一般(BS型算法)。 為克服這一弊端,提出了由三個基本結構組成算法流程圖的思想: 結構化流程圖 第二十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 三個基本結構:順序結構 按固定順序(從上到下或從左到右)執(zhí)行的結構。 ABab第二十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月選擇結構 根據(jù)條件P選擇執(zhí)行哪一個分支。 成立 不成立 pABab成立不
10、成立第二十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月例:計算 y= 1/x 當x0時 y= 10000 當x=0時 的算法流程圖圖: 選擇結構 輸入x X=0? 10000y 1/xy 輸出y YN第二十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月 循環(huán)結構 重復執(zhí)行某些操作的結構。 分為兩種: 當型循環(huán)和直到型循環(huán)。 當型循環(huán) 直到型循環(huán) P1AAP2aabbYYNN第二十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 可以看出,每個基本結構都只有一個入口和一個出口,因此,用三個基本結構構成的流程圖不會象亂麻一般,用三個基本結構構成的流程圖就成為結構化流程圖,用結構化流程圖描述的
11、算法稱為結構化算法,相應的程序設計就稱為結構化程序設計。 第二十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月觀察前例: 0 s 1 i S+i s i+1 i i10 輸出s 順序結構循環(huán)結構yn第二十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月4 N-S流程圖N-S流程圖的三個基本結構: ABP成立不成立ABAB當P1直到P2順序結構選擇結構循環(huán)結構第二十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月例:計算 y= 1/x 當x0時 y= 10000 當x=0時 的N-S流程圖:輸入x X=0?是否10000y 1/xy 輸出y 第三十張,PPT共四百三十四頁,創(chuàng)作于2022年6月
12、 例: 計算 s=1+2+3+4+5+6+7+8+9+10 的N-S流程圖: i10 直到i10 直到型 當型 0 s 1 i 輸出s 1 i 0 s s+i s i+1 i s+i s i+1 i 輸出s 第三十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 第三章 數(shù)據(jù)類型、運算符 與 表達式 3.1 C 的數(shù)據(jù)類型基本類型 (整型、實型、字符型、枚舉型)構造類型 (略)指針類型 (略) 空類型 各類型包含常量與變量第三十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.2 常量與變量 常量與符號常量 常量 在程序運行過程中其值保持不變的量。 符號常量 用來代表一個常量的標識符。 #
13、define PI 3.1415926第三十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例: #define PI 3.1415926 main() float r=2,c; c=2*PI*r; printf(“%f”,c); 第三十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 變量 其值可以改變的量。 變量的三要素: 變量名每個變量有一個名字,作為識別該變量的標識符。 變量的值 每個變量有一個值,變量的值是隨時可以改變的。第三十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月 變量的存儲單元 每個變量占據(jù)一個內存單元,用于存放變量的值。 變量名 a 變量值 存儲單元3第三十六張,P
14、PT共四百三十四頁,創(chuàng)作于2022年6月 變量的命名規(guī)則: 由字母、數(shù)字和下劃線組成 以字母或下劃線開頭 a、x1、y_2、_b1、_1c 合法 1x、a+2、 不合法 變量必須先定義后使用。 程序中何時使用常量?何時使用變量?第三十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.3 整型數(shù)據(jù) 整型常量 即整常數(shù),c的整常數(shù)有三種形式: 十進制整數(shù) 與數(shù)學中的整數(shù)一致,如:100,123,15等。 八進制整數(shù) 以0開頭的整數(shù),如:010,07,020等。 十六進制整數(shù) 以0 x開頭的整數(shù),如:0 x10,0 xff,0 x2a等。第三十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 整
15、型變量 用于存放整數(shù)的變量。 分4種類型: 基本型:int a 16位,可表示的數(shù)值范圍:-3276832767 短整型:short int b 16位,可表示的數(shù)值范圍:-3276832767 長整型:long int c 32位,數(shù)值范圍:-21474836482147483647第三十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月 無符號型:加上 unsigned 只存放正數(shù)。 如:unsigned int x 變量x為無符號整數(shù),16位全表示數(shù)碼, 數(shù)值范圍:065535 在程序設計中,如果要使用整型變量,必須首先選擇以上類型符來定義變量,然后才能使用; 第四十張,PPT共四百三十四
16、頁,創(chuàng)作于2022年6月 例: main() 定義 int a,b,c; a=100; b=50; 使用 c=a+b; printf(“%d”,c); 一般根據(jù)什么原則選擇變量的類型?第四十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.4 實型數(shù)據(jù) 實型常量 可使用兩種形式表示: 小數(shù)形式:如 1.23, 3.1415926 15.48 指數(shù)形式:如 1e-20 1.23e5 第四十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 實型變量 用于存放實數(shù)的變量 分單精度和雙精度兩種: float a,b 定義a和b為單精度型變量 32位,7位有效數(shù)字,10-381038 double
17、x,y 定義x和y為雙精度型變量 64位,15位有效數(shù)字,10-30810308第四十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例: main() float r,c; double r,c; r=5; c=2*3.1415926*r; printf(“%f”,c); 第四十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.5 字符型數(shù)據(jù) 字符常量 用單引號括起來的一個字符。 a,x,*,1等 除此外,以開頭的字符如n,t等 稱為轉義字符,祥見書表3.3第四十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月 字符型變量 用于存放字符的變量。 char c1,c2 定義c1和c2為字
18、符型變量 c1=a; c2=b; 字符賦值 字符型變量存放一個字符,占據(jù)一個字節(jié)第四十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 字符型數(shù)據(jù)的存儲形式 存放ASCII碼 不是 而是 如字符a在內存中存放97,b 存放98。 與整數(shù)的存儲形式一致,它們之間可以通用 一個字符數(shù)據(jù)既可以作字符用,也可以作整數(shù)用(取其ASCII代碼)。 如:32+a相當于 32+97 若 int x; char c;則 x=a; c=97; x=97; c=a; 都允許 a97第四十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 字符串常量 用雙引號括起來的字符序列。 如:”abcde”,”china” ”a
19、”也屬字符串。 注意”a”與a的區(qū)別。 對于: char c; c=”a”; 用法錯誤第四十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 字符串中每個字符各占一個字節(jié),并且在字符串結尾加上一個結束標記0 如:”china” 在內存中占6個字節(jié)。 c h i n a 0 C語言中專門的字符串變量,可用字符數(shù)組存放(以后介紹)。第四十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.6 變量賦初值 在定義變量的同時給相應的變量賦初值。 如: int a=3; a float b=5.2; char c=a; int x=y=z=6; 效果: 在給變量分配內存單元的同時在相應的單 元中存放初
20、值。 3第五十張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.7 各數(shù)值型數(shù)據(jù)間的混合運算 整型、實型、字符型數(shù)據(jù)間可以進行混合運算,如: 10-a*1.5 運算時,參加運算的兩個數(shù)據(jù)如果類型不同,則首先將其類型轉換成一致再運算,轉換規(guī)則是: 將優(yōu)先級低的類型轉換到優(yōu)先級高的類型第五十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 數(shù)據(jù)類型的優(yōu)先級: 高 double float long unsignde 低 int char第五十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.8 算術運算符與算術表達式 基本的算術運算符 + - * / % 算術表達式 用算術運算符將運算對象連
21、接起來的式子 用于表達數(shù)學公式的式子 如:2*x+y-1/a 表達式經(jīng)過運算最終得到一個值: 算術表達式的值第五十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月 運算符的優(yōu)先級與結合性 優(yōu)先級: 在對表達式求值時,如果存在多個運算符,則運算的先后次序按運算符的優(yōu)先級別從高到底進行。 運算符的優(yōu)先級關系為: 高:* / % 低:+ - 如:a-2*x 先算 * 2*(a+2) 有括號的情況? 第五十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 結合性: 如果在一個運算對象兩邊的運算符的優(yōu)先級相同,則按規(guī)定的“結合方向”處理。 如:a-b+c b與-結合是從左到右,稱“左結合性”。 b與+結
22、合是從右到左,稱“右結合性”。 每個運算符都有相應的優(yōu)先級和結合性。 基本算術運算符都是左結合性。 第五十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月計算表達式例: 2+A-1/2.0 1+3/2-1構造表達式例 2x2+3x-1 a+b a-b a+b a-b x+y x-ya+b/a-b ?(a+b)/(a-b)2*x*x+3*x-1 (*不能省)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)*(x-y)第五十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 強制類型轉換可以用強制類型轉換運算符將一個表達式
23、的值轉換成所需類型:如: (int)(x+y) (float)(7%3)第五十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 應用舉例: int a=200,b=300,c; c=a*b/100; ? 可知,有自動轉換和強制轉換, 當自動轉換達不到目的時,可用強制轉換。c=(long)a*b/100;c=(long)(a*b)/100;第五十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 自增、自減運算符 自增運算符:+ 使變量值加1 自減運算符:- 使變量值減1 兩種用法: +i, -i 先加(減)后用 i+, i- 先用后加(減) 兩種用法對i效果一樣,但表達式的值不同。例:假設i的原
24、值為5: j=+i; j=? j=i+; j=?第五十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月 注意:+和-只能用于變量。 如:3+和(a+1)+ 不合法+和-為右結合性。 (-i)+ -i+ -(i+)若i的原值是5,則該表達式的值是多少?第六十張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例:分析執(zhí)行下列語句后的結果: a=5; a b c d b=a+; c=-a-b+; d=(a+)-(+b)+c-;5565067-26-1第六十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 兩種特殊情況: k=(i+)+(i+)+(i+) i+j 是 i+(+j) 還是 (i+)+j ?
25、 i+雖然與i=i+1等效,但使用自增自減運算符的代碼優(yōu)化程度好,因而經(jīng)常使用;但用時需特別小心。第六十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.9 賦值運算符和賦值表達式 賦值運算符 “=”稱賦值運算符,其作用是將一個數(shù)據(jù)賦給一個變量。 如: a=5 不要理解為“等號”。 執(zhí)行賦值運算的結果,是將右邊的數(shù)據(jù)存入左邊變量所對應的內存單元中。第六十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月 賦值規(guī)則 如果賦值運算符兩側的類型不一致,則在賦值時要進行類型轉換,轉換規(guī)則為: 實型整變量 舍去小數(shù)部分。 int a=5.5; a中為5。 整型實變量 數(shù)值不變,以浮點形式存儲。 字符型
26、整變量 放在整形變量低8位。保持原值不變原則。 int a=A;第六十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 復合賦值運算符 在賦值運算符前加上其它運算符,可以構成復合賦值運算符。 a+=3 a=a+3 b-=x+5 b=b-(x+5) x*=c-6 x=x*(c-6) y/=a*4 y=y/(a*4) k%=b-2 k=k%(b-2) 屬于高效率運算符。第六十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月 賦值表達式 主要實現(xiàn)賦值運算的表達式。 一般形式: = 如: a=5 y=2*x+3 a=a+1 不是衡等作用:將右邊表達式的值賦給左邊的變量。 賦值表達式的值取左邊變量的值。
27、第六十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 賦值表達式右邊的可以是任何表達式,如: a=(b=5) 賦值表達式中包含賦值表達式 賦值運算符的優(yōu)先級低于所有算術運算符,且是右結合性。 a=(b=5) 與 a=b=5 等效。 第六十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例:計算以下表達式的值: a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=4.5)+(c=6.5) (a、b、c為整型變量) a+=a-=a*a (設a的原值為3)第六十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 賦值表達式是C語言中的一個重要成分,在賦值表達式后加一分號就成為
28、常用的賦值語句。如 y=2*x+1; 賦值表達式作為表達式的一種,可以出現(xiàn)在任何表達式中,如: x+2-(b/3-(a=k-5)+b第六十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月 3.10 逗號表達式 逗號也是一種運算符,用它對兩個表達式實現(xiàn)連接運算。 3+5,6+8 稱逗號表達式。 逗號表達式的一般形式: 表達式1,表達式2 取表達式2的值作為整個逗號表達式的值。 如: a=3*5,a*4 逗號表達式的值為:60第七十張,PPT共四百三十四頁,創(chuàng)作于2022年6月 一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式,如: (a=3*5,a*4),a+5 因此,逗號表達式的一般形
29、式可以擴展為: 表達式1,表達式2,表達式3,, 表達式n 取表達式n的值作為整個逗號表達式的值。 逗號運算符的優(yōu)先級最低,且是左結合性。 逗號運算符只起到連接作用,沒有實際操作。 第七十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月第四章 最簡單的C程序設計 C 程序最基本的成分是語句 目前我們已掌握的語句: 變量說明語句: int a,b,c; 表達式語句: x+y; 特別地: a=5; 賦值語句第七十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月 可以編寫簡單程序如: main() int x,y; x=5; y=2*x*x+3*x-1; 該程序語法上完整,但還缺少輸出。 第七十三張
30、,PPT共四百三十四頁,創(chuàng)作于2022年6月 數(shù)據(jù)的輸出 用輸出函數(shù)實現(xiàn),其中的兩種輸出函數(shù): 1.putchar 函數(shù) (字符輸出函數(shù)) 用于輸出一個字符。 如: putchar (a); putchar (100); char c=b; putchar (c);第七十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例:輸出單詞Boy的完整程序: #include “stdio.h” 注意該語句的作用 main() char a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c); 第七十五張,PPT共四百三十四頁,創(chuàng)作于
31、2022年6月 2. printf函數(shù)(格式輸出函數(shù)) 任意類型、任意格式、任意個數(shù)。 例如: int a=100,b=56; printf(“a=%d,b=%d”,a,b); 普通字符 格式說明 格式控制 輸出表列 輸出結果:a=100,b=56“%” 后的字符稱格式字符,不同格式字符對應不同的數(shù)據(jù)類型。第七十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 d格式符:按整數(shù)格式輸出 幾種用法: %d 不指定寬度,按實際寬度輸出 %md 按指定寬度輸出,m為寬度 %ld 用于輸出長整型數(shù)第七十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例: int a=125,b=453; long
32、c=65535; printf(“a=%d,b=%5d,c=%ld”,a,b,c); 輸出結果: a=125,b= 453,c=65535第七十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 %ld也可以按指定寬度輸出: printf(“c=%8ld”,c); 輸出結果:c = 65535注意:格式字符的類型要與對應的輸出對象的類型一致。 第七十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月 c格式符:用于輸出字符 char c=A; printf(“c=%c,%c”,c,B); 輸出結果:c=A,B 輸出對象既可以是字符變量、字符常量,還可以是整型表達式。第八十張,PPT共四百三十四頁,
33、創(chuàng)作于2022年6月 如: int a=100; char b=A; printf(“n%d,%c”,a,a); printf(“n%c,%d”,b,b); 輸出結果: 100,d A,65第八十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 s格式符:用于輸出字符串 %s 不指定寬度 %-ms 指定寬度,左靠齊 %ms 指定寬度,右靠齊 %m.ns 指定寬度m,只取左端n個字符, 右靠齊 %-m.ns 指定寬度m,只取左端n個字符, 左靠齊第八十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月例: printf(“1:%s”,”abcd”); printf(“2:%8s”,”abcd”);
34、 printf(“3:%-8s”,”abcd”); printf(“4:%8.3s”,”abcd”); printf(“5:%-8.3s”,”abcd”);1:abcd2: abcd3:abcd 4: abc5:abc 第八十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月 f格式符:按小數(shù)形式輸出實數(shù) %f 由系統(tǒng)指定寬度(6位小數(shù)) %m.nf 指定寬度m,小數(shù)位數(shù)n,右靠齊 %-m.nf 指定寬度m,小數(shù)位數(shù)n,左靠齊 注意:寬度包括符號和小數(shù)點。 第八十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月例: float a=3.141592654,b=14.326795, c=-125.
35、2468; printf(“na=%f,b=%8.3f,c=%-10.2f”,a,b,c); 輸出結果: a=3.141592,b= 14.326,c=-125.24 第八十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月完整前面的程序:main() int x,y; x=5; y=2*x*x+3*x-1; printf(“n y=%d”,y);第八十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月程序設計例: 編寫程序計算如圖中的電流I. 假設 U=220,R1=30,R2=60,R3=45UIR1R2R3第八十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月算法設計: I=U/R1+U/R
36、2+U/R3程序設計: main() I=U/R1+U/R2+U/R3;int U=220,R1=30,R2=60,R3=45;float I;printf(“n I=%f”,I);第八十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 正確的程序: main() int U=220,R1=30,R2=60,R3=45; float I; I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“n I=%f”,I); 第八十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月 考慮通用: main() int U,R1,R2,R3; float I; 輸入 U
37、,R1,R2,R3 I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“n I=%f”,I); 第九十張,PPT共四百三十四頁,創(chuàng)作于2022年6月 數(shù)據(jù)的輸入 getchar函數(shù)(字符輸入) #include “stdio.h” main() char c; c=getchar(); 等待鍵盤輸入 putchar(c); 第九十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月scanf 函數(shù)(格式輸入) 與printf函數(shù)相反。 用于輸入若干任意類型的數(shù)據(jù)。 scanf(“%d%d%d”,&a,&b,&c); 格式控制 地址列表第九十二張,PPT共四
38、百三十四頁,創(chuàng)作于2022年6月 scanf(“%d%d%d”,&a,&b,&c); 執(zhí)行此函數(shù)時,等待從鍵盤輸入三個整數(shù)給a,b,c 若從鍵盤輸入 3 5 8 則系統(tǒng)即從鍵盤緩沖區(qū)取出這三個數(shù)分別賦給a,b,c 注意與printf的區(qū)別,注意格式的匹配第九十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月如: scanf(“%3d%2d%4d”,&a,&b,&c); 若從鍵盤輸入123456789 a=123,b=45,c=6789 若想使a=12,b=5,c=100 則鍵盤輸入應為: 12 5 100 方便的輸入格式一般不 指定寬度, 如: scanf(“%d%d%d”,&a,&b,&c)
39、;第九十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 在鍵盤輸入時,用分隔符把每個數(shù)據(jù)隔開,標準的分隔符是空格。 如:123 150 23 若想用逗號作分隔符,則: scanf(“%d,%d,%d”,&a,&b,&c); 不要隨便使用普通字符,如使用: scanf(“a=%d,b=%d c=%d”,&a,&b,&c) 對應數(shù)據(jù)輸入: a=123,b=150,c=23第九十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月 前面的歐姆定律: main() int U,R1,R2,R3; float I; scanf(“%d%d%d%d”,&U,&R1,&R2,&R3); I=(float)U/
40、R1+(float)U/R2+(float)U/R3; printf(“n I=%f”,I); 第九十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月求三角形面積#include “math.h”main() float a,b,c,area,s; scanf ( “%f,%f,%f”, &a,&b,&c); s=1.0/2*(a+b+c); area=sqrt (s*(s-a)*(s-b)*(s-c); printf(“n area=%f”,area);使用數(shù)學函數(shù)第九十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月使用三角函數(shù)#include “math.h”main() float x
41、, y; scanf ( “%f”, &x); y=sin(x*3.1415926/180); 以弧度為單位 printf(“n y=%f”,y);第九十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月第五章 選擇結構程序設計 對于如下的函數(shù)計算,算法上屬于一個選擇結構。 y= 用于實現(xiàn)選擇結構的主要是if語句。1/x 當x0時 10000 當x=0時第九十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月if語句的最常見形式為: if(關系表達式)語句1; else 語句2;如: if(x!=0) y=1/x; else y=10000;其中 x!=0 就是一個關系表達式 != 就是一個關系運
42、算符第一百張,PPT共四百三十四頁,創(chuàng)作于2022年6月51 關系運算符和關系表達式1、關系運算符用于進行比較運算的運算符。共有六種: = = = !=優(yōu)先級與結合性: 前4種大于后兩種。 低于算術運算符而高于賦值運算符。 左結合性。第一百零一張,PPT共四百三十四頁,創(chuàng)作于2022年6月2、關系表達式一般形式:表達式關系運算符表達式 如:ab a+bb+c 經(jīng)過關系運算后最終有一個值-關系表達式的值。 關系表達式的值只有 0(假)或1(真)第一百零二張,PPT共四百三十四頁,創(chuàng)作于2022年6月例:設 a=2, b=4, c=1 計算以下關系表達式的值: ab a+bb+cab 可以是字符表
43、達式(x=2)(y=5) 可以是賦值表達式(a(bc) 甚至可以是關系表達式ab= =byxy=yz=xzyxz (x=y-2)z+1=x+ya=x+y=x+zx+1第一百零四張,PPT共四百三十四頁,創(chuàng)作于2022年6月52 邏輯運算符和邏輯表達式有時,只用一個簡單的關系表達式無法完整地表達一個條件,如: y= 其中的條件需要用邏輯表達式來表達: x!=0 &a!=0 &就是一種邏輯運算符。1/x+1/a 當x0,a0時 10000 其它第一百零五張,PPT共四百三十四頁,創(chuàng)作于2022年6月1、邏輯運算符& 邏輯與 兩個操作數(shù)都為真時&運算結果為真。| 邏輯或 兩個操作數(shù)之一為真時即為真。
44、! 邏輯非 (單目運算) 操作數(shù)為真(假)時為假(真)。 如:若 a=2, b=3, c=0 則: ab&bc 0 ab|bc 1 !(ab) 0第一百零六張,PPT共四百三十四頁,創(chuàng)作于2022年6月優(yōu)先級(由高到低):! 邏輯非算術運算符關系運算符&邏輯與|邏輯或賦值運算符結合性:左結合性第一百零七張,PPT共四百三十四頁,創(chuàng)作于2022年6月2、邏輯表達式 實際上,前面所舉例子即為邏輯表達式: ab&bc ab|bc !(ab) 邏輯表達式的值同樣只有1和0,但參加邏輯 運算的操作數(shù)可以是任意類型的數(shù)據(jù),可以是 任意大小。例: a+b&b+c 是合法的邏輯表達式。此時以0代表假,非0代表
45、真。第一百零八張,PPT共四百三十四頁,創(chuàng)作于2022年6月例:設 a=2, b=3, c=0 , 計算以下表達式的值: a&b b&c a|c !a+c&b+c !c+a=b|bc+10第一百零九張,PPT共四百三十四頁,創(chuàng)作于2022年6月對于邏輯表達式的兩種基本技能: 邏輯表達式的計算。 邏輯表達式的構造。第一百一十張,PPT共四百三十四頁,創(chuàng)作于2022年6月邏輯表達式的構造舉例: abc a和b之一為0,但不同時為0a=b=c 5=4=3a=b&b=ca=0&b!=0 | a!=0&b=0a*b=0a*b=0&a+b!=0第一百一十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月對于
46、 a=0 & b!=0 | a!=0 & b=0 a=0可以用!a代替 a!=0可以直接用a !a & b | a & !b但必須是運算結果作為邏輯量的情況下。 y=(a!=0) 與 y=a 不等效第一百一十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月53 if語句1、if語句的三種形式if(表達式)語句; 有一分支為空。 scanf(“%d”,&score); if(score=60) printf(“pass”); 第一百一十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月 if(表達式)語句1; else 語句2; if(x!=0) y=1/x; else y=10000;第一百一十
47、四張,PPT共四百三十四頁,創(chuàng)作于2022年6月 if(表達式1)語句1; else if(表達式2)語句2; else if(表達式3)語句3; else 語句n; if(score=100) printf(“A”); else if(score=90) printf(“B”); else if(score=80) printf(“C”); else if(score=70) printf(“D”); else if(score=60) printf(“E”); else printf(“F”);第一百一十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月 對于: 1/x 當x0時10000
48、當x=0時一般用:if(x!=0) y=1/x;else y=10000;也可用:y=10000;if(x!=0) y=1/x;y=?y=1/x;if(x=0)y=10000第一百一十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例:(習題5.5):x (x1)2x-1 (1x10) 3x-11 (x10)y=第一百一十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 main() float x,y; scanf(“%f”,&x); if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-11; printf(“n y=%f”,y); 第一百一十八張,P
49、PT共四百三十四頁,創(chuàng)作于2022年6月說明:語句中的表達式可以是任意表達式: if(x) y=1/x; else y=10000; 一個if結構不可分割: if(x) y=1/x; z=10; else y=10000;一個分支中包含多個語句時,要用 : if(amax) max=b; if(cmax) max=c; printf(“n max=%d”,max);第一百二十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例:從鍵盤輸入三個整數(shù)到變量a,b,c,要求按從大到小的順序輸出。 兩種典型算法: 枚舉法(將各種可能的排列枚舉出來)。 換位法(將a,b,c中的數(shù)據(jù)換位)。第一百二十二張
50、,PPT共四百三十四頁,創(chuàng)作于2022年6月?lián)Q位法main() int a,b,c,t; scanf(“%d,%d,%d”,&a,&b,&c); if(ab) t=a; a=b; b=t; if(ac) t=a; a=c; c=t; if(b=80) if(score=90) printf(“A”); else printf(“B”);else if(score=60) printf(“C”); else printf(“D”);注意else與if的匹配第一百二十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月3、條件運算符如果兩個分支的內容都是給同一個變量賦值,則可用簡單的條件運算符處理:
51、if(ab) max=a; else max=b;可用: max=ab ? a : b;賦值運算符右邊為一條件表達式。條件表達式的一般形式: 表達式1 ? 表達式2 : 表達式3第一百二十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月條件表達式的執(zhí)行過程: ab ? a : b優(yōu)先級:低于關系運算符,高于賦值運算符。結合性:右結合性。表達式1條件表達式取表達式3的值條件表達式 取表達式2的值 非00第一百二十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 例:求a,b,c中的最大值:max= ab ? (ac?a:c) : (bc?b:c) ;第一百二十七張,PPT共四百三十四頁,創(chuàng)作于2
52、022年6月54 switch語句(多分支) 適用于根據(jù)一個表達式的值就可確定走哪個分支的情況。 switch(表達式) 常量表達式1: 語句1 常量表達式2: 語句2 常量表達式n: 語句n default: 語句n+1 第一百二十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月例:成績分檔:switch(score/10) case 10: printf(“A”); case 9: printf(“B”); case 8: printf(“C”); case 7: printf(“E”); case 6: printf(“F”); default : printf(“G”); 注:應使用b
53、reak.第一百二十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月switch(score/10) case 10: printf(“A”); break; case 9: printf(“B”); break; case 8: printf(“C”); break; case 7: printf(“E”); break; case 6: printf(“F”); break; default : printf(“G”);第一百三十張,PPT共四百三十四頁,創(chuàng)作于2022年6月55 程序舉例 (習題5.10) 有4個圓塔,圓心分別為:(2,2),(-2,2),(-2,-2),(2,-2),圓
54、半徑為1。這4個塔的高度為10m,塔以外無建筑物。今輸入任一點的坐標,求該點的建筑高度(塔外的高度為0)。第一百三十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月算法設計: 條件“在某一圓內” : “在圓1內或在圓2內或在圓3內或在圓4內” 若設變量c1、c2、c3、c4分別代表是否在相應的圓內,則以上條件為: c1|c2|c3|c410 在某一圓內0 在圓外 (x,y) h=第一百三十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月c1=(x-2)2+(y-2)21c2=(x+2)2+(y-2)21c3=(x+2)2+(y+2)21c4=(x-2)2+(y+2)21第一百三十三張,PPT共
55、四百三十四頁,創(chuàng)作于2022年6月main() int h,c1,c2,c3,c4; float x,y; scanf(“%f%f”,&x,&y); c1=(x-2)*(x-2)+(y-2)*(y-2)=1; c2=(x+2)*(x+2)+(y-2)*(y-2)=1; c3=(x+2)*(x+2)+(y+2)*(y+2)=1; c4=(x-2)*(x-2)+(y+2)*(y+2)=1; if(c1|c2|c3|c4) h=10; else h=0; printf(“n h=%d”,h);第一百三十四張,PPT共四百三十四頁,創(chuàng)作于2022年6月第六章 循環(huán)控制 61 概述 所謂循環(huán)控制,就是如
56、何實現(xiàn)循環(huán)結構的控制問題。有4種方法: 用goto語句和if構成循環(huán)。 用while語句。 用do-while語句。 用for語句。第一百三十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月62 用goto語句和if語句構成循環(huán)例: 對于計算 s=1+2+3+4+5+6+7+8+9+100 s1 is+i s i+1 ii10 輸出syn第一百三十六張,PPT共四百三十四頁,創(chuàng)作于2022年6月 s=0; i=1; lable:s+=i; i+; if(i=10) goto lable; printf(“%d”,s) ;語句標號 無條件轉向語句 goto 語句可以構造循環(huán),但不主張用,因為它容
57、易破壞結構化程序設計。 goto 語句可以構造循環(huán),但不主張用,因為它容易破壞結構化程序設計。第一百三十七張,PPT共四百三十四頁,創(chuàng)作于2022年6月 63 while語句 while語句是專門用于實現(xiàn)循環(huán)控制的語 句之一。 其一般形式為: while (表達式) 語句 含義:當表達式的值為非0時,執(zhí)行循環(huán)體,否則執(zhí)行后續(xù)語句。語句關鍵 表達循環(huán)條件的表達式循環(huán)體 語句關鍵字第一百三十八張,PPT共四百三十四頁,創(chuàng)作于2022年6月 執(zhí)行過程: while (表達式) 語句 表達式循環(huán)體0非0第一百三十九張,PPT共四百三十四頁,創(chuàng)作于2022年6月i10? s=0 i=1s=s+ii=i+
58、1例:用while語句實現(xiàn)前面算法:main() int i=1,s=0; while(i=10) s=s+i; i+; printf(“n %d”,s); 注意與if語句的區(qū)別。循環(huán)體中要有使循環(huán)條件趨于成立的條件yn第一百四十張,PPT共四百三十四頁,創(chuàng)作于2022年6月 while(i=10) s=s+i; i+; 可簡寫為: while(i=10) s+=i+;第一百四十一張,PPT共四百三十四頁,創(chuàng)作于2022年6月非0(真)0(假)表達式循環(huán)體 64 do-while語句 do-while語句主要用于實現(xiàn)直到型循環(huán)。 其一般形式為: do 循環(huán)體 while(表達式);執(zhí)行過程:第
59、一百四十二張,PPT共四百三十四頁,創(chuàng)作于2022年6月真s=0i=1i10?s=s+ii=i+1假例:用do-while語句實現(xiàn)前面算法: main() int i=1,s=0; do s+=i+; while(i=10); printf(“n%d”,s); 注意與while語句的區(qū)別。 第一百四十三張,PPT共四百三十四頁,創(chuàng)作于2022年6月假表達式2求解表達式1循環(huán)體求解表達式3真 65 for 語句 for語句是一種使用最為靈活,并且是用得最多的循環(huán)控制語句,其一般形式為: for(表達式1;表達式2;表達式3) 循環(huán)體大體含義: 對于()的情況執(zhí)行循環(huán)體內容。第一百四十四張,PPT
60、共四百三十四頁,創(chuàng)作于2022年6月例:用for語句實現(xiàn)前面的算法:s=0;for(i=1;i=10;i+) s+=i; 標準形式表達式1 表達式2表達式3循環(huán)體可以理解: 循環(huán)變量i從初值1開始到終值10,步長為1,重復執(zhí)行循環(huán)體。第一百四十五張,PPT共四百三十四頁,創(chuàng)作于2022年6月for語句的常見變化: s=0; i=1; for(;i=10;i+)s+=i; s=0; for(i=1;i=10;)s+=i+; s=0;i=1; for(;i10) break; s=10;i=10; for(;-i;) s+=i;省略表達式2表達式2是任意表達式第一百四十七張,PPT共四百三十四頁,
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝尺碼工程師筆試試題及答案
- 健康江西行動指標數(shù)據(jù)質量控制規(guī)范
- 危險化學品企業(yè)“安全領導力”專業(yè)深度解讀與應用指導材料
- 2025年湖南師范大學美術學院勞動合同用工招聘考試筆試試題【答案】
- 2025年湖北黃岡黃州區(qū)專項招聘中學教師考試筆試試題【答案】
- 2025年婁底雙峰縣城區(qū)義務教育學校選調教師考試試題【答案】
- 消費品以舊換新的劣勢分析
- 2025年健腹椅項目建議書
- 2025年參數(shù)測試儀器項目發(fā)展計劃
- 湘藝版二年級上冊音樂《雪花飛舞》教案1
- 2025年校長職級考試題及答案
- 統(tǒng)借統(tǒng)還資金管理辦法
- 國家能源集團采購管理規(guī)定及實施辦法知識試卷
- 2023-2024學年四川省成都市高新區(qū)八年級(下)期末數(shù)學試卷
- 2025年廣西繼續(xù)教育公需科目考試試題和答案
- 2024年廣州市南沙區(qū)社區(qū)專職招聘考試真題
- 心理健康科普常識課件
- 山東醫(yī)藥技師學院招聘筆試真題2024
- 倉庫超期物料管理制度
- 奶茶公司供應鏈管理制度
- 加氣站風控分級管理制度
評論
0/150
提交評論