C語言二級輔導學校網(wǎng)站PPT_第1頁
C語言二級輔導學校網(wǎng)站PPT_第2頁
C語言二級輔導學校網(wǎng)站PPT_第3頁
C語言二級輔導學校網(wǎng)站PPT_第4頁
C語言二級輔導學校網(wǎng)站PPT_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1章C語言的基本詞法一、字符集1. 什么是字符集在C語言程序中允許出現(xiàn)的所有基本字符的組合稱為C語言的字符集。2. 字符集分類(1) 大小寫英文字母(52個)(2) 數(shù)字符號(10個)(3) 鍵盤符號(33個)(4) 轉(zhuǎn)義字符3. 轉(zhuǎn)義字符的作用、表示方法(1) 作用:通常用來表示鍵盤上的控制代碼或特殊符號。(2) 表示方法:由“反斜杠字符()”后跟單個字符或若干個字符組成。(3) 常用轉(zhuǎn)義字符:n,t, a, ”, , , ddd, xhh二、保留字1. 什么是保留字在C語言的程序中有特殊含義的英語單詞稱為保留字。2. 保留字的作用主要用于構(gòu)成語句、進行存儲類型和數(shù)據(jù)類型的轉(zhuǎn)換。3. 常用

2、保留字可參考教材。三、標識符1. 什么是標識符標識符是用戶自定義的一種字符序列,通常用來表示程序中需要辨認的對象名稱。2. 標識符的命名規(guī)則(1) 標識符是由字符或下劃線開頭的字母、數(shù)字、下劃線組成的一串符號;(2) 保留字不能作為標識符。正確標識符:sum i a2 a_2 _a2 _a_2錯誤的標識符:2a a? c.g a-2 if while第2章基本數(shù)據(jù)類型和運算2.1 C語言的數(shù)據(jù)類型整型實型字符型無值型指針型數(shù)組結(jié)構(gòu)型枚舉型共用型基本類型構(gòu)造類型2.2 常量一、 什么是常量二、 常量類型整型常量、實型常量、字符常量、字符串常量三、常量特點四、各種類型常量說明1. 整型常量(1)

3、整型常量就是整數(shù),包括正整數(shù)、負整數(shù)及0;(2) 整型常量有三種書寫方式十進制整數(shù):0、111、15、21八進制整數(shù):00、0111、015、021十六進制整數(shù):0x0、-0x111、0x21(3) 整型常量在機內(nèi)存放一般占2個字節(jié),所表示的范圍-32768+32767(4) 為了擴大數(shù)值范圍,C語言提供“長整型常量”,長整型常量在機內(nèi)存放占4個字節(jié)。表示方法是在數(shù)的后面加一個L或l字母。(0L、40000L)2. 實型常量(1) 實型常量就是帶小數(shù)點的實數(shù),也稱為浮點數(shù);(2) 實型常量書寫方式有兩種:一般形式的實數(shù):12.345、1.23456、7.0指數(shù)形式的實數(shù):-1.2345E3.0

4、、0.12345e4(3) 實型常量在機內(nèi)存放一般占4個字節(jié); 3. 字符常量(1) 字符常量就是用兩個單引號()前后括住的單個字符;例如:a、A、1、%(2) 轉(zhuǎn)義字符也可以組成字符常量;例如:n、101、x41(3) 字符常量在機內(nèi)存放一般占1個字節(jié); 4. 字符串常量(1) 字符串常量就是用兩個雙引號(“)前后括住的若干個字符;例如:”abc”、”ABC”、”112”(2) 轉(zhuǎn)義字符也可以出現(xiàn)在字符串常量中;例如:“123n4”、”143n2x11” (3) 字符串常量在機內(nèi)存放所占用的字節(jié)數(shù)等于字符串長度1; 2.3 變量一、基本問題1. 什么是變量2. 變量的命名規(guī)則3. 變量的特點

5、(1) 變量在內(nèi)存中要占用連續(xù)的若干個字節(jié);(2) 所占用的字節(jié)數(shù)由變量的數(shù)據(jù)類型確定;(3) 變量使用必須要先定義。二、變量的數(shù)據(jù)類型及其定義1. 變量定義格式存儲類型符數(shù)據(jù)類型符變量名1, 變量名2,; 2. 變量數(shù)據(jù)類型3. 變量存儲類型三、變量的初始化1. 變量賦初值的語句格式:存儲類型符 數(shù)據(jù)類型符 變量名1=初值, 變量名2=初值; 2. 幾點說明3. 舉例分析例1:main( ) int a; static int b; printf(“%d”,a); 將輸出不確定的值 printf(“%d”,b); 將輸出0例2:void f1( );main( ) f1( ); f1( );

