版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言概述C語言發(fā)展史C語言的特點(diǎn)
一個(gè)簡單的C程序一個(gè)完整的C程序C語言程序的格式C語言發(fā)展史程序語言簡述機(jī)器語言匯編語言高級(jí)語言C語言歷史1983年,美國國家標(biāo)準(zhǔn)委員會(huì)(ANSI)對(duì)C語言進(jìn)行了標(biāo)準(zhǔn)化,于1983年頒布了第一個(gè)C語言草案(83ANSIC),后來于1987年又頒布了另一個(gè)C語言標(biāo)準(zhǔn)草案(87ANSIC),最新的C語言標(biāo)準(zhǔn)C99于1999年頒布,并在2000年3月被ANSI采用。但是由于未得到主流編譯器廠家的支持,C99并未得到廣泛使用。盡管C語言是在大型商業(yè)機(jī)構(gòu)和學(xué)術(shù)界的研究實(shí)驗(yàn)室研發(fā)的,但是當(dāng)開發(fā)者們?yōu)榈谝慌_(tái)個(gè)人計(jì)算機(jī)提供C編譯系統(tǒng)之后,C語言就得以廣泛傳播,并為大多數(shù)程序員所接受。對(duì)MS-DOS操作系統(tǒng)來說,系統(tǒng)軟件和實(shí)用程序都是用C語言編寫的。Windows操作系統(tǒng)大部分也是用C語言編寫的。C語言的特點(diǎn)C語言特點(diǎn)高效性靈活性功能豐富表達(dá)力強(qiáng)移植性好一個(gè)簡單的C程序一個(gè)簡單的C語言實(shí)例輸出顯示一條信息“Hello,world!I’mcoming!”#include<stdio.h>intmain(){ printf("Hello,world!I'mcoming!\n"); /*輸出要顯示的字符串*/ return0; /*程序返回0*/}一個(gè)完整的C程序一個(gè)完整的C程序#include<stdio.h> /*包含頭文件*/#defineHeight10 /*定義常量*/intcalculate(intLong,intWidth); /*函數(shù)聲明*/intmain() /*主函數(shù)main*/{ intm_Long; /*定義整型變量,表示長度*/ intm_Width; /*定義整型變量,表示寬度*/ intresult; /*定義整型變量,表示長方體的體積*/ printf("長方形的高度為:%d\n",Height);/*顯示提示*/
printf("請(qǐng)輸入長度\n"); /*顯示提示*/ scanf("%d",&m_Long); /*輸入長方體的長度*/ printf("請(qǐng)輸入寬度\n"); /*顯示提示*/ scanf("%d",&m_Width); /*輸入長方體的寬度*/ result=calculate(m_Long,m_Width);/*調(diào)用函數(shù),計(jì)算體積*/ printf("長方體的體積是:"); /*顯示提示*/ printf("%d\n",result); /*輸出體積大小*/ return0; /*返回整形0*/}intcalculate(intLong,intWidth) /*定義計(jì)算體積函數(shù)*/{ intresult=Long*Width*Height; /*具體計(jì)算體積*/ returnresult; /*將計(jì)算的體積結(jié)果返回*/}程序結(jié)果程序流程分析程序執(zhí)行過程總結(jié)(1)包含程序所需要的頭文件。(2)定義一個(gè)常量Height,其值代表為10。(3)對(duì)calculate函數(shù)進(jìn)行聲明。(4)進(jìn)入main函數(shù),程序開始執(zhí)行。(5)在main函數(shù)中,首先定義3個(gè)整型變量,3個(gè)變量分別代表著長方體的長度、寬度和長方體的體積。(6)顯示提示文字,然后根據(jù)顯示的文字輸入有關(guān)的數(shù)據(jù)。(7)當(dāng)將長方體的長度和寬度都輸入之后會(huì)調(diào)用calculate函數(shù),計(jì)算長方體的體積。(8)定義calculate函數(shù)的位置在main函數(shù)的下面,在calculate函數(shù)體內(nèi)將計(jì)算長方體體積的結(jié)構(gòu)進(jìn)行返回。(9)在main函數(shù)中,result變量得到了calculate函數(shù)返回的結(jié)果。(10)通過輸出語句將其中長方體的體積顯示出來。(11)程序結(jié)束。C語言程序的格式C語言程序的格式特點(diǎn)主函數(shù)mainC程序整體是由函數(shù)構(gòu)成的函數(shù)體的內(nèi)容在“{}”中每一個(gè)執(zhí)行語句都以“;”結(jié)尾英文字符大小通用空格、空行的使用開發(fā)環(huán)境TC主界面TurboC2.0VisualC++6.0主界面VisualC++6.0算法算法的基本概念算法的描述
算法的基本概念算法的特性有窮性確定性可行性輸入輸出算法的優(yōu)劣衡量一個(gè)算法的好壞,通常要從以下幾個(gè)方面來分析:正確性可讀性健壯性時(shí)間復(fù)雜度與空間復(fù)雜度算法的描述自然語言自然語言就是人們?nèi)粘S玫恼Z言,這種表示方式通俗易懂,下面通過實(shí)例具體介紹?!緦?shí)例2.1】求n!。(1)定義3個(gè)變量i、n及mul,并為i和mul均賦初值為1。(2)從鍵盤中輸入一個(gè)數(shù)賦給n。(3)將mul乘以i的結(jié)果賦給mul。(4)i的值加1,判斷i的值是否大于n,如果大于n,則執(zhí)行步驟(5),否則執(zhí)行步驟(3)。(5)將mul的結(jié)果輸出?!緦?shí)例2.2】任意輸入3個(gè)數(shù),求這3個(gè)數(shù)中的最小數(shù)。(1)定義4個(gè)變量分別為x、y、z以及min。(2)輸入大小不同的3個(gè)數(shù)分別賦給x、y、z。(3)判斷x是否小于y,如果小于,則將x的值賦給min,否則將y的值賦給min。(4)判斷min是否小于z,如果小于,則執(zhí)行步驟(5),否則將z的值賦給min。(5)將min的值輸出。流程圖
流程圖是一種傳統(tǒng)的算法表示法,它用一些圖框來代表各種不同性質(zhì)的操作,用流程線來指示算法的執(zhí)行方向。由于它直觀形象,易于理解,所以應(yīng)用廣泛,特別是在語言發(fā)展的早期階段,只有通過流程圖才能簡明地表述算法。流程圖符號(hào)1【實(shí)例2.3】從鍵盤中輸入3個(gè)數(shù)分別賦給a、b、c,要求按大小順序把它們打印出來。流程圖如圖所示3種基本結(jié)構(gòu)2Bohra和Jacopini為了提高算法的質(zhì)量,經(jīng)研究提出了3種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),因?yàn)槿魏我粋€(gè)算法都可由這3種基本結(jié)構(gòu)組成。這3種基本結(jié)構(gòu)之間可以并列,可以相互包含,但不允許交叉,不允許從一個(gè)結(jié)構(gòu)直接轉(zhuǎn)到另一個(gè)結(jié)構(gòu)的內(nèi)部去。整個(gè)算法都是由3種基本結(jié)構(gòu)組成的,所以只要規(guī)定好3種基本結(jié)構(gòu)的流程圖的畫法,就可以畫出任何算法的流程圖。順序結(jié)構(gòu)順序結(jié)構(gòu)是簡單的線性結(jié)構(gòu),在順序結(jié)構(gòu)的程序里,各操作是按照它們出現(xiàn)的先后順序執(zhí)行的,如圖所示。在執(zhí)行完A框所指定的操作后,接著執(zhí)行B框所指定的操作,這個(gè)結(jié)構(gòu)里只有一個(gè)入口點(diǎn)A和一個(gè)出口點(diǎn)B?!緦?shí)例2.4】輸入兩個(gè)數(shù)分別賦給變量i和j,再將這兩個(gè)數(shù)分別輸出。本實(shí)例流程圖可以采用順序結(jié)構(gòu)來實(shí)現(xiàn),如圖所示。
輸入兩變量的值選擇結(jié)構(gòu)選擇結(jié)構(gòu)也叫分支結(jié)構(gòu),如圖所示。選擇結(jié)構(gòu)中必須包含一個(gè)判斷框。圖中所代表的含義是根據(jù)給定的條件p是否成立選擇執(zhí)行A框或者是B框。下圖所代表的含義是根據(jù)給定的條件P進(jìn)行判斷,如果條件成立則執(zhí)行A框,否則什么也不做?!緦?shí)例2.5】輸入一個(gè)數(shù),判斷該數(shù)是否為偶數(shù),并給出相應(yīng)提示。本實(shí)例流程圖可以采用選擇結(jié)構(gòu)來實(shí)現(xiàn),如圖所示。循環(huán)結(jié)構(gòu)在循環(huán)結(jié)構(gòu)中,反復(fù)地執(zhí)行一系列操作,直到條件不成立時(shí)才終止循環(huán)。按照判斷條件出現(xiàn)的位置,可將循環(huán)結(jié)構(gòu)分為當(dāng)型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu)。當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)是先判斷條件P是否成立,如果成立,則執(zhí)行A框;執(zhí)行完A框后,再判斷條件P是否成立,如果成立,接著再執(zhí)行A框;如此反復(fù),直到條件P不成立為止,此時(shí)不執(zhí)行A框,跳出循環(huán)。直到型循環(huán)結(jié)構(gòu)直到型循環(huán)是先執(zhí)行A框,然后判斷條件P是否成立,如果條件P成立則再執(zhí)行A;然后判斷條件P是否成立,如果成立,接著再執(zhí)行A框;如此反復(fù),直到條件P不成立,此時(shí)不執(zhí)行A框,跳出循環(huán)?!緦?shí)例2.6】求1和100之間(包括1和100)所有整數(shù)之和。本實(shí)例流程圖可以用當(dāng)型循環(huán)結(jié)構(gòu)來表示,如圖1所示。本實(shí)例流程圖也可以用直到型循環(huán)結(jié)構(gòu)來表示,如圖2所示。圖1圖2N-S流程圖N-S圖是另一種算法表示法,是由美國人I.Nassi和B.Shneiderman共同提出的,其根據(jù)是:既然任何算法都是由前面介紹的3種結(jié)構(gòu)組成,則各基本結(jié)構(gòu)之間的流程線就是多余的,因此去掉了所有的流程線,將全部的算法寫在一個(gè)矩形框內(nèi)。N-S圖也是算法的一種結(jié)構(gòu)化描述方法,同樣也有3種基本結(jié)構(gòu),下面分別進(jìn)行介紹:順序結(jié)構(gòu)的N-S流程圖1舉例:輸出變量的值選擇結(jié)構(gòu)的N-S流程圖2舉例:判斷偶數(shù)當(dāng)型循環(huán)的N-S流程圖3舉例:當(dāng)型循環(huán)求和 直到型循環(huán)的N-S流程圖3舉例:直到型循環(huán)求和 【實(shí)例2.7】從鍵盤中輸入一個(gè)數(shù)n,求n!。該程序流程圖如圖所示。該程序的N-S流程圖如圖所示?!緦?shí)例2.8】求兩個(gè)數(shù)a和b的最大公約數(shù)。流程圖如圖所示。N-S流程圖如圖所示。數(shù)據(jù)類型0807編程規(guī)范關(guān)鍵字標(biāo)識(shí)符數(shù)據(jù)類型常量變量變量的存儲(chǔ)類型混合運(yùn)算編程規(guī)范代碼中的編程規(guī)范代碼縮進(jìn)1代碼縮進(jìn)統(tǒng)一為4個(gè)字符。不采用空格,而用<Tab>鍵制表位。#include<stdio.h>intmain() /*主函數(shù)main*/{ intiResult=0; /*定義變量*/
inti; printf("由1加到100的結(jié)果是:"); /*輸出語句*/
for(i=1;i<100;i++) { iResult=i+iResult; } printf("%d\n",iResult); /*輸出結(jié)果*/
return0; /*結(jié)束返回*/}示例代碼縮進(jìn)變量、常量命名規(guī)范2常量命名統(tǒng)一為大寫格式。如果是成員變量,均以m_開始。如果是普通變量,取與實(shí)際意義相關(guān)的名稱,要在前面添加類型的首字母,并且名稱的首字母要大寫。如果是指針,則為其標(biāo)識(shí)符前添加p字符,并且名稱首字母要大寫。例如:#defineAGE20 /*定義常量*/intm_iAge; /*定義整型成員變量*/intiNumber; /*定義普通整型變量*/int*pAge; /*定義指針變量*/函數(shù)的命名規(guī)范3在定義函數(shù)時(shí),函數(shù)名的首字母要大寫,其后的字母大小寫混合。例如:intAddTwoNum(intnum1,intnum2);注釋4盡量采用行注釋。如果行注釋與代碼處于一行,則注釋應(yīng)位于代碼右方。如果連續(xù)出現(xiàn)多個(gè)行注釋,并且代碼較短,則應(yīng)對(duì)齊注釋。例如:intiLong; /*長度*/intiWidth; /*寬度*/intiHieght /*高度*/關(guān)鍵字C語言中的關(guān)鍵字autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternunionreturnconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledowhilestaticif標(biāo)識(shí)符標(biāo)識(shí)符是什么?在C語言中為了在程序的運(yùn)行過程中可以使用變量、常量、函數(shù)、數(shù)組等,就要為這些形式設(shè)定一個(gè)名稱,而設(shè)定的名稱就是所謂的標(biāo)識(shí)符。C語言標(biāo)識(shí)符應(yīng)該遵守的一些命名規(guī)則所有標(biāo)識(shí)符必須由字母或下劃線開頭,而不能使用數(shù)字或者符號(hào)作為開頭int!number; /*錯(cuò)誤,標(biāo)識(shí)符第一個(gè)字符不能為符號(hào)*/int2hao; /*錯(cuò)誤,標(biāo)識(shí)符第一個(gè)字符不能為數(shù)字*/intnumber; /*正確,標(biāo)識(shí)符第一個(gè)字符為字母*/int_hao; /*正確,標(biāo)識(shí)符第一個(gè)字符為下劃線*/在設(shè)定標(biāo)識(shí)符時(shí),除開頭外,其他位置都可以由字母、下劃線或數(shù)字組成intgood_way; /*正確,標(biāo)識(shí)符中可以有下劃線*/在標(biāo)識(shí)符中,可以有數(shù)字intbus7; /*正確,標(biāo)識(shí)符中可以有數(shù)字*/intcar6V; /*正確*/英文字母的大小寫代表不同的標(biāo)識(shí)符,也就是說,在C語言中是區(qū)分大小寫字母的intmingri; /*全部是小寫*/intMINGRI; /*全部是大寫*/intMingRi; /*一部分是小寫,一部分是大寫*/標(biāo)識(shí)符不能是關(guān)鍵字intint; /*錯(cuò)誤!*/intInt; /*正確,改變標(biāo)識(shí)符中的字母為大寫*/標(biāo)識(shí)符的命名最好具有相關(guān)的含義inta; /*代表長度*/intb; /*代表寬度*/intc; /*代表高度*/intiLong;intiWidth;intiHeight;ANSI標(biāo)準(zhǔn)規(guī)定,標(biāo)識(shí)符可以為任意長度,但外部名必須至少能由前8個(gè)字符唯一地區(qū)分?jǐn)?shù)據(jù)類型數(shù)據(jù)類型的分類常量整型常量無符號(hào)短整型無符號(hào)短整型的取值范圍是0~65535,而符號(hào)短整型的取值范圍是-32768~+32767,這些都是16位整型常量的范圍整型無符號(hào)短整型的取值范圍是0~65535,而符號(hào)短整型的取值范圍是-32768~+32767,這些都是16位整型常量的范圍實(shí)型常量科學(xué)計(jì)數(shù)方式科學(xué)計(jì)數(shù)方式就是使用十進(jìn)制的小數(shù)方法描述實(shí)型,例如:SciNum1=123.45; /*科學(xué)計(jì)數(shù)法*/SciNum2=0.5458;指數(shù)方式有時(shí)候?qū)嵭头浅4蠡蛘叻浅P?,這樣使用科學(xué)計(jì)數(shù)方式是不利于觀察的,這時(shí)可以使用指數(shù)方法顯示實(shí)型常量。其中,使用字母e或者E進(jìn)行指數(shù)顯示,如45e2表示的就是4500,而45e-2表示的就是0.45。例如上面的SciNum1和SciNum2代表的實(shí)型常量,改使用指數(shù)方式顯示這兩個(gè)實(shí)型常量如下所示:SciNum1=1.2345e2; /*指數(shù)方式顯示*/SciNum2=5.458e-1;字符型常量字符常量使用單撇號(hào)括起一個(gè)字符,這種形式就是字符常量。例如,'A'、'#'、'b'等都是正確的字符常量。在這里需要注意以下幾點(diǎn)有關(guān)使用字符常量的注意事項(xiàng)。字符常量中只能包括一個(gè)字符,不是字符串。例如:'A'是正確的,但是用'AB'來表示字符常量就是錯(cuò)誤的。字符常量是區(qū)分大小寫的。例如:'A'字符和'a'字符是不一樣的,這兩個(gè)字符代表著不同的字符常量。''這對(duì)單撇號(hào)代表著定界符,不屬于字符常量中的一部分。字符型常量字符串常量字符串常量是用一組雙引號(hào)括起來的若干字符序列。如果在字符串中一個(gè)字符都沒有,將其稱作空串,此時(shí)字符串的長度為0。例如“Haveagoodday!”和“beautifulday”即為字符串常量。C語言中存儲(chǔ)字符串常量時(shí),系統(tǒng)會(huì)在字符串的末尾自動(dòng)加一個(gè)“\0”作為字符串的結(jié)束標(biāo)志。例如字符串“welcome”在內(nèi)存中的存儲(chǔ)形式如圖所示。轉(zhuǎn)義字符轉(zhuǎn)義符號(hào)在字符常量中是一種特殊的字符。轉(zhuǎn)義字符是以反斜杠“\”開頭的字符,后面跟一個(gè)或幾個(gè)字符。常用的轉(zhuǎn)義字符及其含義如表所示。轉(zhuǎn)義字符轉(zhuǎn)義字符的意義\n回車換行\(zhòng)t橫向跳到下一制表位置\v豎向跳格\b退格\r回車\f走紙換頁\\反斜線符\'單引號(hào)符\a鳴鈴\ddd1\xhh1符號(hào)常量【實(shí)例】符號(hào)常量的使用。#include<stdio.h>#definePAI3.14 /*定義符號(hào)常量*/intmain(){ doublefRadius; /*定義半徑變量*/ doublefResult=0; /*定義結(jié)果變量*/ printf("請(qǐng)輸入圓的半徑:"); /*提示*/ scanf("%lf",&fRadius); /*輸入數(shù)據(jù)*/ fResult=fRadius*fRadius*PAI; /*進(jìn)行計(jì)算*/ printf("圓的面積為:%lf\n",fResult); /*顯示結(jié)果*/ return0;
/*程序結(jié)束*/}變量整型變量整型變量是用來存儲(chǔ)整型數(shù)值的變量。整型變量可以分為6種類型,其中基本類型的符號(hào)使用int關(guān)鍵字,在此基礎(chǔ)上可以根據(jù)需要加上一些符號(hào)進(jìn)行修飾,如關(guān)鍵字short或long。下表是這6種類型的介紹。類型名稱關(guān)鍵字有符號(hào)基本整型[signed]int無符號(hào)基本整型unsigned[int]有符號(hào)短整型[signed]short[int]無符號(hào)短整型unsignedshort[int]有符號(hào)長整型[signed]long[int]無符號(hào)長整型unsignedlong[int]實(shí)型變量實(shí)型變量也稱為浮點(diǎn)型變量,是指用來存儲(chǔ)實(shí)型數(shù)值的變量,其中實(shí)型數(shù)值是由整數(shù)和小數(shù)兩部分組成的。實(shí)型變量根據(jù)實(shí)型的精度也可以分為3種類型,包括單精度類型、雙精度類型和長雙精度類型。下表是這3種類型的介紹。類型名稱關(guān)鍵字單精度類型float雙精度類型double長雙精度類型longdouble字符型變量字符型變量是用來存儲(chǔ)字符常量的變量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。字符型變量在內(nèi)存空間中占一個(gè)字節(jié),取值范圍是-128~127。定義一個(gè)字符型變量的方法是使用關(guān)鍵字char,例如要定義一個(gè)字符型的變量cChar,為cChar變量賦值為‘a(chǎn)’的方法如下:
charcChar; /*定義字符型變量*/ cChar='a'; /*為變量賦值*/變量的存儲(chǔ)類別動(dòng)態(tài)存儲(chǔ)與靜態(tài)存儲(chǔ) 從變量的產(chǎn)生時(shí)間上可以分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)。 靜態(tài)存儲(chǔ)就是指程序運(yùn)行分配的固定的存儲(chǔ)方式,而動(dòng)態(tài)存儲(chǔ)則是在程序運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)地分配存儲(chǔ)空間。auto變量 auto關(guān)鍵字就是修飾一個(gè)局部變量為自動(dòng)的,這意味著每次執(zhí)行到定義該變量的時(shí)候,都會(huì)產(chǎn)生一個(gè)新的變量,并且對(duì)其重新進(jìn)行初始化。static變量static變量為靜態(tài)變量,將函數(shù)的內(nèi)部和外部變量聲明成static變量的意義是不一樣的(有關(guān)函數(shù)的內(nèi)容在本書的后續(xù)章節(jié)進(jìn)行介紹)。不過對(duì)于局部變量來說,static變量是和auto變量相對(duì)而言的。盡管兩者的作用域都是僅限于聲明變量的函數(shù)之中,但是在語句塊執(zhí)行期間,static變量將始終保持它的值,并且初始化操作只在第一次執(zhí)行時(shí)起作用。在隨后的運(yùn)行過程中,變量將保持語句塊上一次執(zhí)行時(shí)的值。register變量register變量稱為寄存器存儲(chǔ)類變量。使用register的目的在與讓程序員指定把某個(gè)局部變量存放在計(jì)算機(jī)的某個(gè)硬件寄存器而不是內(nèi)存中。這樣的好處是可以提高程序的運(yùn)行速度。不過,這只是反映了程序員的主觀意愿,實(shí)際上編輯器可以忽略register對(duì)變量的修飾。用戶無法獲得寄存器變量的地址,因?yàn)榻^大多數(shù)計(jì)算機(jī)的硬件寄存器都不占用內(nèi)存地址。而且,即使編譯器忽略register而把變量存放在可設(shè)定的內(nèi)存中,也是無法獲取變量的地址的。如果想有效地利用寄存器register關(guān)鍵字,必須像匯編語言程序員那樣了解處理器的內(nèi)部結(jié)構(gòu),知道可用于存放變量的寄存器的數(shù)量、種類以及工作方式。但是,在不同的計(jì)算機(jī)對(duì)于這些細(xì)節(jié)可能是不同的,因此,對(duì)于一個(gè)要具備可移植的程序來說,register的作用并不大。extern變量extern變量稱為外部存儲(chǔ)變量。extern聲明了程序中將要用到但尚未定義的外部變量。通常,外部存儲(chǔ)類都用于聲明在另一個(gè)轉(zhuǎn)換單元中定義的變量。一個(gè)工程是由多個(gè)C文件組成的。這些源代碼文件分別編譯,然后鏈接成一個(gè)可執(zhí)行模塊。把這樣的一個(gè)程序作為一個(gè)工程進(jìn)行管理,并且生成一個(gè)工程文件來記錄所包含的所有源代碼文件。 混合運(yùn)算混合運(yùn)算不同類型之間可以進(jìn)行混合運(yùn)算,例如10+'a'-1.5+3.2*6。在進(jìn)行這樣的計(jì)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)化成同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)化的方式如圖所示。小結(jié)本章首先介紹了有關(guān)編寫程序的一些規(guī)范,這些規(guī)范雖然不是必需的,但是一個(gè)好的編程習(xí)慣應(yīng)該是每一個(gè)程序員必備的。然后介紹了有關(guān)常量的內(nèi)容,其中通過講解和實(shí)例對(duì)其進(jìn)行闡述。了解有關(guān)常量的內(nèi)容后,引出了有關(guān)變量的知識(shí),對(duì)變量賦這些常量值,使得在程序中可以使用變量存儲(chǔ)數(shù)值。最后通過介紹變量的存儲(chǔ)類別,進(jìn)一步說明了有關(guān)變量的具體使用情況。運(yùn)算符與表達(dá)式0807表達(dá)式賦值運(yùn)算符與賦值表達(dá)式算術(shù)運(yùn)算符與表達(dá)式關(guān)系運(yùn)算符與表達(dá)式常邏輯運(yùn)算符與表達(dá)式量位邏輯運(yùn)算符與表達(dá)式逗號(hào)運(yùn)算符與表達(dá)式復(fù)合賦值運(yùn)算符表達(dá)式函數(shù)概述表達(dá)式是C語言的主體。在C語言中,表達(dá)式由操作符和操作數(shù)組成。最簡單的表達(dá)式可以只含有一個(gè)操作數(shù)。根據(jù)表達(dá)式含有的操作符的個(gè)數(shù),可以把表達(dá)式分為簡單表達(dá)式和復(fù)雜表達(dá)式兩種:簡單表達(dá)式是只含有一個(gè)操作符的表達(dá)式,而復(fù)雜表達(dá)式是包含兩個(gè)或兩個(gè)以上操作符的表達(dá)式。下面通過幾個(gè)表達(dá)式進(jìn)行觀察:5+5iNumber+9iBase+(iPay*iDay)表達(dá)式本身什么事情也不做,只是返回結(jié)果值。在程序不對(duì)返回的結(jié)果值進(jìn)行任何操作的情況下,返回的結(jié)果值不起任何作用,也就是忽略返回的值。表達(dá)式產(chǎn)生作用有兩種情況:
放在賦值語句的右側(cè)(下面要講解)。
放在函數(shù)的參數(shù)中(在“函數(shù)”章進(jìn)行講解)。表達(dá)式返回的結(jié)果值是有類型的。表達(dá)式隱含的數(shù)據(jù)類型取決于組成表達(dá)式的變量和常量的類型。賦值運(yùn)算符與賦值表達(dá)式變量賦初值在聲明變量時(shí),可以為其賦一個(gè)初值,就是將一個(gè)常數(shù)或者一個(gè)表達(dá)式的結(jié)果賦值給一個(gè)變量,變量中保存的內(nèi)容就是這個(gè)常量或者賦值語句中表達(dá)式的值。這就是為變量賦初值。
先來看一下為變量賦值為常數(shù)的情況。一般的形式是:類型變量名=常數(shù);其中的變量名也稱為變量的標(biāo)識(shí)符。通過變量賦初值的一般形式,以下是相關(guān)的代碼實(shí)例:charcChar='A';intiFirst=100;floatfPlace=1450.78f;
賦值表達(dá)式為變量賦初值。賦值語句把一個(gè)表達(dá)式的結(jié)果值賦給一個(gè)變量。一般的形式是:類型變量名=表達(dá)式;可以看到,其一般形式與常數(shù)賦值的一般形式是相似的,例如:intiAmount=1+2;floatfPrice=fBase+Day*3;在上面的舉例中,得到賦值的變量iAmount和fPrice稱為左值,因?yàn)樗霈F(xiàn)的位置在賦值語句的左側(cè)。產(chǎn)生值的表達(dá)式稱為右值,因?yàn)樗霈F(xiàn)的位置在表達(dá)式的右側(cè)。#include<stdio.h>intmain(){ intiHoursWorded=8;/*定義變量,為變量賦初值。表示工作時(shí)間*/ intiHourlyRate; /*聲明變量,表示一個(gè)小時(shí)的薪水*/ intiGrossPay; /*聲明變量,表示得到的工資*/ iHourlyRate=13; /*為變量賦值*/ iGrossPay=iHoursWorded*iHourlyRate; /*將表達(dá)式的結(jié)果賦值給變量*/ printf("TheHoursWordedis:%d\n",iHoursWorded); /*顯示工作時(shí)間變量*/ printf("TheHourlyRateis:%d\n",iHourlyRate);/*顯示一個(gè)小時(shí)的薪水*/ printf("TheGrossPayis:%d\n",iGrossPay);/*顯示工作所得的工資*/ return0; /*程序結(jié)束*/}【實(shí)例】為變量賦初值。為變量賦初值的操作是編程時(shí)常見的操作。在本實(shí)例中,模擬鐘點(diǎn)工的計(jì)費(fèi)情況,使用賦值語句和表達(dá)式得出鐘點(diǎn)工工作8個(gè)小時(shí)后所得的薪水。自動(dòng)類型轉(zhuǎn)換數(shù)值類型有很多種,如字符型、整型、長整型和實(shí)型等,因?yàn)檫@些類型的變量、長度和符號(hào)特性都不同,所以取值范圍也不同。混合使用這些類型時(shí)會(huì)出現(xiàn)什么情況呢?第3章已經(jīng)對(duì)此有所介紹。C語言中使用一些特定的轉(zhuǎn)化規(guī)則。根據(jù)這些轉(zhuǎn)化規(guī)則,數(shù)值類型變量可以混合使用。如果把比較短的數(shù)值類型變量的值賦給比較長的數(shù)值類型變量,那么比較短的數(shù)值類型變量中的值會(huì)升級(jí)表示為比較長的數(shù)值類型,數(shù)據(jù)信息不會(huì)丟失。但是,如果把較長的數(shù)值類型變量的值賦給比較短的數(shù)值類型變量,那么數(shù)據(jù)就會(huì)降低級(jí)別表示,并且當(dāng)數(shù)據(jù)大小超過比較短的數(shù)值類型的可表示范圍時(shí),就會(huì)發(fā)生數(shù)據(jù)截?cái)?。有些編譯器遇到這種情況時(shí)就會(huì)發(fā)出警告信息,例如:floati=10.1f;intj=i;此時(shí)編譯器會(huì)發(fā)出警告,如圖所示。強(qiáng)制類型轉(zhuǎn)換通過自動(dòng)類型轉(zhuǎn)化的介紹得知,如果數(shù)據(jù)類型不同,就可以根據(jù)不同情況自動(dòng)進(jìn)行類型轉(zhuǎn)化,但此時(shí)編譯器會(huì)提示警告信息。這個(gè)時(shí)候如果使用強(qiáng)制類型轉(zhuǎn)化告知編譯器,就不會(huì)出現(xiàn)警告。強(qiáng)制類型轉(zhuǎn)化的一般形式為:(類型名)(表達(dá)式)例如在上述不同變量類型轉(zhuǎn)化時(shí)使用強(qiáng)制類型轉(zhuǎn)化的方法:floati=10.1f;intj=(int)i; /*進(jìn)行強(qiáng)制類型轉(zhuǎn)化*/在代碼中可以看到在變量前使用包含要轉(zhuǎn)化類型的括號(hào),這樣就對(duì)變量進(jìn)行了強(qiáng)制類型轉(zhuǎn)化。#include<stdio.h>intmain(){ charcChar; /*字符型變量*/ shortintiShort; /*短整型變量*/ intiInt; /*整型變量*/ floatfFloat=70000; /*單精度浮點(diǎn)型*/ cChar=(char)fFloat; /*強(qiáng)制轉(zhuǎn)化賦值*/ iShort=(short)fFloat; iInt=(int)fFloat; printf("thecharis:%c\n",cChar);/*輸出字符變量值*/ printf("thelongis:%ld\n",iShort);/*輸出短整型變量值*/ printf("theintis:%d\n",iInt); /*輸出整型變量值*/ printf("thefloatis:%f\n",fFloat);/*輸出單精度浮點(diǎn)型變量值*/ return0; /*程序結(jié)束*/}【實(shí)例】顯示類型轉(zhuǎn)化的結(jié)果。在本實(shí)例中,通過不同類型變量之間的賦值,將賦值操作后的結(jié)果進(jìn)行輸出,觀察類型轉(zhuǎn)化后的結(jié)果。算術(shù)運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括:兩個(gè)單目運(yùn)算符(正和負(fù)),5個(gè)雙目運(yùn)算符乘法、除法、取模、加法和減法。具體符號(hào)和對(duì)應(yīng)的功能如表所示。符號(hào)功能+單目正-單目負(fù)*乘法/除法%取模+加法-減法在上述的算術(shù)運(yùn)算符中,取模運(yùn)算符(%)用于計(jì)算兩個(gè)整數(shù)相除得到的余數(shù),并且取模運(yùn)算符的兩側(cè)均為整數(shù),例如7%4的結(jié)果是3。算術(shù)表達(dá)式在表達(dá)式中使用算術(shù)運(yùn)算符,則將表達(dá)式稱為算術(shù)表達(dá)式。下面是一些算術(shù)表達(dá)式的例子,其中使用的運(yùn)算符就是表4.1中所列出的算術(shù)運(yùn)算符:Number=(3+5)/Rate;Height=Top-Bottom+1;Area=Height*Width;需要說明的是,兩個(gè)整數(shù)相除的結(jié)果為整數(shù),例如7/4的結(jié)果為1,舍去的是小數(shù)部分。但是,如果其中的一個(gè)數(shù)是負(fù)數(shù)時(shí)會(huì)出現(xiàn)什么情況呢?此時(shí)機(jī)器會(huì)采取“向零取整”的方法,即為-1,取整后向0靠攏。優(yōu)先級(jí)與結(jié)合性C語言中規(guī)定了各種運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,首先來看一下有關(guān)算術(shù)運(yùn)算的優(yōu)先級(jí):
算術(shù)運(yùn)算符的優(yōu)先級(jí)在表達(dá)式求值時(shí),先按照運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,算術(shù)運(yùn)算符中*、/、%的優(yōu)先級(jí)別高于+、-的級(jí)別。例如,如果在表達(dá)式中同時(shí)出現(xiàn)*和+,那么先運(yùn)算乘法:R=x+y*z;在表達(dá)式中,因?yàn)?比+的優(yōu)先級(jí)高,所以會(huì)先進(jìn)行y*z的運(yùn)算,最后加上x。優(yōu)先級(jí)與結(jié)合性
算術(shù)運(yùn)算符的結(jié)合性當(dāng)算術(shù)運(yùn)算符的優(yōu)先級(jí)相同時(shí),結(jié)合方向?yàn)椤白宰笙蛴摇?。例如:a-b+c因?yàn)闇p法和加法的優(yōu)先級(jí)是相同的,所以b先與減號(hào)相結(jié)合,執(zhí)行a-b的操作,然后執(zhí)行加c的操作。這樣的操作過程就稱為“自左向右的結(jié)合性”,在后面的介紹中還可以看到“自右向左的結(jié)合性”。本章小結(jié)處將會(huì)給出有關(guān)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性的表格,讀者可以進(jìn)行參照。自增自減運(yùn)算符在C語言中還有兩個(gè)特殊的運(yùn)算符:自增運(yùn)算符“++”和自減運(yùn)算符“--”。自增運(yùn)算符和自減運(yùn)算符對(duì)變量的操作分別是增加1和減少1,如表所示。符號(hào)功能++自增運(yùn)算符--自減運(yùn)算符自增運(yùn)算符和自減運(yùn)算符可以放在變量的前面或者后面,放在變量前面稱為前綴,放在后面稱為后綴,使用的一般方法如下所示。--Counter; /*自減前綴符號(hào)*/Grade--; /*自減后綴符號(hào)*/++Age; /*自增前綴符號(hào)*/Height++; /*自增后綴符號(hào)*/在上面這些例子中,運(yùn)算符的前后位置不重要,因?yàn)樗玫降慕Y(jié)果是一樣的,自減就是減1,自增就是加1。關(guān)系運(yùn)算符與表達(dá)式關(guān)系運(yùn)算符關(guān)系運(yùn)算符包括大于運(yùn)算符、大于等于運(yùn)算符、小于運(yùn)算符、小于等于運(yùn)算符、等于運(yùn)算符、不等于運(yùn)算符。表中列出了這6種關(guān)系運(yùn)算符所對(duì)應(yīng)的符號(hào)。符號(hào)功能>大于>=大于等于<小于<=小于等于==等于!=不等于關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于對(duì)兩個(gè)表達(dá)式的值進(jìn)行比較,返回一個(gè)真值或者假值。返回真值還是假值取決于表達(dá)式中的值和所用的運(yùn)算符。其中真值為1,假值為0,真值表示指定的關(guān)系成立,假值則表示指定的關(guān)系不正確。例如:7>5 /*因?yàn)?大于5,所以該關(guān)系成立,表達(dá)式的結(jié)果為真值*/7>=5 /*因?yàn)?大于5,所以該關(guān)系成立,表達(dá)式的結(jié)果為真值*/7<5 /*因?yàn)?大于5,所以該關(guān)系不成立,表達(dá)式的結(jié)果為假值*/7<=5 /*因?yàn)?大于5,所以該關(guān)系不成立,表達(dá)式的結(jié)果為假值*/7==5 /*因?yàn)?不等于5,所以該關(guān)系不成立,表達(dá)式的結(jié)果為假值*/7!=5 /*因?yàn)?不等于5,所以該關(guān)系成立,表達(dá)式的結(jié)果為真值*/關(guān)系運(yùn)算符通常用來構(gòu)造條件表達(dá)式,用在程序流程控制語句中,例如if語句是用于判斷條件而執(zhí)行語句塊,在其中使用關(guān)系表達(dá)式作為判斷條件,如果關(guān)系表達(dá)式返回的是真值則執(zhí)行下面的語句塊,如果為假值就不去執(zhí)行。代碼如下:if(Count<10){
… /*判斷條件為真值,執(zhí)行代碼*/}其中,if(iCount<10)就是判斷iCount小于10這個(gè)關(guān)系是否成立,如果成立則為真,如果不成立則為假。優(yōu)先級(jí)與結(jié)合性關(guān)系運(yùn)算符的結(jié)合性都是自左向右的。使用關(guān)系運(yùn)算符的時(shí)候常常會(huì)判斷兩個(gè)表達(dá)式的關(guān)系,但是由于運(yùn)算符存在著優(yōu)先級(jí)的問題,因此如果不小心處理則會(huì)出現(xiàn)錯(cuò)誤。例如要進(jìn)行這樣的判斷操作:先對(duì)一個(gè)變量進(jìn)行賦值,然后判斷這個(gè)賦值的變量是否不等于一個(gè)常數(shù),代碼如下。if(Number=NewNum!=10){
…}因?yàn)椤?=”運(yùn)算符比“=”的優(yōu)先級(jí)要高,所以NewNum!=0的判斷操作會(huì)在賦值之前實(shí)現(xiàn),變量Number得到的就是關(guān)系表達(dá)式的真值或者假值,這樣并不會(huì)按照之前的意愿執(zhí)行。前文曾經(jīng)介紹過括號(hào)運(yùn)算符,括號(hào)運(yùn)算符的優(yōu)先級(jí)具有最高性,因此使用括號(hào)來表示要優(yōu)先計(jì)算的表達(dá)式,例如:if((Number=NewNum)!=10){
…}這種寫法比較清楚,不會(huì)產(chǎn)生混淆,沒有人會(huì)對(duì)代碼的含義產(chǎn)生誤解。由于這種寫法格式比較精確簡潔,因此被多數(shù)的程序員所接受。邏輯運(yùn)算符與表達(dá)式邏輯運(yùn)算符邏輯運(yùn)算符有3種,如表所示。符號(hào)功能&&邏輯與||邏輯或!單目邏輯非邏輯表達(dá)式前文介紹過關(guān)系運(yùn)算符可用于對(duì)兩個(gè)操作數(shù)進(jìn)行比較,使用邏輯運(yùn)算符可以將多個(gè)關(guān)系表達(dá)式的結(jié)果合并在一起進(jìn)行判斷。其一般形式為:表達(dá)式邏輯運(yùn)算符表達(dá)式例如使用邏輯運(yùn)算符:Result=Func1&&Func2; /*Func1和Func2都為真時(shí),結(jié)果為真*/Result=Func1||Func2; /*Func1、Func2其中一個(gè)為真時(shí),結(jié)果為真*/Result=!Func2; /*如果Func2為真,則Result為假*/前面已經(jīng)介紹過,但這里還要做重點(diǎn)強(qiáng)調(diào),不要把邏輯與運(yùn)算符“&&”和邏輯或運(yùn)算符“||”與下面要講的位與運(yùn)算符“&”和位或運(yùn)算符“|”混淆。邏輯與運(yùn)算符和邏輯或運(yùn)算符可以用于相當(dāng)復(fù)雜的表達(dá)式中。一般來說,這些運(yùn)算符用來構(gòu)造條件表達(dá)式,用在控制程序的流程語句中,例如在后面章節(jié)中要介紹的if、for、while語句等。在程序中,通常使用單目邏輯非運(yùn)算符“!”把一個(gè)變量的數(shù)值轉(zhuǎn)化為相應(yīng)的邏輯真值或者假值,也就是1或0。例如:Result=!!Value; /*轉(zhuǎn)化成邏輯值*/優(yōu)先級(jí)與結(jié)合性“&&”和“||”是雙目運(yùn)算符,它們要求有兩個(gè)操作數(shù),結(jié)合方向自左至右;“!”是單目運(yùn)算符,要求有一個(gè)操作數(shù),結(jié)合方向自左向右。邏輯運(yùn)算符的優(yōu)先級(jí)從高到低依次為:單目邏輯非運(yùn)算符“!”,邏輯與運(yùn)算符“&&”,邏輯或運(yùn)算符“||”。#include<stdio.h>intmain(){ intiNumber1,iNumber2; /*聲明變量*/ iNumber1=10; /*為變量賦值*/ iNumber2=0; printf("the1isTure,0isFalse\n"); /*顯示提示信息*/ printf("5<iNumber1&&iNumber2is%d\n",5<iNumber1&&iNumber2); /*顯示邏輯與表達(dá)式的結(jié)果*/ printf("5<iNumber1||iNumber2is%d\n",5<iNumber1||iNumber2); /*顯示邏輯或表達(dá)式的結(jié)果*/ iNumber2=!!iNumber1;/*得到iNumber1的邏輯值*/ printf("iNumber2is%d\n",iNumber2);/*輸出邏輯值*/ return0;}【實(shí)例4.8】邏輯運(yùn)算符的應(yīng)用。在本實(shí)例中,使用邏輯運(yùn)算符構(gòu)造表達(dá)式,通過輸出顯示表達(dá)式的結(jié)果,根據(jù)結(jié)果分析表達(dá)式中邏輯運(yùn)算符的計(jì)算過程。位邏輯運(yùn)算符與表達(dá)式位邏輯運(yùn)算符位邏輯運(yùn)算符包括:位邏輯與、位邏輯或、位邏輯非、取補(bǔ)。表列出了所有位邏輯運(yùn)算符。符號(hào)功能&位邏輯與|位邏輯或^位邏輯非~取補(bǔ)位邏輯表達(dá)式在程序中,位邏輯運(yùn)算符一般被程序員用作開關(guān)標(biāo)志。較低層次的硬件設(shè)備驅(qū)動(dòng)程序,經(jīng)常需要對(duì)輸入輸出設(shè)備進(jìn)行位操作。如下位邏輯與運(yùn)算符的典型應(yīng)用,對(duì)某個(gè)語句的位設(shè)置進(jìn)行檢查:if(Field&BITMASK)語句的含義是if語句對(duì)后面括號(hào)中的表達(dá)式進(jìn)行檢測(cè)。如果表達(dá)式返回的是真值,則執(zhí)行下面的語句塊,否則跳過該語句塊不執(zhí)行。其中運(yùn)算符用來對(duì)BITMASK變量的位進(jìn)行檢測(cè),判斷其是否與Field變量的位有相吻合之處。逗號(hào)運(yùn)算符與表達(dá)式在C語言中,可以用逗號(hào)將多個(gè)表達(dá)式分隔開來。其中,用逗號(hào)分隔的表達(dá)式被分別計(jì)算,并且整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值。逗號(hào)表達(dá)式稱為順序求值運(yùn)算符。逗號(hào)表達(dá)式的一般形式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n逗號(hào)表達(dá)式的求解過程是:先求解表達(dá)式1,再求解表達(dá)式2,一直求解到表達(dá)式n。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式n的值。觀察下面使用逗號(hào)運(yùn)算符的代碼:Value=2+5,1+2,5+7;上面語句中Value所得到的值為7,而非12。整個(gè)逗號(hào)表達(dá)式的值不應(yīng)該是最后一個(gè)表達(dá)式的值嗎?為什么不等于12呢?答案在于優(yōu)先級(jí)的問題,由于賦值運(yùn)算符的優(yōu)先級(jí)比逗號(hào)運(yùn)算符的優(yōu)先級(jí)高,因此先執(zhí)行的賦值運(yùn)算。如果要先執(zhí)行逗號(hào)運(yùn)算,則可以使用括號(hào)運(yùn)算符,代碼如下所示:Value=(2+5,1+2,5+7);使用括號(hào)之后,Value的值為12。#include<stdio.h>intmain(){ intiValue1,iValue2,iValue3,iResult; /*聲明變量,使用逗號(hào)運(yùn)算符*/ /*為變量賦值*/ iValue1=10; iValue2=43; iValue3=26; iResult=0; iResult=iValue1++,--iValue2,iValue3+4;/*計(jì)算逗號(hào)表達(dá)式*/ printf("theresultis:%d\n",iResult); /*將結(jié)果輸出顯示*/ iResult=(iValue1++,--iValue2,iValue3+4);/*計(jì)算逗號(hào)表達(dá)式*/ printf("theresultis:%d\n",iResult); /*將結(jié)果輸出顯示*/ return0; /*程序結(jié)束*/}【實(shí)例4】用逗號(hào)分隔的表達(dá)式。本實(shí)例中,通過逗號(hào)運(yùn)算符將其他的運(yùn)算符結(jié)合在一起形成表達(dá)式,再將表達(dá)式的最終結(jié)果賦值給變量。由顯示變量的值,分析逗號(hào)運(yùn)算符的計(jì)算過程。復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符是C語言中獨(dú)有的,實(shí)際這種操作是一種縮寫形式,可使得變量操作的描述方式更為簡潔。例如在程序中為一個(gè)變量賦值:Value=Value+3;這個(gè)語句是對(duì)一個(gè)變量進(jìn)行賦值操作,值為這個(gè)變量本身與一個(gè)整數(shù)常量3相加的結(jié)果值。使用復(fù)合賦值運(yùn)算符可以實(shí)現(xiàn)同樣的操作。例如上面的語句可以改寫成:Value+=3;這種描述更為簡潔。關(guān)于上面兩種實(shí)現(xiàn)相同操作的語句,賦值運(yùn)算符和復(fù)合賦值運(yùn)算符的區(qū)別在于:
為了簡化程序,使程序精煉。
為了提高編譯效率。對(duì)于簡單賦值運(yùn)算符,如Func=Func+1中,表達(dá)式Func計(jì)算兩次;對(duì)于復(fù)合賦值運(yùn)算符,如Func+=1中,表達(dá)式Func僅計(jì)算一次。一般來說,這種區(qū)別對(duì)于程序的運(yùn)行沒有太大的影響。但是,如果表達(dá)式中存在某個(gè)函數(shù)的返回值,那么函數(shù)被調(diào)用兩次。#include<stdio.h>intmain(){ intiTotal,iValue,iDetail; /*聲明變量*/ iTotal=100; /*為變量賦值*/ iValue=50; iDetail=5; iValue*=iDetail; /*計(jì)算得到iValue變量值*/ iTotal+=iValue; /*計(jì)算得到iTotal變量值*/ printf("Valueis:%d\n",iValue); /*顯示計(jì)算結(jié)果*/ printf("Totalis:%d\n",iTotal); return0;}【實(shí)例】使用復(fù)合賦值運(yùn)算符簡化賦值運(yùn)算。小結(jié)本章介紹了程序的各種運(yùn)算符與表達(dá)式。首先介紹了表達(dá)式的概念,幫助讀者了解后續(xù)章節(jié)所需要的準(zhǔn)備知識(shí)。然后分別介紹了賦值運(yùn)算符、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位邏輯運(yùn)算符和逗號(hào)運(yùn)算符。最后講解了如何使用復(fù)合運(yùn)算符簡化程序的編寫。常用的數(shù)據(jù)輸入、輸出函數(shù)語句字符數(shù)據(jù)輸入輸出字符串輸入輸出格式輸出函數(shù)格式輸入函數(shù)順序程序設(shè)計(jì)應(yīng)用語句語句C語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一條語句編寫完成經(jīng)過編譯后產(chǎn)生若干條機(jī)器指令。實(shí)際程序中包含若干條語句,因此語句的作用就是完成一定的操作任務(wù)。字符數(shù)據(jù)輸入輸出字符數(shù)據(jù)輸出字符數(shù)據(jù)輸出使用的是putchar函數(shù),作用是向顯示設(shè)備輸出一個(gè)字符。該函數(shù)的定義為:intputchar(intch);使用時(shí)要添加頭文件stdio.h,其中的參數(shù)ch是要進(jìn)行輸出的字符,可以是字符型變量或整型變量,也可以使用常量。例如輸出一個(gè)字符A的代碼如下:putchar('A');使用putchar函數(shù)也可以輸出轉(zhuǎn)義字符,例如輸出字符A:putchar('\101');#include<stdio.h>intmain(){ charcChar1,cChar2,cChar3,cChar4; /*聲明變量*/ cChar1='H'; /*為變量賦值*/ cChar2='e'; cChar3='l'; cChar4='o'; putchar(cChar1); /*輸出字符變量*/ putchar(cChar2); putchar(cChar3); putchar(cChar3); putchar(cChar4); putchar('\n'); /*輸出轉(zhuǎn)義字符*/ return0;} 【實(shí)例5.1】使用putchar函數(shù)實(shí)現(xiàn)字符數(shù)據(jù)輸出。在程序中使用putchar函數(shù),輸出字符串“Hello”并且在字符串輸出完畢之后進(jìn)行換行。字符數(shù)據(jù)輸入字符數(shù)據(jù)輸入使用的是getchar函數(shù),此函數(shù)的作用是從終端(輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)與putchar函數(shù)的區(qū)別在于沒有參數(shù)。該函數(shù)的定義為:intgetchar();使用getchar函數(shù)時(shí)也要添加頭文件stdio.h,函數(shù)的值就是從輸入設(shè)備得到的字符。例如從輸入設(shè)備得到一個(gè)字符賦給字符變量cChar:cChar=getchar();#include<stdio.h>intmain(){ charcChar1; /*聲明變量*/ cChar1=getchar(); /*在輸入設(shè)備得到字符*/ putchar(cChar1); /*輸出字符*/ putchar('\n'); /*輸出轉(zhuǎn)義字符換行*/ getchar(); /*得到回車字符*/ putchar(getchar()); /*得到輸入字符,直接輸出*/ putchar('\n'); /*換行*/ return0; /*程序結(jié)束*/}【實(shí)例5.2】使用getchar函數(shù)實(shí)現(xiàn)字符數(shù)據(jù)輸入。在本實(shí)例中,使用getchar函數(shù)獲取在鍵盤上輸入的字符,再利用putchar函數(shù)進(jìn)行輸出。本實(shí)例演示了將getchar作為putchar函數(shù)表達(dá)式的一部分,進(jìn)行輸入和輸出字符的方式。#include<stdio.h>intmain(){ charcChar1; /*聲明變量*/ cChar1=getchar(); /*在輸入設(shè)備得到字符*/ putchar(cChar1); /*輸出字符*/ putchar('\n'); /*輸出轉(zhuǎn)義字符換行*/ /*將此處getchar函數(shù)刪掉*/ putchar(getchar()); /*得到輸入字符,直接輸出*/ putchar('\n'); /*換行*/ return0; /*程序結(jié)束*/}【實(shí)例5.3】使用getchar函數(shù)取消獲取回車符。字符串輸入輸出字符串輸出函數(shù)字符串輸出使用的是puts函數(shù),作用是輸出一個(gè)字符串到屏幕上。該函數(shù)的定義為:intputs(char*str);使用該函數(shù)時(shí),先要在其程序中添加stdio.h頭文件。其中,形式參數(shù)str是字符指針類型,可以用來接收要輸出的字符串。例如使用puts函數(shù)輸出一個(gè)字符串:puts("ILOVECHINA!"); /*輸出一個(gè)字符串常量*/這行語句是輸出一個(gè)字符串,之后會(huì)自動(dòng)進(jìn)行換行操作。這與printf函數(shù)有所不同,在前面的實(shí)例中使用printf函數(shù)進(jìn)行換行時(shí),要在其中添加轉(zhuǎn)義字符'\n'。puts函數(shù)會(huì)在字符串中判斷“\0”結(jié)束符,遇到結(jié)束符時(shí),后面的字符不再輸出并且自動(dòng)換行。例如:puts("ILOVE\0CHINA!"); /*輸出一個(gè)字符串常量*/在上面的語句中加上“\0”字符后,puts函數(shù)輸出的字符串就變成:ILOVE。#include<stdio.h>intmain(){ char*Char="ILOVECHINA"; /*定義字符串指針變量*/ puts("ILOVECHINA!"); /*輸出字符串常量*/ puts("I\0LOVE\0CHINA!");/*輸出字符串常量,其中加入結(jié)束符'\0'*/ puts(Char); /*輸出字符串變量的值*/ Char="ILOVE\0CHINA!"; /*改變字符串變量的值*/ puts(Char); /*輸出字符串變量的值*/ return0; /*程序結(jié)束*/}【實(shí)例5.4】使用字符串輸出函數(shù)顯示信息提示。在本實(shí)例中,使用puts函數(shù)對(duì)字符串常量和字符串變量都進(jìn)行操作,在這些操作中觀察使用puts函數(shù)的方式。字符串輸入函數(shù)字符串輸入函數(shù)使用的是gets函數(shù),作用是將讀取字符串保存在形式參數(shù)str變量中,讀取過程直到出現(xiàn)新的一行為止。其中新的一行的換行字符將會(huì)轉(zhuǎn)化為字符串中的空終止符“\0”。gets函數(shù)的定義如下:char*gets(char*str);在使用gets字符串輸入函數(shù)前,要為程序加入頭文件stdio.h。其中的str字符指針變量為形式參數(shù)。例如定義字符數(shù)組變量cString,然后使用gets函數(shù)獲取輸入字符的方式如下:gets(cString);在上面的代碼中,cString變量獲取到了字符串,并將最后的換行符轉(zhuǎn)化成了終止字符。#include<stdio.h>intmain(){ charcString[30]; /*定義一個(gè)字符數(shù)組變量*/ gets(cString); /*獲取字符串*/ puts(cString); /*輸出字符串*/ return0; /*程序結(jié)束*/}【實(shí)例5.5】使用字符串輸入函數(shù)gets獲取輸入信息。格式輸出函數(shù)前面章節(jié)的實(shí)例中常常使用格式輸入輸出函數(shù)scanf和printf。其中printf函數(shù)就是用于格式輸出的函數(shù),也稱為格式輸出函數(shù)。printf函數(shù)的作用是向終端(輸出設(shè)備)輸出若干任意類型的數(shù)據(jù)。printf函數(shù)的一般格式為:printf(格式控制,輸出列表)括號(hào)內(nèi)包括兩部分:
格式控制格式控制是用雙引號(hào)括起來的字符串,此處也稱為轉(zhuǎn)換控制字符串。其中包括兩種字符,一種是格式字符,另一種是普通字符。
格式字符用來進(jìn)行格式說明,作用是將輸出的數(shù)據(jù)轉(zhuǎn)化為指定的格式輸出。格式字符是以“%”字符開頭的。
普通字符是需要原樣輸出的字符,其中包括雙引號(hào)內(nèi)的逗號(hào)、空格和換行符。
輸出列表輸出列表中列出的是要進(jìn)行輸出的一些數(shù)據(jù),可以是變量或表達(dá)式。例如,要輸出一個(gè)整型變量時(shí):intiInt=10;printf("thisis%d",iInt);執(zhí)行上面的語句顯示出來的字符是thisis10。在格式控制雙引號(hào)中的字符是thisis%d,其中的thisis字符串是普通字符,而%d是格式字符,表示輸出的是后面iInt的數(shù)據(jù)。由于printf是函數(shù),“格式控制”和“輸出列表”這兩個(gè)位置都是函數(shù)的參數(shù),因此printf函數(shù)的一般形式也可以表示為:printf(參數(shù)1,參數(shù)2,……,參數(shù)n)函數(shù)中的每一個(gè)參數(shù)按照給定的格式和順行依次輸出。例如,顯示一個(gè)字符型變量和整型變量:printf("theIntis%d,theCharis%c",iInt,cChar);下表列出了有關(guān)printf函數(shù)的格式字符。格式字符功能說明d,i以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(整數(shù)不輸出符號(hào))o以八進(jìn)制無符號(hào)形式輸出整數(shù)x,X以十六進(jìn)制無符號(hào)形式輸出整數(shù)。用u以無符號(hào)十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出e,E以指數(shù)形式輸出實(shí)數(shù),用g,G選用#include<stdio.h>intmain(){ intiInt=10; /*定義整型變量*/ charcChar='A'; /*定義字符型變量*/ floatfFloat=12.34f; /*定義單精度浮點(diǎn)型*/ printf("theintis:%d\n",iInt); /*使用printf函數(shù)輸出整型*/ printf("thecharis:%c\n",cChar);/*輸出字符型*/ printf("thefloatis:%f\n",fFloat);/*輸出浮點(diǎn)型*/ printf("thestirngis:%s\n","ILOVEYOU"); /*輸出字符串*/ return0;}【實(shí)例5.6】使用格式輸出函數(shù)printf。在本實(shí)例中,使用printf函數(shù)對(duì)不同類型變量進(jìn)行輸出,對(duì)使用printf函數(shù)所用到的輸出格式進(jìn)行分析理解。#include<stdio.h>intmain(){ longiLong=100000; /*定義長整型變量,為其賦值*/ printf("theLongis%ld\n",iLong);/*輸出長整型變量*/ printf("thestringis:%s\n","LOVE");/*輸出字符串*/ printf("thestringis:%10s\n","LOVE");/*使用m控制輸出列*/ printf("thestringis:%-10s\n","LOVE");/*使用-表示向左靠攏*/ printf("thestringis:%10.3s\n","LOVE");/*使用n表示取字符數(shù)*/ printf("thestringis:%-10.3s\n","LOVE"); return0;}【實(shí)例5.7】在printf函數(shù)中使用附加符號(hào)。(在本實(shí)例中,使用printf函數(shù)的附加格式說明字符,對(duì)輸出的數(shù)據(jù)進(jìn)行更為精準(zhǔn)的格式設(shè)計(jì)。格式輸入函數(shù)與格式輸出函數(shù)printf相對(duì)應(yīng)的是格式輸入函數(shù)scanf。該函數(shù)的功能是指定固定的格式,并且按照指定的格式接收用戶在鍵盤上輸入的數(shù)據(jù),最后將數(shù)據(jù)存儲(chǔ)在指定的變量中。scanf函數(shù)的一般格式為:scanf(格式控制,地址列表)通過scanf函數(shù)的一般格式可以看出,參數(shù)位置中的格式控制與printf函數(shù)相同。例如%d表示十進(jìn)制的整型,%c表示單字符。而在地址列表中,此處應(yīng)該給出用來接收數(shù)據(jù)變量的地址。例如得到一個(gè)整型數(shù)據(jù)的操作:scanf("%d",&iInt); /*得到一個(gè)整型數(shù)據(jù)*/在上面的代碼中,&符號(hào)表示取iInt變量的地址,因此不用關(guān)心變量的地址具體是多少,只要在代碼中在變量的標(biāo)識(shí)符前加&符號(hào),就表示取變量的地址。下表列出了scanf函數(shù)中使用的格式字符。格式字符功能說明d,i用來輸入有符號(hào)的十進(jìn)制整數(shù)u用來輸入無符號(hào)的十進(jìn)制整數(shù)o用來輸入無符號(hào)的八進(jìn)制整數(shù)x,X用來輸入無符號(hào)的十六進(jìn)制整數(shù)(大小寫作用是相同的)c用來輸入單個(gè)字符s用來輸入字符串f用來輸入實(shí)型,可以用小數(shù)形式或指數(shù)形式輸入e,E,g,G與#include<stdio.h>intmain(){ intiInt1,iInt2; /*定義兩個(gè)整型變量*/ puts("Pleaseentertwonumbers:");/*通過puts函數(shù)輸出提示信息的字符串*/ scanf("%d%d",&iInt1,&iInt2); /*通過scanf函數(shù)得到輸入的數(shù)據(jù)*/ printf("Thefirstis:%d\n",iInt1);/*顯示第一個(gè)輸入的數(shù)據(jù)*/ printf("Thesecondis:%d\n",iInt2);/*顯示第二個(gè)輸入的數(shù)據(jù)*/ return0;}【實(shí)例5.8】使用scanf格式輸入函數(shù)得到用戶輸入的數(shù)據(jù)。在本實(shí)例中,利用scanf函數(shù)得到用戶輸入的兩個(gè)整型數(shù)據(jù),因?yàn)閟canf函數(shù)只能用于輸入操作,所以若在屏幕上顯示信息則使用顯示函數(shù)。在printf函數(shù)中除了格式字符還有附加格式用于更為具體的說明,相應(yīng)地,scanf函數(shù)中也有附加格式用于更為具體的格式說明,如下表所示。字符功能說明l用于輸入長整型數(shù)據(jù)(可用于h用于輸入短整型數(shù)據(jù)(可用于n指定輸入數(shù)據(jù)所占寬度*表示指定的輸入項(xiàng)在讀入后不賦給相應(yīng)的變量順序程序設(shè)計(jì)應(yīng)用#include<stdio.h>intmain(){ floatPie=3.14f; /*定義圓周率*/ floatfArea; /*定義變量,表示圓的面積*/ floatfRadius; /*定義變量,表示圓的半徑*/ puts("Entertheradius:"); /*輸出提示信息*/ scanf("%f",&fRadius); /*輸入圓的半徑*/ fArea=fRadius*fRadius*Pie; /*計(jì)算圓的面積*/ printf("TheAreais:%.2f\n",fArea); /*輸出計(jì)算的結(jié)果*/ return0; /*程序結(jié)束*/}本節(jié)介紹幾個(gè)順序程序設(shè)計(jì)的實(shí)例,幫助讀者鞏固本章前面小節(jié)所講的內(nèi)容?!緦?shí)例5.10】計(jì)算圓的面積。在本實(shí)例中,定義單精度浮點(diǎn)型變量,為其賦值為圓周率的值。得到用戶輸入的數(shù)據(jù)并進(jìn)行計(jì)算,最后將計(jì)算的結(jié)果輸出。#include<stdio.h>intmain(){ charcBig; /*定義字符變量,表示大寫字符*/ charcSmall; /*定義字符變量,表示小寫字符*/
puts("Pleaseentercapitalcharacter:");/*輸出提示信息*/ cBig=getchar(); /*得到用戶輸入的大寫字符*/ puts("Minusculecharacteris:"); /*輸出提示信息*/ cSmall=cBig+32; /*將大寫字符轉(zhuǎn)化成小寫字符*/ printf("%c\n",cSmall); /*輸出小寫字符*/ return0; /*程序結(jié)束*/}【實(shí)例5.11】將大寫字符轉(zhuǎn)化成小寫字符。本實(shí)例要將一個(gè)輸入的大寫字符轉(zhuǎn)化成小寫字符,需要對(duì)其中的ASCII碼的關(guān)系有所了解。將大寫字符轉(zhuǎn)化成小寫字符的方法就是將大寫字符的ASCII碼轉(zhuǎn)化成小寫字符的ASCII碼。小結(jié)本章主要講解C語言中常用的數(shù)據(jù)輸入、輸出函數(shù)。熟練使用輸入、輸出函數(shù)是學(xué)習(xí)C語言必須要掌握的,因?yàn)樵诤芏嗟那闆r下,為了證實(shí)一項(xiàng)操作的正確性,可以將輸入和輸出的數(shù)據(jù)進(jìn)行對(duì)比而得到結(jié)論。其中,用于單個(gè)字符的輸入、輸出時(shí),使用的是getchar和putchar函數(shù),而gets和puts函數(shù)用于輸入、輸出字符串,并且puts函數(shù)在遇到終止符時(shí)會(huì)進(jìn)行自動(dòng)換行。為了能輸出其他類型的數(shù)據(jù),可以使用格式輸出函數(shù)printf和格式輸入函數(shù)scanf。在這兩個(gè)格式函數(shù)中,利用格式字符和附加格式字符可以更為具體地進(jìn)行格式說明。選擇結(jié)構(gòu)程序設(shè)計(jì)if語句if語句的基本形式if的嵌套形式條件運(yùn)算符switch語句ifelse語句和switch語句的區(qū)別07選擇結(jié)構(gòu)程序應(yīng)用if語句if語句在日常生活中,為了使交通暢通有序,一般會(huì)在路口設(shè)立交通信號(hào)燈。在信號(hào)燈顯示為綠色時(shí)車輛可以行駛通過,當(dāng)信號(hào)燈轉(zhuǎn)為紅色時(shí)車輛就要停止行駛??梢?,信號(hào)燈給出了信號(hào),人們通過不同的信號(hào)進(jìn)行判斷,然后根據(jù)判斷的結(jié)果進(jìn)行相應(yīng)的操作。在C語言程序中,想要完成這樣的判斷操作,利用的就是if語句。if語句的功能就像路口的信號(hào)燈一樣,根據(jù)判斷不同的條件,決定是否進(jìn)行操作。據(jù)說第一臺(tái)數(shù)字計(jì)算機(jī)是用來進(jìn)行決策操作的,使得之后的計(jì)算機(jī)都繼承了這項(xiàng)功能。程序員將決策表示成對(duì)條件的檢驗(yàn),即判斷一個(gè)表達(dá)式值的真假。除了沒有任何返回值的函數(shù)和返回?zé)o法判斷真假的結(jié)構(gòu)函數(shù)外,幾乎所有表達(dá)式的返回值都可以判斷真假。if語句的基本形式if語句形式if語句通過對(duì)表達(dá)式進(jìn)行判斷,根據(jù)判斷的結(jié)果選擇是否進(jìn)行相應(yīng)的操作。if語句的一般形式為:if(表達(dá)式)語句其語句執(zhí)行流程如圖所示。#include<stdio.h>intmain(){ intiSignal; /*定義變量表示信號(hào)燈的狀態(tài)*/ printf("theRedLightis0,theGreenLightis1\n");/*輸出提示信息*/ scanf("%d",&iSignal); /*輸入iSignal變量*/ if(iSignal==1) /*使用if語句進(jìn)行判斷*/ { printf("theLightisgreen,carscanrun\n"); /*判斷結(jié)果為真時(shí)輸出*/ } return0;}【實(shí)例6.1】使用if語句模擬信號(hào)燈指揮車輛行駛。在本實(shí)例中,為了模擬十字路口上信號(hào)燈指揮車輛行駛,要使用if語句判斷信號(hào)燈的狀態(tài)。如果信號(hào)燈為綠色,則說明車輛可以行駛通過,通過輸出語句進(jìn)行信息提示說明車輛的行動(dòng)狀態(tài)。#include<stdio.h>intmain(){ intiSignal; /*定義變量表示信號(hào)燈的狀態(tài)*/ printf("theRedLightis0,theGreenLightis1\n");/*輸出提示信息*/ scanf("%d",&iSignal); /*輸入iSignal變量*/ if(iSignal==1) /*使用if語句進(jìn)行判斷*/ { printf("theLightisgreen,carscanrun\n");/*判斷結(jié)果為真時(shí)輸出*/ } if(iSignal==0) /*使用if語句進(jìn)行判斷*/ { printf("theLightisred,carscan'trun\n");/*判斷結(jié)果為真時(shí)輸出*/ } return0;}【實(shí)例6.2】完善if語句的使用。原程序中僅對(duì)綠燈情況下做出相應(yīng)的操作,為進(jìn)一步完善信號(hào)燈為紅燈時(shí)的操作,在程序中再添加一次if語句對(duì)信號(hào)燈為紅燈時(shí)的判斷,并且在條件成立時(shí)給出相應(yīng)的操作。if…else語句形式除了可以指定在條件為真時(shí)執(zhí)行某些語句外,還可以在條件為假時(shí)執(zhí)行另外一段代碼。這在C語言中是利用else語句來完成的,其一般形式為:if(表達(dá)式)
語句塊1;else
語句塊2;其語句執(zhí)行流程如圖所示。#include<stdio.h>intmain(){ intiNumber; /*定義變量*/ printf("Enteranumber\n"); /*顯示提示信息*/ scanf("%d",&iNumber); /*輸入數(shù)字*/ if(iNumber) /*判斷變量的值*/ { /*判斷為真時(shí)執(zhí)行輸出*/ printf("thevalueistrueandthenumberis:%d\n",iNumber); } else /*判斷為假時(shí)執(zhí)行輸出*/ { printf("thevalueisflaseandthenumberis:%d\n",iNumber); } return0;}【實(shí)例6.3】使用if…else語句進(jìn)行選擇判斷。在本實(shí)例中,使用if…else語句判斷用戶輸入的數(shù)值,輸入的數(shù)字為0表示條件為假,輸入的數(shù)字為非0表示條件為真。#include<stdio.h>intmain(){ intiNumber1,iNumber2; /*定義變量*/ printf("pleaseentertwonumbers:\n"); /*信息提示*/ scanf("%d%d",&iNumber1,&iNumber2); /*輸入數(shù)據(jù)*/ if(iNumber1>iNumber2) /*判斷iNumber1是否大于iNumber2*/ { printf("thebiggernumberis%d\n",iNumber1); } else /*判斷結(jié)果為假,則執(zhí)行下面語句*/ { printf("thebiggernumberis%d\n",iNumber2); } return0;}【實(shí)例6.4】使用if…else語句得到兩個(gè)數(shù)的最大值。本實(shí)例要實(shí)現(xiàn)的功能是比較兩個(gè)數(shù)值的大小,這兩個(gè)數(shù)值由用戶輸入,然后將其中相對(duì)較大的數(shù)值輸出顯示。#include<stdio.h>intmain(){ intiNumber1,iNumber2; /*定義變量*/ printf("pleaseentertwonumbers:\n"); /*信息提示*/ scanf("%d%d",&iNumber1,&iNumber2); /*輸入數(shù)據(jù)*/ if(iNumber1>iNumber2) /*判斷iNumber1是否大于iNumber2*/ { printf("thebiggernumberis%d\n",iNumber1); } else /*判斷結(jié)果為假,則執(zhí)行下面語句*/ { printf("thebiggernumberis%d\n",iNumber2); } return0;}【實(shí)例6.4】使用if…else語句得到兩個(gè)數(shù)的最大值。本實(shí)例要實(shí)現(xiàn)的功能是比較兩個(gè)數(shù)值的大小,這兩個(gè)數(shù)值由用戶輸入,然后將其中相對(duì)較大的數(shù)值輸出顯示。#include<stdio.h>intmain(){ intiSignal; /*定義變量表示信號(hào)燈的狀態(tài)*/ printf("theRedLightis0,\ntheGreenLightis1,\ntheYellowLightisothernumber\n");/*輸出提示信息*/ scanf("%d",&iSignal); /*輸入iSignal變量*/ if(iSignal==1) /*當(dāng)信號(hào)燈為綠色時(shí)*/ { printf("theLightisgreen,carscanrun\n");/*判斷結(jié)果為真時(shí)輸出*/ } if(iSignal==0) /*當(dāng)信號(hào)燈為紅燈時(shí)*/ { pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高端裝備制造技術(shù)與專利許可合同
- 2024年甲醇分銷合同
- 2024年餐飲業(yè)標(biāo)準(zhǔn)設(shè)備租賃合同模板版
- 2025年度環(huán)保設(shè)備采購與安裝合同6篇
- 2024年限定版圍墻修繕合作協(xié)議版B版
- 2025年度環(huán)保產(chǎn)業(yè)技術(shù)轉(zhuǎn)移與轉(zhuǎn)化合同3篇
- 2024年版泵車施工廢棄物處理合同
- 2024年高端裝備制造業(yè)原材料采購合同范本3篇
- 2024年職工停薪留職期間工作績效考核合同3篇
- 2024高端精密儀器制造與維修服務(wù)合同
- 中國保險(xiǎn)行業(yè)協(xié)會(huì)-2022年度商業(yè)健康保險(xiǎn)經(jīng)營數(shù)據(jù)分析報(bào)告
- 新人教版小學(xué)五年級(jí)數(shù)學(xué)上冊(cè)知識(shí)點(diǎn)歸納總結(jié)
- 四年級(jí)上冊(cè)口算、豎式計(jì)算、脫式計(jì)算
- 腎內(nèi)科降低透析器凝血發(fā)生率品管圈PDCA成果匯報(bào)
- 回族做禮拜的念詞集合6篇
- 臺(tái)區(qū)線損綜合分析臺(tái)區(qū)線損分類及計(jì)算方法
- 辯論賽醫(yī)術(shù)更重要
- 保密組織機(jī)構(gòu)及人員職責(zé)
- 競爭性磋商評(píng)分細(xì)則
- 警用無人機(jī)考試題庫(全真題庫)
- 中國傳統(tǒng)節(jié)日(作文指導(dǎo))課件
評(píng)論
0/150
提交評(píng)論