




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C語言程式設計教程第一講C語言概述1.1C語言發(fā)展概述1.2C語言的特點1.3簡單的C語言程式1.4C程式上機步驟2.1常量和變數(shù)1.1C語言發(fā)展概述C語言是在1972年至1973年間由美國的貝爾實驗室的M.D.Ritchie和K.Thompson以及英國劍橋大學的M.Richards等為描述和實現(xiàn)UNIX操作系統(tǒng)而設計的。最初的C語言是附屬於UNIX的操作系統(tǒng)環(huán)境,而它的產(chǎn)生卻可以更好地描述UNIX操作系統(tǒng)。時至今日,C語言已獨立於UNIX操作系統(tǒng)。它已成為微型、小型、中型、大型和超大型(巨型)電腦通用的一種程式設計語言。隨著C語言的不斷發(fā)展、應用和普及,目前,C語言已經(jīng)能夠在多種操作系統(tǒng)下運行,實用的C語言編譯系統(tǒng)種類繁多,如MicrosoftC、TurboC等。1.2C語言的特點C語言能夠成為目前廣泛的高級設計語言之一,完全是由其語言特點決定的。(1)語言基本組成部分緊湊簡潔。(2)C語言運算符豐富,表達能力強。(3)C語言數(shù)據(jù)結構豐富,結構化好。(4)具有結構化的控制語句。(5)C語言提供了某些接近組合語言的功能。(6)C語言程式所生成的目標代碼品質高。(7)C語言程式可移植性好。C語言的弱點:(1)運算符的優(yōu)先順序較複雜,不容易記憶(2)C語言的語法限制不太嚴格,一定程度上降低了某些安全性。例1.3編寫計算長為a,寬為b的長方形面積s的C程式。/*filenamea3.c*/#include“stdio.h”main(){inta,b,s;/*定義a,b,s三個整形變數(shù)*/printf(“a,b=?”);scanf(“%d,%d”,&a,&b);/*讀入兩個整數(shù),存入變數(shù)a和b中*/s=a*b;/*計算長方形的面積s的值*/printf(“s=%d\n”,s);/*輸出面積s的值*/}編譯a3.c程式,並執(zhí)行檔案名為a3.exe,執(zhí)行結果為:C:\>a3a,b=?20,10S=2001.3簡單的C語言程式。1.3.1C語言程式的構成例1.1編寫一個C語言程式,顯示一個字串“goodmorning,class!”。/*filenamea1.c*/main(){printf(“goodmorning,class!\n”);}編譯a1.c程式,並執(zhí)行檔a1.exe,執(zhí)行結果為C:>a1Goodmorning,class!(加下劃線部分為需輸入內(nèi)容,下同)例1.2將兩個整數(shù)之和顯示出來。/*filenamea2.c*/main(){inta,b,sum;/*定義a,b,sum三個整形變數(shù)*/a=100;b=200;/*給變數(shù)a和b賦值*/sum=a+b;/*計算a和b和,存入變數(shù)sum中*/printf(“sum=%d\n”,sum);/*輸出sum的值*/}編譯a2.c程式,並執(zhí)行檔a2.exe,執(zhí)行結果為C:\>a2Sum=3001.3.2C語言程式的特點(1)C程式是由函數(shù)構成的,其中至少包括一個函數(shù)main()。(2)函數(shù)體是由左右花括弧{}括起來的部分。(3)C語言中的每個基本語句都以“;”結束。(4)C語言書寫格式自由,一行內(nèi)可以寫一個語句,也可以寫多個語句。(5)#include語句是編譯預處理語句,其作用是將由雙引號或尖括弧括起來的檔內(nèi)容讀入該語句位置處。對程式說明:(1)可用/*…*/對C程式中的任何部分作注釋。(2)C語言中所有變數(shù)都必須先定義類型,然後再使用。(3)一個C語言程式通過函數(shù)之間的相互調用來實現(xiàn)相應的功能。即可以是系統(tǒng)提供的庫函數(shù),也可以是根據(jù)需要自己定義的函數(shù)。1.4C語言上機步驟運行環(huán)境:DOC操作系統(tǒng)下的TurboC編輯編譯連接執(zhí)行開始結束有錯?有錯?.C原始檔案.OBJ目標檔.EXE可執(zhí)行檔是是否否1.4.1C程式上機步驟1.編輯:在TurboC環(huán)境下。將C語言根源程式通過鍵盤輸入到電腦中,並以檔形式存盤,根源程式都是以.C為擴展名。2.編譯:通過編輯程式將根源程式輸入到電腦後,需要經(jīng)過C語言編譯器將其生成目標程式。得到的目標檔都是以.OBJ為檔擴展名。3.連接:經(jīng)過編譯後生成的目標檔需經(jīng)過連接後才能生成可執(zhí)行代碼。其擴展名是.EXE。所謂連接,是將目標檔和庫函數(shù)或其他目標程式連接成可執(zhí)行的目標程式。4.執(zhí)行:連接後根源程式的目標程式就是可執(zhí)行檔了。在DOC系統(tǒng)下,只要鍵入可執(zhí)行檔案名,按回車鍵就可以了。1.4.2TurboC系統(tǒng)菜單主菜單資訊窗編輯窗快速參考行檔操作編輯運行編譯專案檔選項調試中斷/觀察1.TurboC的主螢幕和主菜單功能2.檔菜單及功能裝入一個新檔裝入檔列表中的檔新建存盤另存為顯示檔列表顯示目錄暫時退出退出2.1常量和變數(shù)2.1.1常量:在程式運行過程中其值不能被改變的量。2.1.2變數(shù):在程式運行過程中其值可以被改變的量。識別字:用來標識變數(shù)名、符號常量名、函數(shù)名、數(shù)組名、類型名、檔案名的有效字元序列。1.識別字的有關規(guī)定:(1)由英文字母、數(shù)字、下劃線組成,且第一個字元必須是字母或下劃線,一般不超過8個字元;(2)大小寫字母的含義不同。(3)不能使用C語言中的關鍵字做識別字,(4)用戶取名時,應當儘量遵循“簡潔明瞭”和見名知意的原則。2.變數(shù)名的有關規(guī)定:(1)使用變數(shù)名前,一定先定認,後使用,否則不能做為變數(shù)名。(2)每一個變數(shù)屬於一種類型,便於在編譯時據(jù)此檢查該變數(shù)所進行的運算是否合法。(3)變數(shù)名的定義:存儲屬性、數(shù)據(jù)類型、變數(shù)名表3.數(shù)據(jù)類型2.2整型數(shù)據(jù)2.2.1整型常量(1)十進位整數(shù):數(shù)碼直接開頭的十進位數(shù)。如1234,-234。(2)八進制整數(shù):以0開頭的常量是八進制數(shù)。如011=(11)8(3)十六進制整數(shù):以0x開頭的數(shù)是十六進制。如0x123即(123)16例2.1三種進製錶示方法的轉換根源程式a1.cmain(){Intx=1246,y=01246,z=0x1246;Printf(“%d,%d,%d\n”,x,y,z);Printf(“%o,%o,%o\n”,x,y,z);Printf(“%x,%x,%x\n”,x,y,z);}C:\>a11246,678,46782336,1246,111064de,2a6,12462.2.2整型變數(shù)原則:使用變數(shù)前,先定義,後使用。(1)基本型:用int表示;(2)短整型:用shortint或short表示;(3)長整型:用longint或long表示;(4)無符號型:無符號整型:用unsignedint或unsigned表示;無符號短整型:用unsignedshortint或unsignedshort表示;無符號長整型:用unsignedlongint或unsignedlong表示;2.2.3整型變數(shù)使用
不同的整型數(shù)據(jù),應根據(jù)其特性和取值範圍,將其定義成不同類型的整型變數(shù)。例2.2不同類型的數(shù)據(jù)進行算術運算。根源程式a2.cMain(){Inta,b,s1,s2;Unsignedx;a=10;b=-30;x=20;S1=a+x;s2=b+x;Printf(“a+x=%d,b+x=%d\n”,s1,s2);}C:\>a2運行結果為a+x=30,b+x=-102.2.3整型變數(shù)使用
不同的整型數(shù)據(jù),應根據(jù)其特性和取值範圍,將其定義成不同類型的整型變數(shù)。例2.3整型數(shù)據(jù)各類型所能表示的範圍根源程式a3.cmain(){inta,b;longc,d;unsignede,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;Printf(“int:%d,%d,\n”,a,a+b);Printf(“l(fā)ong:%d,%ld\n”,c,c+d);Printf(“unsigned:%u,%u\n”,e,e+f);}C:\>a3運行結果為Int:372767,-32768Long:2147483647,-2147483648Unsigned:65535,02.3字元型數(shù)據(jù)2.3.1字元型常量字元常量是由一對單引號括起來的單個字元構成,例如:‘A’,‘b’,’2’,’%’’;’等。一個字元型常量是該字元集中對應的編碼值:‘0’~‘9’的ASCⅡ編碼值是48~57。顯然‘0’與數(shù)字0是不同的。2.3.2字元型變數(shù)字元型數(shù)據(jù)分為兩類:一般字元類型(char)和無符號字元類型(unsignedchar)。例2.4字元型數(shù)據(jù)與整型數(shù)據(jù)可以通用根源程式a3.cMain(){charc1,c2;Printf(“%c,%c\n”,c1,c2);Printf(“%d,%d\n”,c1,c2);}C:\>a4運行結果為A,B65,662.3.3字串常量
字串常量是由一對雙引號括起來的字元序列,例:“fsdf”,”A”等。字串常量中不能直接包括單引號、雙引號和反斜杠“\“。字串常量與字元常量的區(qū)別:(1)字串常量是用雙引號括起來的字元序列。(2)字串常量有串尾標記”\0”;(3)字串常量允許擴展表示法;(4)C語言中沒有專門的字串變數(shù)。字串如果需要存放在變數(shù)中,需要用字符型數(shù)組來存放。注意:不要將單個字元組成的字串常量與字元常量混淆?!產(chǎn)’為字串常量,不能把一個字串常量賦給一個字元變數(shù)。例如:下麵的用法都是錯誤的:Charc1,c2;C1=“a”C2=“CHINA”;字元‘\0’由系統(tǒng)自動加入到每個字串的結束處,不必由編程人員加入。字串“CHINA”在內(nèi)存中的存放形式如下圖,其長度是六個位元組,而不是5個位元組。字元‘\0’所對應的ASCⅡ值為0,即“空”字元。2.4浮點型數(shù)據(jù)2.4.1浮點型常量浮點型常量有兩種表示形式。十進位數(shù)形式它是由數(shù)字和小數(shù)組成,如:3.14159,-7.2,8.9指數(shù)法形式如:180000.0用指數(shù)法可表示為1.8e5,1.8稱為尾數(shù),5稱為指數(shù)。
0.00123用指數(shù)法可表示為1.23e-3注意:(1)字母e或E之前(即尾數(shù)部分)必須是有數(shù)字的。(2)e或E後面的指數(shù)部分必須是整數(shù)。如:e-3,9.8e3.1,e5都是不合法的。2.4.2浮點型變數(shù)(實型變數(shù))
把帶有小數(shù)點的數(shù)稱為浮點數(shù),或實型數(shù)。浮點型變數(shù)又稱為實型變數(shù),按能表示數(shù)的精度,分為:單精確度浮點型變數(shù)和雙精度浮點型變數(shù),其定認方法如下:floata,b;/*單精確度變數(shù)的定義*/doublec,d;/*雙精度變數(shù)的定義*/單精確度:占4個位元組,有效位為7位,數(shù)值範圍為10-37~1038雙精度:占8個位元組,有效位為15~16位,數(shù)值範圍約為10-307~10308浮點型常量不存在單精確度型和雙精度型之分。2.6運算符及運算式C語言運算符可以分為:算術運算符、邏輯運算符、關係運算符、位運算符、賦值運算符。2.6.1算術運算符和算術運算式1.算術運算符:加、減、乘、除及取模即:+,-,*,/,%來表示。C語言規(guī)定:(1)模運算符%,僅用於整型變數(shù)或整型常量。(2)優(yōu)先順序:一個運算式中如有多個運算符,則計算先後次序為相應運算符的優(yōu)先順序高的優(yōu)先。乘、除、模優(yōu)先順序高於加、減的優(yōu)先順序。(3)結合方向:是一個運算對象兩側的運算符的優(yōu)先順序別相同時,應遵循的處理規(guī)則。算術運算符的結合方向是從左至右;賦值運算符的結合方向是從右至左。算術運算式:由算術運算符、括弧以及操作對象組成的符號C語言語法規(guī)則的運算式稱為算術運算式。2.6.2賦值語句1.賦值運算符語言的賦值運算符是“=”,它的作用是賦值運算符右邊運算式的值賦給其左邊的變數(shù)。例如:a=10,x=a+5,前者是把常量10賦給變數(shù)a,後者是將運算式a+5的值賦給變數(shù)x.注意:如果“=”兩側的類型不一致,在賦值時要進行類型轉換。例如a=b,執(zhí)行該語句時,b的結果轉換為a的類型後才能進行賦值運算。2.複合賦值運算符C語言允許在賦值運算符“=“之前加上其他運算符,以構成其複合運算符。複合運算符多數(shù)為雙目。複合運算符有:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=例:a+=2等價於a=a+2x*=y+5等價於x=x*(y+5)x%=8等價於x=x%8賦值運算符都是自右向左執(zhí)行。3.賦值語句與賦值運算式賦值語句最簡單的形式是:<變數(shù)>=<運算式>;功能:是賦值運算符右邊的“運算式”的值賦給左邊的變數(shù)。賦值運算式也可以包含複合的賦值運算符,例:如果a=10,運算式a+=a-=a*a的值為-180。其步驟為:(1)先進行a-=a*a的計算,它相當於a=a-a*a=10-10*10=-90.(2)再進行a+=-90的計算,它相當於a=a+(-90)=-90-90=-180.4.自增自減運算符i++(或i--)表示在使用該運算式值之後將i值加1(或減1)。++i(或--i)表示在使用該運算式值之前將i值加1(或減1)。說明:(1)++和--僅適用於變數(shù),不能用於常量或運算式。(2)++和--運算符的結合方向是“至右向左”。Main(){inta=100;printf(“a++=%d\n”,a++);printf(“++a=%d\n”,++a);printf(“a--=%d\n”,a--);printf(“--a=%d\n”,--a);}輸出結果:a++=100++a=102a--=102--a=1002.6.3關係運算符和關係運算式1.關係運算符關係運算符均為兩目運算符。共有六種:>大於<小於>=大於等於<=小於等於==
等於!=
不等於關係運算符要求兩個運算元是同一種數(shù)據(jù)類型,其結果為一邏輯值,即關係成立時,其值為真(true),用非0值表示;關係不成立時,其值為假(false),用0表示。關係運算符的優(yōu)先順序借低於算術運算符,關係運算符==和!=低於前四種運算符,並且結合方向均為自左至右。2.關係運算式由關係運算符將兩個運算式連接起來的有意義的式子稱為關係運算式。如:a+b<c-6先進行a+b和c-6兩個算術運算式的運算,得到兩個值後再進行比較,從現(xiàn)而求出關係運算式的值。其值為0或非0。關係運算式的值是一個邏輯值,即“真”或“假”。用1表示“真”,用0表示“假”。如:a=4,b=1,C=a>b;c的值為1,若a=1,b=8,x=a>b;x的值為0。2.6.4邏輯運算符和邏輯運算式1.邏輯運算符邏輯運算符有“&&“(邏輯與)、”||“(邏輯或)和”!“(邏輯非)三種。邏輯運算符的操作對象為零或非零整數(shù)值,見表2.4.表2.4邏輯運算規(guī)則數(shù)據(jù)a數(shù)據(jù)ba&&ba||b!a!bTTTTFFTFFTFTFTFTTFFFFFTT邏輯運算式由邏輯運算符和其操作對象組成運算式稱為邏輯運算式。2.6.5位運算符位(bit)運算是C語言的一大特色,可直接對構成記憶體的基本單位“位元組”(byte)進行按位操作。按位與(&)操作規(guī)則:參加運算的兩個運算量,如果兩個相應的位均為1,則該位的結果為1,否則為0,見表2.5
表2.5接位與運算量10101運算量20011結果0001例如:(1)清零。(2)取一個數(shù)中的某些位。高位清零:
0010110110011100&00000000111111110000000010011100低位清零:
0010110110011100
&11111111000000000010110100000000按位或(|)操作規(guī)則:參加運算的兩個運算量,其相應的位中只有一個為1,則該位的結果為1,否則為0。表2.6按位或運算量10101運算量20011結果0111例如:(1)01000001
|0010100101101001(2)01000001
|0000000001000001(3)01000011
|1111111111111111(4)01000001
|1011111011111111例如:將某一個數(shù)的某些位置為1。一個整數(shù)a,要將其低位元組全置為1,即低位元組為11111111,可將該數(shù)與255(十六進制為FF,二進位為11111111)按按位或即可。按位異或(^)操作規(guī)則:參加運算的兩個運算量,當相應位相同時,其結果在該位為0,相應位不同時,其結果在該位為1,即按位相加,但不進位。表2.7 按位異或運算量10101運算量20011結果0110(1)使指定位翻轉。即由1變?yōu)?,由0變?yōu)?。例:
01100110^0000111101101001
(2)不使用臨時變數(shù),交換兩個值。方法為:若有兩個數(shù)a和b,通過下麵的賦值語言可將a和b的值互換:a=a^b;b=b^a;b=a^b;4.按位求反(~)操作規(guī)則:運算符~是一個單目運算符,用來對一個數(shù)二進位表示按位求反,即瘵0變成1,將1變成0。表2.8按位求反運算量01結果10例:~0110100110010110將一個數(shù)的某些位變?yōu)?。方法是:瘵該數(shù)a與~b按位求與,此處的b為這樣的一個數(shù),即要求a中變?yōu)?的那些位均為1,其餘位均為0。如要將a的最低位變?yōu)?,則可使用下述運算式實現(xiàn)。A=a&~15.左移(<<)操作規(guī)則:將一個數(shù)的各二進位位全部左移若干位,左移後,右邊的這些位用0填補,左邊移出的位捨棄不用。例:a=a<<2;若a=15,即二進位00001111,左移兩位後變?yōu)?0111100。若再向左移4位,則變?yōu)?1000000。將一個數(shù)左移1位,相當於該數(shù)乘以2,左移2位相當於該數(shù)乘以4。如上例中a=15,則a=a<<2,此時a=15*4=60。但是這種情況僅指左移時沒有1被移出去的情況,左移運算要比乘法運算快得多。6.右移(>>)操作規(guī)則:將一個數(shù)的各二進位位全部右移若干位,右移後,右邊移出的位被捨棄,而左邊的填補分兩種情況:(1)該數(shù)為無符號數(shù),則高位補0。例:a=a>>2;右a=15,二進位為00001111,右移兩位後為00000011。(2)該數(shù)為有符號數(shù),若原來的符號位為0(最高位為0,即正數(shù))則高位補0,若原來的符號位為1(即表示該數(shù)為負數(shù)),高位補0或1,取決於所使用的電腦系統(tǒng)。有的系統(tǒng)補0,稱為邏輯右移,有的系統(tǒng)補1,稱為算術右移。例:a:1000110110000111a>>1:0100011011000011(邏輯右移)a>>1:1100011011000011(算術右移)2.6.6其他運算符逗號運算符逗號運算符為“,“。逗號運算式是用逗號運算符把兩個運算式組合成的一個運算式。其一般形式為〈表達式1〉,〈運算式2〉說明:(1)逗號運算式的執(zhí)行過程是:先求運算式1的值,再求運算式2的值,運算式2的值就是整個逗號運算式的值。(2)一個逗號運算式可以與另一個運算式構成一個新逗號運算式。(3)逗號運算符是所有運算符中級別最低的。(4)逗號運算式常用於for語句中,它可以表達多個初值或多個步長增量。逗號運算式的一般形式可以擴展為〈運算式1〉,〈運算式2〉,〈運算式3〉,……〈運算式N〉運算式n的值是整個運算式的值。條件運算符條件運算符是一個三目運算符,把三運算式組合成一個運算式。其一般形式為〈運算式1〉?〈運算式2〉:〈運算式3〉;功能:計算〈運算式1〉的值,如果該值為真(非0值),則計算〈運算式2〉的值,並且該值即為條件運算式值。若〈運算式1〉的值為假(0),則計算〈運算式3〉的值,並將該值作為條件運算式的值。說明:(1)條件運算符優(yōu)先順序別高於賦值運算符,低於關係運算符和算術運算符。(2)條件運算符結合方向是“自右至左”。(3)〈運算式1〉與〈運算式2〉、〈運算式3〉類型可以不同。3.Sizeof運算符sizeof運算符是測試變數(shù)、運算式或類型名所佔用的位元組數(shù)。有兩種用法。sizeof〈運算式〉:測試運算式所佔用的位元組數(shù)。sizeof〈運算式〉:測試類型名所佔用的位元組數(shù)。例如:sizeof(float)其值為4。sizeof運算符可以出現(xiàn)的運算式中。main(){inta=4;floadb=5.6;printf(“%d,%d\n”,sizeof(a),sizeof(b));}輸出結果:2,42.7數(shù)據(jù)類型轉換
在內(nèi)存中,字元是以系統(tǒng)中所使用字元的編碼值形式存儲的,C語言允許字元型數(shù)據(jù)和整型數(shù)據(jù)之間通用一個字元型數(shù)據(jù),即可以以字元形式輸出,也可以以整型形式輸出,同時,字元型數(shù)據(jù)可能賦給整型變數(shù),整型數(shù)據(jù)也可以賦給字元型變數(shù),只是當整型變數(shù)數(shù)據(jù)的大小超過字元型變數(shù)的表示範圍時,需要截取相應的有效位。除字元型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用之外,不同類型的數(shù)據(jù)在進行混合運算時,往往需要進行強制類型轉換。因此類型轉換有兩種方式:一種是自動類型轉換;另一種是強制類型轉換。2.7.1自動類型轉換在進行計算時,首先將不同類型的數(shù)據(jù)轉換成同一類型,然後進行計算不同類型數(shù)值轉換規(guī)則:DoublefloatLongUnsignedIntchar,short2.7.2強制類型轉化強制類型轉化的一般形式如下所示:(強制的類型名)〈變數(shù)〉例如:(int)(a+b),將a+b的結果強制轉換成int型;
(float)a/b,將a的結果強制轉換成float型後,再進行計算。注意:經(jīng)強制類型轉換後,得到的是一個所需類型的中間變數(shù),原來變數(shù)的類型並沒有發(fā)生任何變化。3.1數(shù)據(jù)的輸入3.1.1字元輸入函數(shù)getchar格式:getchar()功能:從鍵盤上接收輸入的一個字元。例如:
charc;┆c=getchar()其中c是字元型或整型變數(shù)。例1:從鍵盤輸入一個字元,並將其存入字元型變數(shù)c中。#include”stdio.h”Main(){charc;C=getchar();}3.1.2格式輸入函數(shù)scanf格式:scanf(格式控制,地址表);功能:用來輸入任何類型數(shù)據(jù),可同時輸入多個類型或不同類型數(shù)據(jù)。格式控制:是由雙括弧括起來字串,主要是由“%”和格式符組成表3.1Scanf函數(shù)格式字元格式字元功能d輸入十進位整數(shù)o輸入八進制整數(shù)x輸入十六進制整數(shù)c輸入單個字元s輸入字串fe輸入浮點數(shù)(小數(shù)或指數(shù)形式)hd,ho,hx輸入短整型數(shù)據(jù)ld,lo,lx輸入長整型數(shù)據(jù)lf,le輸入長浮點型數(shù)據(jù)(雙精度)2.地址表Scanf函數(shù)中的“地址表”部分是由變數(shù)的地址組成的,如果有多個變數(shù),則各變數(shù)之間用逗號隔開。地址運算符為“&“,如變數(shù)a的地址可以寫為&a。例3.2用scanf函數(shù),從鍵盤上輸入一個整型數(shù)、一個浮點數(shù)和一個字元,分別存入變數(shù)i、f和c中。#include”stdio.h”main(){inti;floatf;charc;scanf(“%d,%f,%c”,&I,&f,&c);printf(“i=%d,f=%f,c=%c”,i,f,c);}說明:(1)在scanf函數(shù)“格式控制”部分中的每個格式說明符都必須在“地址表列”中有一個變數(shù)與之對應格式說明符必須要與相應變數(shù)的類型一致。(2)當格式說明符之間沒有任何字元時,在輸入數(shù)據(jù)時,兩個數(shù)據(jù)之間要使用“空格”、“Tab”或“回車”鍵做間隔;如果格式說明符之間包含其他字元,則輸入數(shù)據(jù)時,應輸入與這些字元相同的字元做間隔,如:
Scanf(“%d,%f,%c”,&i,&f,&c);
在輸入數(shù)據(jù)時,應採用如下形式:20,7.8,a(3)可以在格式說明符的前面指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)將自動按此列數(shù)來截取所需的數(shù)據(jù),如:
scanf(%2d%3d”,&x,&y);當用戶輸入78985時,系統(tǒng)將自動地將78賦給變數(shù)x,將985賦給變數(shù)y。這種方式也可用於字元型數(shù)據(jù)的輸入。(4)應該特別注意的是,scanf函數(shù)中的“地址表列”部分應當中變數(shù)的地址,而不是變數(shù)名。3.2數(shù)據(jù)的輸出3.2.1字元輸出函數(shù)putchar數(shù)據(jù)的輸出一般是以終端顯示器(螢幕)為處理對象。格式:向終端輸出一個字元。說明:變數(shù)c可以是字元型,也可以是整型。例3.3從鍵盤輸入一個字元,在螢幕上顯示出來。#include”stdio.h”main(){charc;c=getchar();/*從鍵盤輸入一個字元*/putchar(c);/*在螢幕上顯示一個字元*/}putchar函數(shù)也可以輸出一些特殊字元(控制字元),如:putchar(‘\n’)作用是輸出一個“換行”字元。3.2.2格式控制函數(shù)printf格式:printf(格式控制,輸出表);功能:輸出任何類型的數(shù)據(jù)。1.格式控制“格式控制”部分與scanf函數(shù)的相似,也是由雙引號括起來的字串,主要包括格式說明和需要原樣輸出的字元?!案袷秸f明”:由“%”和格式符組成,如%c和%f等,作用是將要輸出的數(shù)據(jù)轉換為指定格式後輸出。printf函數(shù)中使用的格式字元見表3.2。表3.2printf函數(shù)格式字元格式字元功能d按十進位形式輸出帶符號的整數(shù)(正數(shù)前無+號)o按八進制形式無符號輸出(無前導o)x按十六進制形式無符號輸出(無前導ox)u按十進無符號形式輸出c按字元形式輸出一個字元f按十進形式輸出單、雙精度浮點數(shù)(默認6位小數(shù))e按指數(shù)形式輸出單、雙精度浮點數(shù)s輸出以‘\o’結尾的字串ld長整型輸出lo長八進制整型輸出lx長十六進制整型輸出lu按無符號長整型輸出m格式字元按寬度m輸出,右對齊-m格式字元按寬度m輸出,左對齊m,n格式字元按寬度m,n位小,或裁取字串前n個字元輸出,右對齊-m,n格式字元按寬度m,n位小,或裁取字串前n個字元輸出,左對齊注意:格式字元必須小寫輸出表printf函數(shù)中的“輸出表”部分由運算式組成,這些運算式應與“格式控制”字串中的格式說明符的類型一一對應,若“輸出表”中有多個運算式,則每個運算式之間應由逗號隔開。例3.4從鍵盤輸入一個整數(shù)和一個浮點數(shù),並在螢幕上顯示出來。#include”stdio.h”main(){inti;floatf;scanf(“%d,%f”,&i,&f);printf(“i=%d,f=%f”,I,f);}執(zhí)行此程式,按格式輸入數(shù)據(jù):50,8,9i=50,f=8.900000說明:(1)printf函數(shù)中的“格式控制”字串中的每一個格式說明符,都必須與“輸出表”中的某一個變數(shù)相對應,如上述程式中的“%”與i對應;“%f”與f對應,而且格式說明符應當與其所對應變數(shù)的類型一致。若要顯示“%”字元,則應在“格式控制”字串中連寫兩個“%”,如:Printf(“x=%d%%”,100/4);將顯示:x=25%。(2)對格式說明符c、d、s和f等,可以指定輸出字段的寬度。%md:m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)大於m,則按實際位數(shù)輸出,否則輸出時向右對齊,左端補以“空格”符。%mc:m為指定的輸出字段的寬度。若m大於一個字元的寬度,則輸出時向右對齊,左端補以“空格”符。%mc:m為輸出時字串所占的列數(shù)。如果字串的長度(字元個數(shù))大於m,則按字串的本身長度輸出,否則,輸出時字串向右對齊,左端補以“空格”符。%-ms:mr的意義同上。如果字串的長度小於m,則輸出時字串向左對齊,右端補以“空格”符。%m.nf:m為浮點數(shù)據(jù)所占的總列數(shù)(包括小數(shù)點),n為小數(shù)點後面的位數(shù)。如果數(shù)據(jù)的長度小於m,則輸出時向右對齊,左端補以“空格”符。%-m.nf:m、n的意義同上。如果數(shù)據(jù)的長度小於m,則輸出向左對齊,右端補以“空格”符。(3)除了格式說明符及其輸出字段的寬度外,在“格式控制”字元中的其他字元,將按原樣輸出。(4)在顯示數(shù)據(jù)時,可以不指定輸出字段的寬度,而直接利用系統(tǒng)隱含的輸出寬度。3.3應用舉例例3.5分析下列程式,觀察運行結果。main(){charch=‘a(chǎn)’;inta=98;unsignedb=1000;longc=123456789;floatx=3.14;doubley=1.2345678;pPrintf(“(1)a=%d,a=%c,ch=%d,ch=%c\n”,a,a,ch,ch);printf(“(2)b=%u\n”,b);printf(“(3)c=%ld\n”,c);printf(“(4)x=%f,y=%f\n”,x,y);printf(“(5)x=%e,y=%e\n”,x,y);printf(“(6)y=%e10.2f\n”,y);}運行的結果為(1)a=98,a=b,ch=97,ch=ab=1000C=123456789X=3.140000,y=1.234567x=3.14000e+00,y=1.23456e+00Y=1.23例3.6從鍵盤上輸入一個大寫字母,把它轉換面小寫字母,然後顯示出來。#include”stdio.h”main(){charx1,x2;printf(“x1=?\n”);scanf(“%c”,&x1);x2=x1+32;printf(“%c,%c\n”,x1,x2);}運行結果x1=?AA,a例3.7分別輸入一個浮點數(shù),一個整數(shù),一個字元型數(shù)。#include“stdio.h”main(){floatf;intI;charc;scanf(“%f%d%c”,&f,&I,&c);printf(“%f%d%c”,f,I,c);}第四章條件語句結構化程式的三種基本結構:順序結構、選擇分支結構和迴圈結構。順序結構:是指每個程式都是按照語句的書寫順序依次執(zhí)行的。選擇分支結構:是指通過對特定條件的判斷,來選擇一個分支執(zhí)行。迴圈結構:迴圈是指在給定條件下,重複執(zhí)行某段程式,直到不滿足條件為止。4.1語句和複合語句運算式語句:一個運算式的後面跟隨一個分號構成的語句。如:x=x+a;說明:分號“;”是語句的終結符,而不是語句的分隔符號即分號是語句的最末組成部分。複合語句:由左右花括弧括起來的語句;形式:{說明部分;語句部分}一個複合語句在語法上等同於一個語句,在程式中,凡是單個語句能夠出現(xiàn)的地方,都可以出現(xiàn)複合語句。一個複合語句又可以出現(xiàn)在其他複合語句內(nèi)部。在複合語句的後面必須有一個分號,做為該語句的終結符。4.2if語句If語句是條件選擇語句,它是通過對給定條件的判斷,來決定所要執(zhí)行的操作。4.2.1if語句的三種形式If語句的第一種形式格式:if(運算式)〈語句〉功能:首先計算運算式的值,若運算式的值為“真”(為非0),則執(zhí)行語句,若表達式的值為“假”(為0),不執(zhí)行語句。例如:If(x>y)printf(“%d”,x);運算式語句假(0)真(非0)2.If語句的第二種形式格式:if(運算式)〈語句1〉
else〈語句2〉功能:首先計算運算式的值,若運算式的值為“真”(為非0)。則執(zhí)行語句1,若運算式的值為“假”(為0),則執(zhí)行語句2。例如:if(x>y)printf(“%d”,x);elseprintf(“%d”,y);語句1運算式語句2真假3.If語句的第三種形式格式:if(運算式1)〈語句1〉elseif(運算式2)〈語句2〉elseif(運算式3)〈語句3〉
┆elseif(運算式n)〈語句n〉else〈語句n+1〉功能:首先計算運算式的值,若第n個運算式的值為“真”(為非0),則執(zhí)行語句n,若所有的運算式的值都為“假”(為0),則執(zhí)行語句n+1。其流程圖如下:運算式1運算式2運算式3運算式4真真真真假假假假語句1語句2語句3語句4語句5例如:if(score>89)grade=‘5’;elseif(score>74)grade=‘4’;elseif(score>59)grade=‘3’;elsegrade=‘2’;說明:(1)if語句中的運算式可以是C語言的合法運算式。(2)第二種、第三種格式的if語句中,在每個else前面有一個分號,整個語句結束處也有一個分號。這是由於分號是C語句中不可缺少的部分,這個分號是if語句中的內(nèi)嵌語句所要求的。(3)在if和else後面可以只含有一個內(nèi)嵌的操作語句,也可以含有多個操作語句,此時應用花括弧“{}“將幾個語句括起來,構成一個複合語句。例4.1將兩個數(shù)中較大者賦給s。main(){inta,b,s;a=10;b=20;if(a>b)s=a;elses=b;printf(“s=%d\n”,s);}執(zhí)行結果:s=20例4.2比較兩個數(shù),按由大到小輸出。main(){inta,b,x,y;a=10;b=20;if(a>b){x=a;y=b;}else{x=b;y=a;}printf(“x=%d,y=%d\n”,x,y);}執(zhí)行結果:x=20,y=104.2.2if語句的嵌套在if語句中又包含一個或多個if語句,稱為if語句的嵌套。一般形式如下:if()if()〈語句1〉
else〈語句2〉elseif()〈語句3〉
else〈語句4〉if()if()〈語句1〉elseif()〈語句2〉
else〈語句3〉說明:(1)if與else的配對關係,從最內(nèi)層開始,else總是與離它最近的未曾配對的if配對。(2)if與else的個數(shù)最好相同,從內(nèi)層到外層一一對應,以避免出錯。(3)如果if與else的個數(shù)不相同,可以用花括弧來確定配對關係。例如:If(){if()〈語句1〉}else
〈語句2〉這時{}限定了內(nèi)嵌if語句的範圍,因此else與第一個if配對。內(nèi)嵌if內(nèi)嵌if內(nèi)嵌if例4.3有一函數(shù)-1(x<0)y=0(x=0)1(x>0)編一程式,輸入一個x值,輸出y值。main(){intx,y;scanf(“%d”,&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“x=%d,y=%d\n”,x,y);}4.2.3條件運算符如果if語句的形式如下所示:if(運算式1)
x=〈運算式2〉;elsex=〈運算式2〉;無論運算式1為“真”還是為“假”,都只執(zhí)行一個賦值語句且給同一個變數(shù)賦值。可以利用條件運算符,將這種語句簡單地用如下語句來表示。
x=〈運算式1〉?〈運算式2〉:〈運算式3〉;說明:即當運算式1的值為“真”時,將運算式2的值賦給變數(shù)x;當運算式1的值為“假”時,將運算式3的值賦給變數(shù)x。如:a=5,b=10,c=20;x=a>b?c*b:c/b;因為a>b為假,則x=c/b=2。例4.4輸入兩個數(shù),並將其中較大者顯示出來。#include“stdio.h”main(){inta,b,max;scanf(“%d%d”,&a,&b);max=(a>b)?a:b;printf(“max=%d”,max);}條件運算符也可以嵌套使用,如:Grade=(score>=90)?’A’:(score<=70)?’C’:’B’;當score>=90時,將字元‘A’賦給變數(shù)grade;當score<=70時,將字元‘C’賦給變數(shù)grade;否則將字元‘B’賦給變數(shù)grade.4.3switch語句Switch語句是多分支選擇語句,其一般形式如下:Switch(運算式)
{case〈常量運算式1〉:〈語句1〉
case〈常量運算式2〉:〈語句2〉
┆case〈常量運算式n〉:〈語句n〉
default:〈語句n+1〉
}可同時省略switch語句的執(zhí)行過程是:首先計算switch後面圓括號內(nèi)運算式的值,若此值等於某個case後面的常量運算式的值,則轉向該case後面的語句去執(zhí)行;若運算式的值不等於任何case後面的常量運算式的值,則轉向default後面的語句去執(zhí)行,如果沒有default部分,則將不執(zhí)行switch語句中的任何語句,而直接轉到switch語句後面的語句去執(zhí)行。說明:(1)switch後面圓括號內(nèi)的運算式的值和case後面的常量運算式的值,都必須是整型的或字元型的,不允許是浮點型的。(2)同一個switch語句中的所有case後面的常量運算式的值都必須互不相同。(3)switch語句中的case和default的出現(xiàn)次序是任意的,也就是說default也可以位於case的前面,且case的次序也不要求按常量運算式的大小順序排列。(4)由於switch語句中的“case常量運算式”部分只起標號的作用,而不進行條件判斷,所以,在執(zhí)行完某個case後的語句後,將自動轉到該語句後面的語句去執(zhí)行,直到遇到switch語句的右花括弧或“break”語句為此,而不再進行條件判斷。所以在執(zhí)行完一個case分支後,一般應跳出switch語句,轉到下一條語句執(zhí)行,這樣可在一個case的結束後,下一個case開始前,插入一個break語句,一但執(zhí)行到braek語句,將立即跳出switch語句,如:如:Switch(n){case1:x=1;case2:x=2;}當n=1時,將連續(xù)執(zhí)行下麵兩個語句:X=1;X=2;如:Switch(n){case1;x=1;Braek;Case2;X=2Braek}(5)每個case的後面即可以是一個句號,也可以是多個語句,當是多個語句的時候,也不需要用花括弧括起來。(6)多個case的後面可以共用一組執(zhí)行語句,如:Switch(n);{Case1:Case2:x=10;braet
┆}它表示當n=1或n=2時,都執(zhí)行下列兩個語句:X=10;Braek;例4.5從鍵盤輸入一個月份(1~12),並顯示該月份的英文名稱#include”stdio.h”Main(){intmonth;scanf(“%d”,&month);switch(month){case1:printf(“January”);braek;case2:printf(“February”);braek;case3:printf(“March”);braek;case4:printf(“April”);braek;case5:printf(“May”);braek;case6:printf(“June”);braek;case7:printf(“July”);braek;case8:printf(“August”);braek;case9:printf(“September”);braek;case10:printf(“October”);braek;case11:printf(“November”);braek;case12:printf(“Decmeber”);braek;Default:printf(“DataError!”);Break;}}4.4應用舉例例4.6輸入一個數(shù)值,求出它的平方根,若為負數(shù)時,求出它的複數(shù)平方根。#include“stdio.h”#include“math.h”main(){intn;floatroot;printf(“enteranumber:\t”);scanf(“%d”,&n);if(n>=0);{root=sqrt(n);printf(“sqrt(%d)=%f”,n,root);}else{root=sqrt(abs(n));printf(“sqrt(%d)=%fi”,n,root);}}例4.7求兩個數(shù)中最小值。#include“stdio.h”main(){intx,y,min;printf(“entertwointegers:\n”);acanf(“%d,%d,&x,&y);min=x<y?x:y;printf(“Min=%d”,min);}例4.8從鍵盤輸入一個操作符並進行相應和操作。#include“stdio.h”main(){intx=10,y=5,z;charop;scanf(“%c”,&op);switch(op){case’+’:z=x+y;braek;case’-’:z=x-y;braek;case’*’:z=x*y;braek;case’/’:z=x/y;braek;default:printf(“OperaterError!”);}printf(%d%c%d=%d”,x,op,y,z);}5.2while迴圈語句用while語句來實現(xiàn)“當型”迴圈結構。格式:while(運算式)〈語句〉/*循環(huán)體部分*/功能:當運算式的值為非0時,執(zhí)行while語句中的循環(huán)體。結構流程圖如圖所示。運算式語句0非0說明:(1)循環(huán)體如果包含一個以上語句,應該用花括弧括起來,以複合語句的形式出現(xiàn),否則while語句範圍只到while後面第一個分號處。(2)在循環(huán)體中應有使迴圈趨向於結束的語句,即設置修改迴圈條件的語句。(3)while語句的特點是先判斷運算式的值,然後執(zhí)行循環(huán)體中的語句,如果運算式的值一開始為假(值為0),退出迴圈,並轉入下一語句去執(zhí)行。例5.2求s=1+2+3+…100的值。結構流程圖如右圖。main(){inti,s=0;i=1;While(i<=100);{s=s+1;i++;}printf(“s=%d”,s);}運行結果s=5050i=1s=s+1i=i+1i≤100真假5.3do-while迴圈語句do-while迴圈語句,用來實現(xiàn)“直到型”迴圈結構。格式:do<語句>while(運算式)
功能:先執(zhí)行〈語句〉,後判斷運算式的值。它的執(zhí)行過程是:先執(zhí)行一次指定的語句,然後判斷運算式的值,當運算式的值為非零(”真“)時,返回重新執(zhí)行該語句,如此反復,直到運算式的值等於0為此止,此時迴圈結束。0(假)語句運算式非0(真)說明:(1)用while語句和用do-while語句處理同一問題時,若二者的循環(huán)體部分一樣,其結果也一樣。但在while後面的運算式一開始就為假(0值)時,兩種迴圈的結果是不同的。(2)如果do-while語句的循環(huán)體部分是多個語句組成的話,則必須用左右花括弧括起來,使其形成複合語句。main(){inti,s=0;scanf(“%d”,&i);do{s=s+i;i++;}while(i<=10);Printf(“s=%d”,s);}運行情況如下:1S=55Main(){intI,s=0;Scanf(“%d”,&i);While(i<=10);{s=s+I;i++;}Printf(“s=%d”,s);}運行情況如下:1S=55例5.3while和do-while迴圈的比較課堂練習5.1main(){inti=1,s=1;while(i<=25){s=s+2*I;i++;}printf(“%d\n”,s);}5.4for迴圈語句格式:for(運算式1;運算式2;運算式3)〈語句〉執(zhí)行過程:(1)先計算運算式1的值;(2)然後計算運算式2的值,若結果為真(非0),則執(zhí)行後面的循環(huán)體各語句,若假,則結束迴圈。(3)進行運算式3的計算,至此完成一次迴圈。(4)再次計算運算式2的值,開始再次迴圈,直到計算運算式2的值為0,中止迴圈。迴圈變數(shù)賦初值迴圈條件迴圈變數(shù)增量循環(huán)體部分求解運算式1求解運算式3for語句的下一語句語句運算式2假真說明:(1)for語句中條件測試總是在迴圈開始時進行;如果循環(huán)體部分是多個語句組成的,則必須用左、右花括弧括起來,使其成為一個複合語句。(2)for語句中的運算式1和運算式3即可以是一個簡單的運算式,也可以是逗號連接的多個運算式,此時的逗號作為運算符使用。如:for(s=0,i=1;i<=100;i++)s=s+i;或:for(i=1,j=100;i<=j;i++,j--)k=i+j;
在逗號運算式內(nèi)按自左至右順序求解,整個逗號運算式的值為其中最右邊的運算式的值。如:for(i=1;i<=100;i++,i++)s=s+i;相當於:for(i=1;i<=100;i=i+2)s=s+i;(3)for語句的一般形式中的“運算式1”可以省略,此時應在for語句之前給迴圈變數(shù)同賦初值。注意省略運算式1時,其後的分號不能省略。如:for(;i<=100;i++)s=s+i;執(zhí)行時,跳過“解運算式1”這一步,其他不變。(4)如果運算式2省略,即不判斷迴圈條件,迴圈無終止地進行下去。也就是認為運算式2始終為真。例如:for(i=1;;i++)s=s+i;相當於:i=1;while(1){s=s+I;i++;}(5)運算式3也可以省略,但此時程式設計應另外設法保證迴圈能正常結束。如:for(i=1;i<=100;){s=s+I;i++;}(6)可以省略運算式1和運算式3,只有運算式2,即只給迴圈條件。例:for(;i<=100;){s=s+i;i++;}相當於:while(i<=100){s=s+i;i++;}(7)3個運算式都可以省略,如:for(;;)語句相當於:while(1)語句即不設初值,不判斷條件(認為運算式2為真值),迴圈變數(shù)不增值,無終止地執(zhí)行循環(huán)體。(8)運算式1可以是設置迴圈變數(shù)初值的賦值運算式,也可以是與迴圈變數(shù)無關的其他運算式。如:for(s=0;i<=100;i++)s=s+i;運算式3也可以是與迴圈控制無關的任意運算式。(9)運算式2一般是關係運算式(如i<=100)或邏輯運算式(如a<b&&x<y),但也可以是數(shù)值運算式或字元運算式,只在其值為非0,就執(zhí)行循環(huán)體。分析下麵的例子:for(i=0;(c=getchar())!=‘\n’;i+=c);for(;(c=getchar()!=‘\n’;)printf(“%c”,c);例5.4用for語句,求s=1+2+3+…+100的值。main(){inti,s=0;for(i=1;i<=100;i=i+1)s=s+i;printf(“s=%d”,s);}運行結果S=50505.5迴圈的嵌套一個循環(huán)體內(nèi)又包含另一個完整的迴圈結構,稱為迴圈的嵌套。三種迴圈:while迴圈、do-while迴圈和for迴圈可以互相嵌套。如下面的幾種形式都是合法的。(1)while(){…while(){…}}(2)do{…do{…}while();
}while();(3)for(;;){…for(;;){…}}(5)for(;;){…while(){…}}(4)while(){…do{…}while();…}(6)do{…for(;;){}…} while();5.6幾種迴圈的比較(1)4種迴圈可以用來處理同一問題,一般性況下它們可以互相代替。(2)while和do-while迴圈,只在while後面指定迴圈條件,在循環(huán)體中包含反復執(zhí)行的操作語句,包括使迴圈趨於結束的語句。(3)用while和do-while迴圈時,迴圈變數(shù)初始化的操作應在while和do-while語句之前完成。為了語句可以在運算式1中實現(xiàn)迴圈的初始化。(4)while和for迴圈是先判斷運算式的值,後執(zhí)行循環(huán)體各語句;而do-while迴圈是先執(zhí)行循環(huán)體各語句,後判斷運算式的值。(5)對while迴圈、do-while迴圈和for迴圈,可以用break語句跳出迴圈,用continue語句結束本次迴圈,而對用if語句構成的迴圈,不能用braek語句和繼續(xù)語句進行控制。5.7break語句和continue語句5.7.1break語句格式:break;功能:該語句可以使程式運行時中途退出一個循環(huán)體。說明:在幾種迴圈中,主要是在迴圈次數(shù)不能預先確定的情況下使用break語句,在循環(huán)體中增加一個分支結構。當某個條件成立時,由break語句退出循環(huán)體,從而結束迴圈過程。
例5.6求圓的面積#definePI3.1415926main(){intr;floats;for(r=1;r<10;r++);{s=PI*r*r;if(s>100)break;}printf(“s=%f,s);}}說明:(1)braek語句不能用於迴圈語句和開關語句之外的任何其他語句。(2)在多重迴圈的情況下,使用break語句時,僅僅退出包含break語句的那層循環(huán)體,即break語句不能使程式控制退出一層以上的迴圈。5.7.2continue語句格式:continue;功能:結束本次迴圈,即跳過循環(huán)體中下面尚未執(zhí)行的語句,繼續(xù)進行下一次迴圈。說明:continue語句只結束本次迴圈,而不是終止整個迴圈的執(zhí)行。而break語句則是結束迴圈,不再進行判斷。如下圖所示:運算式1運算式2語句語句While迴圈的下一個語句假假真真break運算式1運算式2語句語句While迴圈的下一個語句假假真真continue例5.7輸出100~200中不能被7整除的數(shù)。main(){intn;for(n=100;n<=200;n++){if(n%7==0)continue;printf(“%d”,n);}5.8應用舉例例5.8輸出1~20中能被3整除的數(shù),並求出它們的和。main(){intn,s=0;for(n=1;n<=20;n++)if(n%3==0){s=s+n;printf(“%d,”,n);}printf(“\ns=%d”,s);}運行結果:3,6,9,12,15,18S=63例5.9用公式π/4=1-1/3+1/5-1/7+…求π的近似值,直到最後一項的絕對值小於10-6為止。#include”mach.h”main(){ints;floatn,t,pi;t=1;p=0;n=1.0;s=1;while((fabs(t))>=1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf(“pi=%10.6f\n”,pi);}運行結果pi=3.141397例5.10求Fibonacci數(shù)列:1,1,2,3,5,8,…前20個數(shù)。f1=1(n=1)f2=1(n=2)fn=fn-1+fn-2(n>=3)程式如下:main(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i<=10;i++){printf(“%8ld%8ld“,f1,f2);if(i%2==0)printf(“\n”);f1=f1+f2;f2=f2+f1;}}運行結果11235813213455891442333776109871597258441816765數(shù)組:是有序並具有相同性質的數(shù)據(jù)的集合,它是某種類型的數(shù)據(jù),按照一定的順序組成的。數(shù)組屬於構造類型。當處理大量的、同類型的數(shù)據(jù)時,利用數(shù)組很方便。6.1一維數(shù)
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 少兒藝術培訓家長合同(2篇)
- 通過率提升秘訣2024年體育經(jīng)紀人試題及答案
- 2024年籃球裁判員考試的參考資料與讀物 試題及答案
- 救生員職業(yè)生涯提升的建議與試題及答案
- 2024年模具設計師資格考試的成功案例分享試題與答案
- 2024年植保員考試復習策略與資料試題及答案
- 裁判員對重要比賽的預判能力試題及答案
- 解讀2024游泳救生員考試的關鍵試題及答案
- 2025年中國便攜平板吸入式DVD市場調查研究報告
- 農(nóng)作物種子合作機制試題及答案
- 企業(yè)業(yè)務賬號管理辦法
- YY 0793.2-2023血液透析和相關治療用液體的制備和質量管理第2部分:血液透析和相關治療用水
- 手術患者轉運交接及注意事項
- 思維障礙的診斷與治療方法
- 電力需求側靈活性系列:鋼鐵行業(yè)靈活性潛力概述
- 產(chǎn)房人文關懷護理課件
- 醫(yī)師三級查房課件
- 衛(wèi)生知識培訓資料
- 《統(tǒng)計學-基于Python》 課件 第6章 參數(shù)估計(Python-1)
- 物理學通俗演義
- 幼兒園小班語言公開課課件《小水珠找家》
評論
0/150
提交評論