6、void f1( ) int a=3; static int b=4; printf(“%d,%d”,a,b); a=a+1;b=b+1;說明:(1) 第1次調(diào)用f1( ),將輸出3,4(2) 第2次調(diào)用f1( ),將輸出3,5四、變量的生存期和作用域1. 什么是內(nèi)部變量和外部變量把在函數(shù)(或某個復合語句)內(nèi)定義的變量稱為“內(nèi)部變量”,把在函數(shù)外定義的變量稱為“外部變量”。2. 什么是變量的生存期我們把變量從開始分配內(nèi)存單元到分配的內(nèi)存單元被收回的期間稱為變量的生存期。3. 什么是變量的作用域在變量的生存期中,我們把變量可以使用的程序區(qū)域稱為變量的作用域。4. 作用域的分類全局變量:生存期覆蓋

7、了定義點到整個程序結(jié)束的變量稱為全局變量。局部變量:生存期只覆蓋某個函數(shù)(或某個復合語句)的變量稱為局部變量。5. 幾點說明6. 舉例分析 int a1; main( ) int a2; int a3; int a4; void f1( ) int a5; static int a6;2.4 運算符基本問題1. 什么是運算符用來表示各種運算的符號稱為運算符。2. 運算符特點(1) 運算符必須有運算對象,運算對象都有規(guī)定的數(shù)據(jù)類型,同時運算結(jié)果也有確定的數(shù)據(jù)類型。(2) 每個運算符都有自己特定的運算規(guī)則。(3) 當表達式中出現(xiàn)多個運算符時則必須考慮運算符的優(yōu)先級。(4) 同級別的運算符還規(guī)定了結(jié)

8、合性。一、算術運算符包括基本算術運算符和增1、減1運算符兩種1. 基本算術運算符(1) 有哪些運算符號(2) 特點(3) 舉例說明2. 增1、減1運算符(1) 有哪些運算符號(2) 特點 增1、減1的運算對象必須是變量或數(shù)組元素; 增1(或減1)運算符作為前綴使用時,是先對運算對象加1(或減1),然后再使用加1(或減1)后的運算對象。 增1(或減1)運算符作為后綴使用時,是先使用不加1(或減1) 的運算對象,然后再對運算對象加1(或減1) 。二、關系運算符1. 關系運算有哪些運算符號2. 關系運算符的特點 關系運算符可以用來比較兩個數(shù)值型數(shù)據(jù)的大小,也可以比較兩個字符型數(shù)據(jù)的大小。 關系運算符

9、的運算結(jié)果是邏輯值,若為“真”用整數(shù)1表示,若為“假”用整數(shù)0表示。三、邏輯運算符1. 邏輯運算有哪些運算符號2. 邏輯運算符的特點 邏輯運算符運算對象是數(shù)值型或字符型等;如果是非0表示邏輯真,0表示邏輯假。 運算結(jié)果是邏輯值,如運算結(jié)果為真用1表示,若為假則用0表示。3. 注意幾點 用“&&”對兩個表達式進行計算時,若第1個表達式的值為“假”,則與第2個表達式的值無關,結(jié)果肯定為“假”,所以C語言規(guī)定此時第2個表達式不再計算。 用“| ”對兩個表達式進行計算時,若第1個表達式的值為“真”,則與第2個表達式的值無關,結(jié)果肯定為“真”,所以C語言規(guī)定此時第2個表達式不再計算。四、

10、賦值運算符賦值運算符分為三種:基本賦值運算符、算術自反賦值運算符、位自反賦值運算符1. 基本賦值運算符(1) 運算符號(2) 特點賦值運算符的前面必須是變量,后面是表達式;賦值運算符是先計算表達式的值,再把值賦給變量。2. 算術自反賦值運算符(1) 運算符號(2) 特點該運算符是將某個變量和表達式進行指定算術運算后的結(jié)果賦予該變量。五、逗號運算符1. 運算符號2. 特點(1) 該運算符是雙目運算,其運算對象是表達式;(2) 運算規(guī)則是依次計算前、后表達式的值;(3) 運算結(jié)果是后表達式的值。六、條件運算符1. 運算符號2. 特點(1) 該運算符是三目運算符,其三個運算對象是表達式(e1?e2:

11、e3);(2) 運算規(guī)則是如果e1表達式為“真”,取e2表達式的值,否則取e3表達式的值。七、長度運算符1. 運算符號2. 特點(1) 其運算對象可以是任何數(shù)據(jù)類型或變量;(2) 運算對象必須用圓括號括住。八、位運算符(一) 基本問題1. 什么是位運算是一種對運算對象按二進制位進行操作的運算。2. 位運算的特點(1) 位運算不允許只操作其中的某一位,而是對整個數(shù)據(jù)按二進制位進行運算;(2) 位運算的對象只能是整型數(shù)據(jù)(包括字符型),運算結(jié)果仍是整型數(shù)據(jù)。(3) 位運算符分為位邏輯運算符、位移位運算符、位自反賦值運算符三種。(二) 位邏輯運算符1. 運算符號2. 特點位邏輯運算符是將數(shù)據(jù)中每個二

12、進制位上的“0”或“1”看成邏輯值,逐位進行邏輯運算。(三) 位移位運算符1. 運算符號2. 特點(1) 該運算符是將數(shù)據(jù)看成是二進制數(shù),對其進行向左或向右移動若干位的運算;(2) 該運算符是雙目運算,第一運算對象是移位對象,第二個運算對象是所移的二進制位數(shù)。(四) 位自反賦值運算符1. 運算符號2. 特點該運算符是將某個變量和表達式進行指定位運算后的結(jié)果賦予該變量。2.5 表達式1. 什么是表達式用運算符將運算對象連接形成的式子就是表達式。2. 表達式的特點(1) 每個表達式都可以按照其中運算符的優(yōu)先級和運算規(guī)則依次對運算對象進行運算,最終獲得一個數(shù)據(jù),該數(shù)據(jù)稱為表達式的值。(2) 表達式值

13、的數(shù)據(jù)類型就稱為表達式的數(shù)據(jù)類型。3. 表達式的分類主要有六種:算術表達式、關系表達式、邏輯表達式、條件表達式、賦值表達式和逗號表達式。4. 表達式計算時的數(shù)據(jù)類型轉(zhuǎn)換(1) 為什么計算時數(shù)據(jù)類型要轉(zhuǎn)換(2) 轉(zhuǎn)換方法 表達式計算中數(shù)據(jù)類型的自動轉(zhuǎn)換原則特點:參加運算的各個數(shù)據(jù)都轉(zhuǎn)換成數(shù)據(jù)長度最長的數(shù)據(jù)類型,然后計算。計算結(jié)果值當然就是數(shù)據(jù)長度最長的數(shù)據(jù)類型。例如:設i為int,f為float,d為double,e為long則10+a+i*f-d/e的結(jié)果是double。 運算結(jié)果存入變量時數(shù)據(jù)類型的自動轉(zhuǎn)換原則特點:先將運算結(jié)果的數(shù)據(jù)類型自動轉(zhuǎn)換成變量的數(shù)據(jù)類型,然后再賦予該變量。 運算結(jié)果

14、的強制性數(shù)據(jù)類型轉(zhuǎn)換原則特點:該原則是對需要進行類型轉(zhuǎn)換的表達式前面加上圓括號括住的數(shù)據(jù)類型符:(數(shù)據(jù)類型符)(表達式)例如:(float) n (float)(n+m)第3章 順序結(jié)構(gòu)程序設計3.1 語句概述1. 一個C程序由若干條語句構(gòu)成的,其中的每一條語句用來完成一個特定的操作。2. C程序中的每個語句都要用分號(;)結(jié)尾。3. C語言所提供的語句,按功能特性可分為四類:基本語句、選擇控制語句、重復控制語句、轉(zhuǎn)移語句3.2 賦值語句1. 賦值語句是最常用的表達式語句,由賦值表達式加分號構(gòu)成。2. 賦值語句有三種形式:(1) 簡單賦值:x=2*y+1;(2) 多重賦值:x=y=z=3;(3

15、) 復合賦值:x+=y;3. 使用賦值語句需注意以下兩點:(1) 定義變量時若賦初值則不能采用多重賦值形式。例如:int x=y=z=0; 是錯誤形式。而應改寫成:int x=0,y=0,z=0;而賦值語句x=y=z=0; 是正確形式。(2) 賦值表達式可以出現(xiàn)在任何表達式中,而賦值語句則不能。例如:x=(y=2)+(z=3+y); 是正確的。 而: x=(y=2;)+(z=3+y;); 是錯誤的。3.3 數(shù)據(jù)的輸出一、基本說明1. C語言本身沒有直接提供用于輸出的語句,它是通過輸出函數(shù)來實現(xiàn)的(例如:putchar函數(shù)、printf函數(shù))。2. 由于C語言將上述標準輸出函數(shù)的原型放在頭文件s

16、tdio.h中,因此在編寫程序時,要在源程序的開頭用include “stdio.h”命令將頭文件stdio.h包括到用戶源程序中。(但是printf函數(shù)除外)二、putchar函數(shù)1. 函數(shù)調(diào)用格式:putchar(參數(shù));其中:參數(shù)可以是一個字符型變量、整型變量或一個字符型常量(包括控制字符和轉(zhuǎn)義字符)。2. 功能:是在顯示器上輸出一個參數(shù)對應的字符。例如: char ch1=C; int a=105; putchar(ch1); /*輸出字符C*/ putchar(a); /*輸出字符i*/ putchar(n); /*輸出字符n*/ putchar(n);/*輸出回車換行*/三、pri

17、ntf函數(shù)1. 函數(shù)調(diào)用格式: printf(“格式控制字符串”,表達式1,表達式2,);2. 功能:按照自右向左的順序,依次計算各表達式的值,然后按照“格式控制字符串”中規(guī)定的格式輸出到顯示器上顯示。例如: int a=3,b=2; printf(“%d,%d”,b=a<b,a=a<b);輸出結(jié)果:1,0 3. 說明:(1) 輸出項可以是變量、常量和表達式。(2) 格式控制字符串中允許包含格式編輯符和原樣輸出的字符串。 例如:“c=%d” (是一個格式控制字符串) (c=是原樣輸出的字符串,%d是格式編輯符)(3) 格式編輯符用于指定輸出格式,其形式為:%格式修飾格式字符(4)

18、格式字符的符號及功能如下表所示:4. 舉例分析:例31 3.4 數(shù)據(jù)的輸入一、基本說明1. C語言本身沒有直接提供用于輸入的語句,它是通過輸入函數(shù)來實現(xiàn)的(例如:getchar函數(shù)、scanf函數(shù))。2. 由于C語言將上述標準輸出函數(shù)的原型放在頭文件stdio.h中,因此在編寫程序時,要在源程序的開頭用include “stdio.h”命令將頭文件stdio.h包括到用戶源程序中。(但是scanf函數(shù)除外)二、getchar函數(shù)1. 函數(shù)調(diào)用格式:getchar()2. 功能:從鍵盤輸入一個字符。3. 說明:該函數(shù)只能接收一個字符,而且得到的是字符的ASCII碼。該值可以賦給一個字符型變量或一

19、個整型變量。4. 舉例說明例32三、scanf函數(shù)1. 函數(shù)調(diào)用格式: scanf(“格式控制字符串”,輸入項1,輸入項2,);2. 功能:按指定的格式接收由鍵盤輸入的數(shù)據(jù),并存入輸入項變量所在的內(nèi)存單元中。3. 說明:(1) 格式控制字符串中允許包含格式編輯符和原樣輸入的字符串。 例如:“c=%d” (是一個格式控制字符串) (c=是原樣輸入的字符串,%d是格式編輯符)(2) 格式編輯符用于指定輸入格式,其形式為:%格式修飾格式字符格式字符用于規(guī)定相應輸入項的輸入格式,其字符如下表所示:(3) 輸入項必須為變量的地址,通常用“變量名”組成。例如:定義int x; 用scanf(“%d”,x)

20、;是錯誤的。用scanf(“%d”,&x);是正確的。(4) 輸入數(shù)據(jù)時,數(shù)據(jù)與數(shù)據(jù)之間應使用分隔符。 分隔符有兩種形式: 一種是在輸入格式控制串中給定的,例如scanf(“%d,%d”,&x,&y); 其分隔符為逗號(,)。 另一種是空格、制表符(Tab)或換行符,它們不是在輸入格式控制串中給定的,而是用戶在鍵入數(shù)據(jù)時隨機使用的。例如:scanf(“%d%d”,&x,&y); 執(zhí)行時就可以用以上方法作為輸入數(shù)據(jù)之間的分隔符。(5) 鍵入數(shù)據(jù)的類型、寬度應該與格式控制中給定的相一致。例33第四章選擇結(jié)構(gòu)程序設計一、概述:1. 什么是選擇結(jié)構(gòu)在程序執(zhí)行中依

21、據(jù)條件判斷,確定某些操作是做還是不做,或者確定若干操作中選擇哪個操作來執(zhí)行。2. 選擇結(jié)構(gòu)有兩種形式If語句(單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)、多分支結(jié)構(gòu))switch語句4.1 if語句一、單分支結(jié)構(gòu)1. 形式: if (表達式) 語句;2. 語義:若表達式的值為非0,就執(zhí)行“語句”,否則直接執(zhí)行if語句的后繼語句。3. 說明(1) “表達式”允許是任何表達式,而且兩側(cè)的圓括號不可少。(2) 如果“語句塊”包含多個語句,必須用 將其括成復合語句。二、雙分支結(jié)構(gòu)1. 形式: if (表達式) 語句塊1; else 語句塊2;2. 其語義是:如果表達式的值為非0,則執(zhí)行“語句塊1”,然后跳出 if 結(jié)構(gòu),

22、執(zhí)行后續(xù)語句;若表達式的值為0,則執(zhí)行“語句塊2”,之后跳出 if 結(jié)構(gòu),往下執(zhí)行后續(xù)語句。3. 說明“表達式”允許是任何表達式,而且兩側(cè)的圓括號不可少。如果“語句塊”包含多個語句,必須用 將其括成復合語句。else必須與if語句配對使用,而且總是和最近的if配對。例如: if (c>=0 && c<=9) if (c=5) y=0; else y=1 if (c>=0 && c<=9) if (c=5) y=0; else y=1三、多分支結(jié)構(gòu)1. 形式:if (表達式1) 語句塊1; else if (表達式2) 語句塊2; else

23、 if (表達式3) 語句塊3; else 語句塊4;2. 說明多分支 if 語句的執(zhí)行步驟是:首先判斷表達式1的條件是否成立,若成立就執(zhí)行語句1,否則判斷表達式2的條件是否成立,若成立就執(zhí)行語句2依次類推,若所有的條件都不成立,就執(zhí)行else后面的語句,然后出口。4.2 switch語句1. 作用:用于實現(xiàn)多分支選擇結(jié)構(gòu)問題。2. 形式: switch (表達式) case 常量表達式1:語句1;break; case 常量表達式2:語句2;break;case 常量表達式n:語句n;break; default : 語句n+1; 3. 該語句的含義是:(1) 先計算switch右邊表達式的

24、值,并將其逐個與case行中“常量表達式”的值相比較,若相等,則執(zhí)行case行給出的語句,若有break語句則跳出switch語句執(zhí)行后續(xù)語句;(2) 若沒有break語句則繼續(xù)執(zhí)行后續(xù)case行所給出的語句;(3)如果所有的常量表達式都不匹配,則執(zhí)行default行指引的語句。4. 說明(1) 該結(jié)構(gòu)中必不可少,其中的語句是switch語句體;(2) case后跟的常量表達式與冒號一起構(gòu)成語句標號。case和常量表達式之間必須要有空格,常量表達式的值必須唯一。(3) switch后面的表達式可以是整型、字符型,但不能是實型。表達式的值與常量表達式的值應保持類型一致。(4) case后面跟的語

25、句允許是多條語句,可以不加 。一個語句也可以被多個case共用。例如: case 1: case 2: printf(“ok”);第五章循環(huán)結(jié)構(gòu)程序設計一、概述:1. 什么是循環(huán)結(jié)構(gòu)在程序執(zhí)行中當滿足某個特定的條件時,重復執(zhí)行某段程序,直至條件不滿足為止,這種結(jié)構(gòu)就稱為循環(huán)結(jié)構(gòu)。2. 循環(huán)結(jié)構(gòu)有三種類型當型結(jié)構(gòu)(while 結(jié)構(gòu))直到型結(jié)構(gòu)(dowhile結(jié)構(gòu))已知循環(huán)次數(shù)的結(jié)構(gòu)(for結(jié)構(gòu))5.1 當型循環(huán)結(jié)構(gòu)(while結(jié)構(gòu))1. 形式: while (表達式) 語句;2. 語義:先計算表達式的值,判斷其是否為0,若為非0,表示循環(huán)條件滿足,就執(zhí)行循環(huán)體,如此重復,直至表達式的值為0,退出

26、循環(huán)執(zhí)行后繼語句。3. 說明(1) 表達式可以是任意合法的表達式,并以它作為判別循環(huán)體執(zhí)行與否的條件。若表達式的值為非0表示條件成立;若為0表示條件不成立。(2) “語句”是重復執(zhí)行部分,稱之為循環(huán)體。(3) 循環(huán)體中可以只包含一句語句,也可以包含多個語句。若為多條語句,必須用 括起來,組成一個復合語句,否則while 語句只將第一句語句視為循環(huán)體。(4) 循環(huán)體中必須要有改變條件表達式值的語句,否則將成為死循環(huán)。(5) 該循環(huán)結(jié)構(gòu)由于先判斷循環(huán)條件,當一開始條件就不成立循環(huán)體就不會執(zhí)行,所以該循環(huán)結(jié)構(gòu)又可稱允許0次循環(huán)的結(jié)構(gòu)。舉例說明:例51 #include “stdio.h” main(

27、 ) char c; while(c=getchar( ) )!=n)switch (c) case 0: case 1: putchar(c+2);case 2: putchar(c+3); break;case 3: putchar(c+4);default: putchar(c+1); break; printf(“n”);假設從鍵盤上輸入:420回車則程序運行結(jié)果為:55325.2 直到型循環(huán)結(jié)構(gòu)(dowhile結(jié)構(gòu))1. 形式: do 語句; while (表達式) ;2. 語義:先執(zhí)行循環(huán)體一次,然后判斷表達式是否成立,若為非0,表示循環(huán)條件滿足,就繼續(xù)執(zhí)行循環(huán)體,如此重復,直至表

28、達式的值為0,退出循環(huán)執(zhí)行后繼語句。表達式后繼語句循環(huán)語句0非03. 說明(1) 表達式可以是任意合法的表達式。(2) “語句”是重復執(zhí)行部分,稱之為循環(huán)體。(3) 循環(huán)體中可以只包含一句語句,也可以包含多個語句。若為多條語句,必須用 括起來,組成一個復合語句,否則只將第一句語句視為循環(huán)體。(4) 循環(huán)體中必須要有改變條件表達式值的語句,否則將成為死循環(huán)。(5) 該循環(huán)結(jié)構(gòu)由于先執(zhí)行循環(huán)語句再判斷循環(huán)條件是否成立,所以該循環(huán)結(jié)構(gòu)又可稱不允許0次循環(huán)的結(jié)構(gòu)。5.3 已知循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)(for 結(jié)構(gòu))1. 形式:for (表達式1;表達式2;表達式3)語句;2. 語義:(1) 先計算“表達式1

29、”的值;(2) 再計算“表達式2”的值,并判斷其是否為0,若非0,則執(zhí)行循環(huán)體一次,否則跳出循環(huán),執(zhí)行for語句的后續(xù)語句;(3) 計算“表達式3”的值,然后轉(zhuǎn)到步驟(2)重復執(zhí)行。注:for語句的語義也可用下圖表示:3. 說明(1) 在整個for循環(huán)執(zhí)行過程中,“表達式1”只計算一次,“表達式2”和“表達式3”可能計算多次;循環(huán)體可能多次被執(zhí)行,也可能一次也不執(zhí)行。(2) 循環(huán)體中可以只包含一句語句,也可以包含多個語句。若為多條語句,必須用 括起來,組成一個復合語句,否則只將第一句語句視為循環(huán)體。(3) for循環(huán)結(jié)構(gòu)的循環(huán)體可以是空語句。(4) for語句中的各表達式都可以省略,但分號間隔

30、符不能少。例如:for ( ;表達式2; 表達式3)for (表達式1 ; ; 表達式3)for (表達式1 ;表達式2; )for ( ; ; )若表達式1省略,則表達式1的計算必須在for語句的上面完成。若表達式2省略,則循環(huán)體中必須要有控制循環(huán)結(jié)束的break語句,否則將會死循環(huán)。若表達式3省略,則表達式必須在循環(huán)體內(nèi)完成。5.4 循環(huán)結(jié)構(gòu)中的轉(zhuǎn)移語句一、break語句1. 形式:break;2. 功能:是終止當前的循環(huán),轉(zhuǎn)向后繼語句執(zhí)行。例如:for (x=1,y=0;x<=10;x+) y=y+x; if (y>5) break; printf(“y=%dn”,y); 當

31、x=3時,y的值為6,使 if (y>5)的表達式的值為1,于是執(zhí)行break語句,跳出for循環(huán)體。二、continue語句1. 形式: continue;2. 功能:對于while和dowhile語句,其功能是結(jié)束本次循環(huán)轉(zhuǎn)去求循環(huán)條件表達式的值,而在for語句中,則是求解表達式3的值。While (表達式) continue; do continue; While (表達式);for ( ; ; ) continue; 5.5 循環(huán)結(jié)構(gòu)的嵌套1. 含義:當一個循環(huán)語句的循環(huán)體中又出現(xiàn)另一個循環(huán)語句時,就構(gòu)成了循環(huán)的嵌套。2. 形式:while ( ) while( ) do do

32、while( );while ( );for ( ; ; ) for ( ; ; ) 3. 說明(1) 不要將循環(huán)的嵌套和并列混為一談。例如: for (i=1;i<3;i+) for (j=1;j<=2;j+) printf(“%dt”,i*j); for (k=2;k<4;k+) m=i*k; s=s+m; 其中,j循環(huán)和k循環(huán)為并列關系,它們都是 i 的內(nèi)層循環(huán)。(2) 由于內(nèi)循環(huán)是外循環(huán)的循環(huán)體,因此外循環(huán)每執(zhí)行一遍,內(nèi)循環(huán)從初值到終值完整執(zhí)行一周。例如: for (i=1;i<=3;i+) for (j=1;j<=2;j+) printf(“%dt”,i

33、*j); 內(nèi)層循環(huán)體printf(“%dt”,i*j);共執(zhí)行了32(6)遍。例1:編寫程序,打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。如:153=13+53+33, 故153是水仙花數(shù)。main( ) int i, x1,x2,x3; for (i=100,i<=999;i+) x1=i%10; /*取個位數(shù)*/ x2=(i/10)%10; /*取十位數(shù)*/ x3=i/100; /*取百位數(shù)*/ if (x1*x1*x1+x2*x2*x2+x3*x3*x3 = = i ) printf(“%dt”,i); 第六章數(shù)組6.1 數(shù)組的概述:1.

34、 什么是數(shù)組數(shù)組是一組相同類型變量的集合。2. 數(shù)組的特點(1) 數(shù)組中的每一個成員稱為“數(shù)組元素”。每一個“數(shù)組元素”都有相同的名稱,但用不同的下標來區(qū)分。(2) 每一個數(shù)組元素都可以當做單個變量來使用,但它們的數(shù)據(jù)類型都必須是相同的。(3) 數(shù)組的類型可以是整型、實型、字符型、指針型、結(jié)構(gòu)型等(4) 數(shù)組根據(jù)其下標的個數(shù)可分為一維數(shù)組、二維數(shù)組及多維數(shù)組。6.2 數(shù)組的說明一、數(shù)組說明形式1. 形式:存儲類型數(shù)據(jù)類型數(shù)組名長度1長度22. 說明:(1) 數(shù)組說明的作用是為數(shù)組預留空間。(2) 數(shù)據(jù)類型可以是int、float、double、char等基本類型,也可以是指針型或結(jié)構(gòu)類型。(3

35、) 數(shù)組名是按照“標識符”的規(guī)則構(gòu)成的。(4) 長度定義了數(shù)組中所含元素的個數(shù),通常是一個整型常數(shù)。(5) 方括號 為下標運算符,其個數(shù)決定了數(shù)組的維數(shù)。例如:int a5,b23; char c20; float d43; 這里一共定義了四個數(shù)組,其中a為一維整型數(shù)組,有5個元素;b為二維整型數(shù)組,有2行3列共6個元素;c為一維字符型數(shù)組,有20個元素;d為二維實型數(shù)組,有4行3列共12個元素。二、使用數(shù)組的注意事項1. 在C語言中,數(shù)組元素的下標起始值為0而不是1。例如:int a5,b23; 那么a數(shù)組包含的數(shù)組元素為:a0,a1,a2,a3,a4 b數(shù)組的元素為:b00、b01、b02

36、 b10、b11、b122. 中的長度必須為正整數(shù)。它們的乘積確定了整個數(shù)組的長度。3. 中不允許使用變量定義數(shù)組長度;但允許包含符號常量和sizeof表達式6.3 數(shù)組的引用一、下標變量的表示形式1. 什么是下標變量:數(shù)組中的每一個元素可以當做一個變量來使用,這種變量必須以下標形式表示。2. 表示形式:數(shù)組名下標1下標2例如:int a10;float b35; a0=15;a9=100; b00=3.58; b04=2.5;3. 使用說明(1) 引用下標變量時,所給出的下標個數(shù)必須與所定義的數(shù)組維數(shù)相一致,而且每一個下標表達式的值不得超界。例如: int a10; a10=0;是錯誤的數(shù)組

37、下標引用。(2) 數(shù)組下標引用時可用整型常量、整型表達式和整型變量。6.4 數(shù)組的賦初值1. 給數(shù)組賦初值的語法形式數(shù)據(jù)類型數(shù)組名下標1下標2=常數(shù)列表2. 說明: (1) 常數(shù)列表為初值表,其中常數(shù)與常數(shù)之間用逗號分隔。例如:float x4=-1.0,0.0,2.7,5.2E-8;int y32=0,1,2,3,4,5 x數(shù)組元素的初值為:x0=-1.0, x1=0.0, x2=2.7, x4=0.0000000052 y數(shù)組元素的初值為:y00=0, y01=1, y10=2, y11=3, y20=4, y21=6,(2) 對數(shù)組賦初值時,若初值表中常數(shù)個數(shù)少于數(shù)組元素的個數(shù),這表示僅

38、對數(shù)組中排列靠前的元素賦初值;若初值表中給定的初值多于下標變量的個數(shù),將出現(xiàn)編譯錯誤。例如:int x5=10,20,30; 是正確的 int x5=1,2,3,4,5,6 是錯誤的(3) C語言允許使用一維數(shù)組賦初值的方法對多維數(shù)組賦初值。下面兩句語句寫法等價:int y32=0,1,2,3,4,5 int y32=0,1,2,3,4,5(4) 一維數(shù)組定義時若賦初值則 內(nèi)的下標可省略,由初值表中初值的個數(shù)來間接決定長度。 二維數(shù)組定義時若賦初值則第1個 內(nèi)的下標可省略,由初值表中初值的個數(shù)來間接決定其長度。例如:int x =0,1,2,3,4,5; int y 3=0,1,2,3,4,5

39、;6.5 字符數(shù)組與字符串處理一、字符串1. 所謂字符串,就是用雙引號括起來的字符序列。它是由若干個字符組成的,其最后一個字符是結(jié)束標記“0”。2. 在C語言中,沒有標準的字符串定義類型,字符串被當作字符數(shù)組來處理。3. 所謂字符數(shù)組就是每一個元素都是一個字符變量的數(shù)組。二、字符數(shù)組的定義1. 定義形式:char 數(shù)組名下標1下標2 例如:char c1100,c22020; c1被定義為一維字符數(shù)組,包含100個字符型的數(shù)組元素;c2被定義為二維字符數(shù)組,20行20列共有400個字符型的數(shù)組元素。2. 說明因為字符型變量只能存放一個由單引號括起來的字符,因此字符數(shù)組中的每一個元素也只能存放一

40、個字符。三、字符數(shù)組賦初值第一種方法:按單個字符的方式賦初值。例如:char s13=1,2,3;結(jié)果s10的值為1, s11的值為2, s12的值為3。但s1數(shù)組中存放的不是一個字符串。static char s23=1,2;結(jié)果s20的值為1, s21的值為2, s22的值為空。s2數(shù)組中存放的是一個字符串。因為空字符的值為0,等于字符串結(jié)束標記0。char s33=1,2,0結(jié)果s30的值為1, s30的值為2, s32的值為0。所以s3中存放的是一個字符串。 第二種方法:是直接在初值表中寫一個字符串常量。例如:char s13=“12”;結(jié)果s10的值為1, s11的值為2, s12的

41、值為0。所以s1數(shù)組中存放的是一個字符串。char s25=“ABCD”;結(jié)果s20的值為A, s21的值為B, s22的值為C, s24的值為D, s25的值為0。存放的是一個字符串。 char s2 =“ABCD”;結(jié)果s20的值為A, s21的值為B, s22的值為C, s24的值為D, s25的值為0。存放的是一個字符串。char s25=“ABCDE”;該語句在編譯時將是錯誤的,因為數(shù)組元素個數(shù)小于字符串長度。四、字符串的輸入字符串的輸入可以用scanf( ),也可以用gets( )。1. 用scanf( )輸入其形式為:char c180; scanf(“%s”,c1);2. 用g

42、ets( )輸入其形式為:char c180; gets(c1);3. 說明(1) scanf( )和gets( )輸入相同的地方:它們都是直接用數(shù)組名,因為數(shù)組名是地址常量。另外輸入的字符串最大長度必須是數(shù)組個數(shù)減1。(2) 不同的地方:scanf( )可以同時輸入多個輸入項,而gets( )只能輸入一個輸入項。scanf( )用%s格式輸入字符串時,遇空格字符、Tab鍵和回車符將自動結(jié)束輸入。gets( )不識別字符串中的轉(zhuǎn)義字符,它原樣傳送,而以回車作為輸入結(jié)束。例如:char c140; scanf(“%s”,c1); 如果輸入How are you 則c1中只存放How char c

43、140; gets(c1); 如果輸入How are you 則c1中只存放How are you五、字符串的輸出字符串的輸出可以用printf( ) 或 puts( )。1. 用printf( )輸出其形式為:char c1 =“abcdefg”; printf(“%s”,c1);2. 用puts( )輸出其形式為:char c1 =“abcdefg”; puts(c1);3. 說明相同點:都能識別轉(zhuǎn)義字符。例如char c1 =“ABC DEF GHI”; printf(“%s”,c1); 結(jié)果為ABC puts(c1); 結(jié)果為ABC不同點:printf( )能輸出多個輸出項,而puts

44、( )則能輸出一個輸出項。六、常用字符串處理函數(shù)1. strlen函數(shù)形式:strlen(str);功能:計算并返回字符串的長度(結(jié)束標記0不計入內(nèi))說明:str可以是字符串常量、字符數(shù)組。例如:strlen(“abcd efgh123”); 結(jié)果為11。2. strcmp函數(shù)形式:strcmp(str1,str2);功能:比較str1和str2兩個字符串的大小。若相同則返回0,若str1大于str2則返回大于0,若str1小于str2則返回小于0。例如:strcmp(“ABC”,”ABC”); 結(jié)果為0strcmp(“abc”,”ABC”); 結(jié)果為大于0strcmp(“ABC”,”abc”

45、) 結(jié)果為小于0說明:(1) str1、str2可以是字符串常量、字符數(shù)組。 (2) 不能用 if 語句比較兩個字符串是否相同。3. strcpy函數(shù)形式:strcpy(str1,str2);功能:將字符串str2的內(nèi)容連同結(jié)束標記0一起復制到str1中。說明:(1) str1、str2只能是字符數(shù)組。 (2) str1必須有足夠的長度以容納str2的內(nèi)容。例如:char c180,c240=“abcdefghijk”; strcpy(c1,c2);4. strcat函數(shù)形式:strcat(str1,str2);功能:將字符串str1與字符串str2尾首相接,拼接以后,原str1串尾的結(jié)束符0

46、被自動覆蓋,新串的未尾自動加上0,生成的新串存放于str1中。說明:(1) str1必須是字符數(shù)組、str2可以是字符串常量、也可以是字符數(shù)組。(2) str1必須有足夠的長度以容納拼接后的新串內(nèi)容。 例如:char c180=“abcdefgh”,c240=“xyz123”; strcat(c1,c2); 結(jié)果為abcdefghxyz123編程舉例:例1:從鍵盤上輸入一串字符串,并按逆序顯示出來。 main( ) char c80; int i; gets(c); for (i=strlen(c)-1;i>=0;i - -) printf(“%c”,ci); 第7章指針7.1 指針和指

47、針變量一、指針1. 什么是指針所謂指針,就是指存放數(shù)據(jù)的內(nèi)存地址。2. 變量與內(nèi)存地址的關系例如:有一條定義語句 int i=3,j=5;float f;整型變量i整型變量j單精度變量f3. 數(shù)組與地址的關系例如:有一條定義語句 int a3;整型數(shù)組元素a1整型數(shù)組元素a0整型數(shù)組元素a2二、指針變量1. 什么是指針變量用于存放地址的變量稱為指針變量2. 指針變量的特點地址是一種特殊的數(shù)據(jù)類型,所以存放地址的指針變量和存放字符型、整型、實型數(shù)據(jù)的變量是不同類型的變量。3. 如何獲得地址3. 如何獲得地址(1) 變量地址或數(shù)組元素地址通過“&”運算符獲得。例如: int a,b10; &a、&b3(2) 數(shù)組的首地址直接可用數(shù)組名,不必利用“&”運算符獲得。例如:int b10那么數(shù)組名b就是數(shù)組首地址7.2 指針變量的定義、初始化和引用一、指針變量的定義和初始化1. 定義格

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論