C語言程序設計書稿_第1頁
C語言程序設計書稿_第2頁
C語言程序設計書稿_第3頁
C語言程序設計書稿_第4頁
已閱讀5頁,還剩295頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

TOC\o"1-5"\h\z耳,〇早もi/予攻+論 1\o"CurrentDocument"0.1程序與程序設計語言 1\o"CurrentDocument"0.1.I程序 1\o"CurrentDocument"0.1.2程序設計語言 1\o"CurrentDocument"0.2C語言的歷史和發(fā)展 3\o"CurrentDocument"0.3ー個簡單程序的誕生 3\o"CurrentDocument"0.3.1簡單的C語言程序概貌 4\o"CurrentDocument"0.3.2第一個程序的誕生 5\o"CurrentDocument"本章小結(jié) 7\o"CurrentDocument"復習題 7第1早C程け設計基礎(chǔ)知識 8\o"CurrentDocument"變量 8\o"CurrentDocument"有關(guān)內(nèi)存的基礎(chǔ)概念 8\o"CurrentDocument"變量的引入 8\o"CurrentDocument"常量 12\o"CurrentDocument"字面常量 12\o"CurrentDocument"符號常里 14\o"CurrentDocument"const常量 15\o"CurrentDocument"算術(shù)運算符與算術(shù)表達式 15\o"CurrentDocument"運算符概述 15\o"CurrentDocument"算術(shù)運算符 16\o"CurrentDocument"算術(shù)表達式 16\o"CurrentDocument"賦值運算符與賦值表達式 18\o"CurrentDocument"簡單賦值運算符 18\o"CurrentDocument"復合算術(shù)賦值運算符 19\o"CurrentDocument"賦值運算時的數(shù)據(jù)類型轉(zhuǎn)換 19\o"CurrentDocument"自加、自減、逗號運算符 20\o"CurrentDocument"自加和自減運算符:++、- 20\o"CurrentDocument"逗號運算符 22\o"CurrentDocument"位運算 23\o"CurrentDocument"位運算的基本規(guī)律 23\o"CurrentDocument"位運算符 23\o"CurrentDocument"本章小結(jié) 24\o"CurrentDocument"復習題 25\o"CurrentDocument"第2章簡單C語句 26\o"CurrentDocument"C語句概述 26\o"CurrentDocument"表達式語句 26\o"CurrentDocument"控制語句 26\o"CurrentDocument"函數(shù)調(diào)用語句 27\o"CurrentDocument"復合語句 27\o"CurrentDocument"空語句 27\o"CurrentDocument"輸入輸出的概念 28\o"CurrentDocument"基本輸入輸出函數(shù) 28\o"CurrentDocument"格式化輸出庫函數(shù):printf 28\o"CurrentDocument"格式輸入庫函數(shù):scanf 30\o"CurrentDocument"字符輸入輸出函數(shù) 32\o"CurrentDocument"本章小結(jié) 33\o"CurrentDocument"復習題 33\o"CurrentDocument"第3章分支結(jié)構(gòu)程序設計 34\o"CurrentDocument"算法與基本程序結(jié)構(gòu) 34\o"CurrentDocument"算法簡介 34\o"CurrentDocument"算法的表示 35基本程ノ"]'?纟口構(gòu) 37\o"CurrentDocument"關(guān)系運算和邏輯運算 38\o"CurrentDocument"關(guān)系這算 38\o"CurrentDocument"邏輯運算 39if語句 40簡單if語句 40\o"CurrentDocument"if~else語句 42if語句的嵌套 43\o"CurrentDocument"if語句使用注意事項 45\o"CurrentDocument"switch語句 47\o"CurrentDocument"條件運算符 49\o"CurrentDocument"結(jié) 50\o"CurrentDocument"50\o"CurrentDocument"第4章循環(huán)結(jié)構(gòu)程序設計 51\o"CurrentDocument"循環(huán)的引入 51\o"CurrentDocument"for循環(huán) 51\o"CurrentDocument"while循環(huán) 54\o"CurrentDocument"do~while循環(huán) 55\o"CurrentDocument"循環(huán)的比較 57\o"CurrentDocument"for語句和while語句 57\o"CurrentDocument"while語句和do~while語句 60\o"CurrentDocument"數(shù)值輸入中的問題 61\o"CurrentDocument"循環(huán)嵌套 63\o"CurrentDocument"三重循環(huán)求解 64\o"CurrentDocument"縮小窮舉法的搜索范圍 65\o"CurrentDocument"兩重循環(huán)解決問題 66\o"CurrentDocument"極限情況:ー層循環(huán)的求解 67\o"CurrentDocument"break和continue語句 69\o"CurrentDocument"break語句 69\o"CurrentDocument"continue語句 70\o"CurrentDocument"應用舉例 71\o"CurrentDocument"結(jié) 75\o"CurrentDocument"75\o"CurrentDocument"第5章函數(shù) 77\o"CurrentDocument"函數(shù)的基本概念 77函數(shù)的聲明和定義 78函數(shù)聲明和函數(shù)原型 78\o"CurrentDocument"函數(shù)定義 79\o"CurrentDocument"函數(shù)的參數(shù) 81\o"CurrentDocument"函數(shù)的返回值與函數(shù)類型 85\o"CurrentDocument"函數(shù)的調(diào)用 87\o"CurrentDocument"函數(shù)調(diào)用的方式 89\o"CurrentDocument"函數(shù)調(diào)用過程機制 90\o"CurrentDocument"函數(shù)的嵌套調(diào)用 92\o"CurrentDocument"函數(shù)的遞歸 95\o"CurrentDocument"遞歸的基本原理 96\o"CurrentDocument"尾遞歸 98\o"CurrentDocument"遞歸與反向計算 100\o"CurrentDocument"漢諾塔問題:雙重遞歸 101\o"CurrentDocument"遞歸的優(yōu)缺點 104\o"CurrentDocument"頭文件的使用 104\o"CurrentDocument"逐步求精 107\o"CurrentDocument"本章小結(jié) 116\o"CurrentDocument"復習題 117\o"CurrentDocument"第6章數(shù)組 118\o"CurrentDocument"ー維數(shù)組 118\o"CurrentDocument"ー維數(shù)組的聲明 118\o"CurrentDocument"訪問數(shù)組元素 120\o"CurrentDocument"數(shù)組的初始化 122\o"CurrentDocument"ー維數(shù)組應用舉例 123\o"CurrentDocument"二維數(shù)組 125\o"CurrentDocument"二維數(shù)組的聲明 125\o"CurrentDocument"訪問ニ維數(shù)組元素 126\o"CurrentDocument"二維數(shù)組的初始化 126\o"CurrentDocument"二維數(shù)組應用舉例 127\o"CurrentDocument"數(shù)組作為函數(shù)參數(shù) 129\o"CurrentDocument"數(shù)組元素用作函數(shù)的實參 129\o"CurrentDocument"數(shù)組用作函數(shù)的參數(shù) 130\o"CurrentDocument"本章小結(jié) 134\o"CurrentDocument"復習題 135\o"CurrentDocument"第7章指針 137\o"CurrentDocument"地址作為數(shù)據(jù)值 137\o"CurrentDocument"指針變量 138\o"CurrentDocument"聲明指針變量 138\o"CurrentDocument"有關(guān)指針的運算符 139\o"CurrentDocument"指針操作 140\o"CurrentDocument"指針作為函數(shù)參數(shù) 143\o"CurrentDocument"數(shù)組與指針 145\o"CurrentDocument"通過指針操作數(shù)組元素 145\o"CurrentDocument"函數(shù)、數(shù)組與指針 149\o"CurrentDocument"保護數(shù)組內(nèi)容 151\o"CurrentDocument"多維數(shù)組與指針 156\o"CurrentDocument"指向數(shù)組的指針 159\o"CurrentDocument"函數(shù)指針 163\o"CurrentDocument"通過函數(shù)指針調(diào)用函數(shù) 163\o"CurrentDocument"函數(shù)指針用作函數(shù)參數(shù) 165\o"CurrentDocument"動態(tài)分配內(nèi)存 168\o"CurrentDocument"NULL指針和void?類型 168\o"CurrentDocument"動態(tài)數(shù)組 169\o"CurrentDocument"釋放內(nèi)存 170\o"CurrentDocument"本章小結(jié) 170\o"CurrentDocument"復習題 171\o"CurrentDocument"第8章字符數(shù)據(jù)處理 172\o"CurrentDocument"字符型常量和字符串 172\o"CurrentDocument"轉(zhuǎn)義字符 172\o"CurrentDocument"字符串 173\o"CurrentDocument"字符型變量 174\o"CurrentDocument"字符數(shù)組 175\o"CurrentDocument"字符數(shù)組的初始化 175\o"CurrentDocument"字符串和字符串結(jié)束標志 176字符串和指針 179字符串的表示形式 179\o"CurrentDocument"字符串指針作函數(shù)參數(shù) 180\o"CurrentDocument"字符處理函數(shù) 181\o"CurrentDocument"字符串應用實例 184\o"CurrentDocument"復習題 189\o"CurrentDocument"第9章結(jié)構(gòu) 190\o"CurrentDocument"結(jié)構(gòu)類型說明 190\o"CurrentDocument"使用結(jié)構(gòu) 191\o"CurrentDocument"結(jié)構(gòu)類型變量 191\o"CurrentDocument"結(jié)構(gòu)變量的引用 193\o"CurrentDocument"結(jié)構(gòu)變量賦初值 193\o"CurrentDocument"結(jié)構(gòu)和指針 194\o"CurrentDocument"結(jié)構(gòu)數(shù)組 194\o"CurrentDocument"指向結(jié)構(gòu)的指針 198\o"CurrentDocument"結(jié)構(gòu)數(shù)據(jù)在函數(shù)間傳遞 203\o"CurrentDocument"ラロ構(gòu)和鏈表 204\o"CurrentDocument"單鏈表 204\o"CurrentDocument"單鏈表結(jié)點的刪除 207\o"CurrentDocument"單鏈表的插入 208\o"CurrentDocument"環(huán)鏈表? 210\o"CurrentDocument"復習題 212\o"CurrentDocument"第10章文件 214\o"CurrentDocument"文件的打開與關(guān)閉 214\o"CurrentDocument"文件類型指針 214\o"CurrentDocument"文件的打開 215\o"CurrentDocument"文件的關(guān)閉 216\o"CurrentDocument"文件的讀寫 217\o"CurrentDocument"讀寫字符 217\o"CurrentDocument"讀寫字符串 219\o"CurrentDocument"格式化的讀寫 221\o"CurrentDocument"成塊讀寫(二進制讀寫) 222\o"CurrentDocument"隨機讀寫文件 225\o"CurrentDocument"本章小結(jié) 227\o"CurrentDocument"復習題 228\o"CurrentDocument"第II章TurboC圖形 229\o"CurrentDocument"圖形模式的初始化及相關(guān)函數(shù) 229\o"CurrentDocument"屏幕顏色設置和清屏 231\o"CurrentDocument"基本圖形繪制 233\o"CurrentDocument"畫點與位置坐標函數(shù) 233\o"CurrentDocument"畫直線、圓、橢圓與多邊形函數(shù) 234\o"CurrentDocument"線條樣式設定 235\o"CurrentDocument"圖形填充 237\o"CurrentDocument"封閉區(qū)間填充函數(shù) 237\o"CurrentDocument"設定填充方式 237\o"CurrentDocument"圖形模式下的文本輸出 238\o"CurrentDocument"圖形示例 239\o"CurrentDocument"復習題 254\o"CurrentDocument"第12章存儲類型 255\o"CurrentDocument"作用域 255イ弋れ-;-卜An^^...........................................?...?...?.?.........?...............”..............?.......2jj\o"CurrentDocument"函數(shù)原型作用域 256\o"CurrentDocument"文件作用域 256\o"CurrentDocument"鏈接 257彳ナイ用)芻 258存儲類型 259\o"CurrentDocument"自動變量 259\o"CurrentDocument"寄存器變量 260\o"CurrentDocument"具有代碼塊作用域的靜態(tài)變量 260\o"CurrentDocument"具有外部鏈接的靜態(tài)變量 262\o"CurrentDocument"具有內(nèi)部鏈接的靜態(tài)變量 265\o"CurrentDocument"存儲類型說明符 266\o"CurrentDocument"函數(shù)的存儲類型 268\o"CurrentDocument"本章小結(jié) 269\o"CurrentDocument"復習題 270\o"CurrentDocument"附錄AC語言預處理器 272\o"CurrentDocument"A.1預處理器命令 272\o"CurrentDocument"A.2預處理器詞法規(guī)則 272\o"CurrentDocument"A.3定義和替換 273\o"CurrentDocument"A.3.1對象式宏定義 273\o"CurrentDocument"A.3.2函數(shù)式宏定義 274\o"CurrentDocument"A.3.3重新掃描宏表達式 276\o"CurrentDocument"A.3.4取消宏定義與重新定義宏 277\o"CurrentDocument"A.3.5宏擴展中的優(yōu)先級錯誤 278\o"CurrentDocument"A.3.6宏參數(shù)的副作用 278\o"CurrentDocument"A.4文件包含 279\o"CurrentDocument"A.5條件編譯 280\o"CurrentDocument"A.5.1#if,#else與#endif命令 280\o"CurrentDocument"A.5.3#ifdef與#ifndel 命令 282\o"CurrentDocument"A.5.4條件命令中的常量表達式 283\o"CurrentDocument"A.5.5defined運算符 283\o"CurrentDocument"A.6顯式的行編號 284\o"CurrentDocument"A.7雜住指令 285\o"CurrentDocument"A.8錯誤指令 285\o"CurrentDocument"附錄B常用函數(shù) 286\o"CurrentDocument"附錄C圖形驅(qū)動程序和模式 289第0章程序設計概論用計算機解決問題包括兩個概念上不同的步驟。首先應該構(gòu)造ー個算法或在解決該問題的已有算法中選擇ー個,這個過程稱為算法設計。第二個步驟是用ー種程序設計語言將該算法表達為程序。剛開始學習程序設計時將算法翻譯成實際的編碼過程會是較為困難的階段。在學習了更多的有關(guān)程序設計的過程后,編碼會很快變得簡單,與此同時,隨著要求解決的問題越來越復雜,算法設計會變得越來越復雜。所以在學習中要有意識的兼顧這兩個過程。本章介紹計算機程序設計的基本概念及發(fā)展。閱讀本章讀者將了解到程序設計中的一些基本概念以及了解C語言的概貌。0.1程序與程序設計語言軟件是計算機系統(tǒng)中不可缺少的部分。什么是軟件?什么是程序?什么是程序設計語言?本節(jié)將給出解答。0.1.1程序什么是軟件?目前還沒有一個精確的定義。但認為軟件就是程序的概念肯定是錯誤的。目前比較公認的定義是由著名的軟件工程專家B.W.Boehm提出的“軟件是程序以及開發(fā)、使用和維護所需要的所有文檔”,由此可見,程序只是完整軟件產(chǎn)品的一個部分。什么是程序?國標中規(guī)定’‘計算機程序是按照具體要求產(chǎn)生的適合于計算機處理的指令序列”。也就是說,程序是計算機可以識別和執(zhí)行的操作表示的處理步驟。我國頒布的《計算機軟件保護條例》更加明確提出''計算機程序是指為了得到某種結(jié)果而可以由計算機等具有信息處理能力的裝置執(zhí)行的代碼化指令序列,或者可被自動地轉(zhuǎn)換成代碼化指令序列的符號化序列,或者符號化語句序列”??梢钥闯?程序既可以指能被計算機直接執(zhí)行的指令序列(可執(zhí)行文件),也可以是我們用程序設計語言編寫的源程序,但源程序不能被計算機直接執(zhí)行,必須通過程序設計語言翻譯為可執(zhí)行的指令序列。0.1.2程序設計語言程序是由人來編寫,程序的執(zhí)行實際上反映了人的設計思想。隨著計算機技術(shù)的不斷發(fā)展,“編程”技術(shù)也在不斷地發(fā)展,程序設計語言經(jīng)歷了幾個不同的階段。.機器語言眾所周知,數(shù)據(jù)是以二進制形式存儲在計算機中,我們所能感知的聲音或圖像進入計算機之前必須要經(jīng)過編碼轉(zhuǎn)化為二進制。計算機能夠執(zhí)行的程序也不例外,也是以二進制代碼表示指令序列。機器語言便是以二進制代碼表示機器指令的ー種語言,用機器語言寫的程序能被計算機直接執(zhí)行。最早的計算機(如ENIAC)便是采用機器語言來編寫程序,“程序員”采用手工撥鈕開關(guān)和紙帶打孔的方式向計算機輸入程序,那時的程序員都是一流的科學家。下面的程序段便是使用X86計算機的機器語言編寫的,功能是計算1+1。【例0.1】使用機器語言計算1+1。101110000000000100000000000001010000000100000000很明顯,用這樣的方式編寫程序非常麻煩,人類很難讀懂,而且不同的計算機提供的機器語言不同,編寫的代碼很難通用。于是匯編語言應運而生。.匯編語言為了解決機器語言編程的困難,人們專門編寫ー種稱為程序設計語言的程序,它提供一套語言規(guī)范,程序員可以采用該語言編寫“程序”,然后由程序設計語言將“程序”翻譯為計算機能夠執(zhí)行的程序。匯編語言便是最早的程序設計語言之一,用匯編語言編寫1+1的代碼如例0.2所示。【例0.1]使用匯編語言計算l+loMOVAX,1ADDAX,1上面的兩行符號,計算機并不能直接執(zhí)行,需要借助匯編編譯器將它翻譯成例0.1所示的二進制機器代碼。匯編語言屏蔽了枯燥的二進制代碼,匯編語言用人類易懂的符號代替二進制代碼,使得編程技術(shù)前進了一大步。但匯編語言與機器語言比較接近,多數(shù)符號基本上和一組二進制指令碼直接對應,與計算機內(nèi)部實現(xiàn)細節(jié)直接相關(guān),編程的難度仍然較大。各種新的程序設計語言不斷誕生發(fā)展,人們習慣把機器語言和匯編語言稱為低級語言,而把之后的程序設計語言稱為高級語言。.髙級語言高級語言的出現(xiàn)是編程語言的一大進步,它屏蔽了機器的細節(jié),語言更接近于自然語言和數(shù)學語言,給編程帶來了極大的方便。據(jù)不完全統(tǒng)計,目前已經(jīng)有超過2500種計算機語言,絕大多數(shù)是高級語言。利用C語言計算1+1的代碼如例0.3所示?!纠?.3】使用C語言計算I+1#inlcude<stdio.h>main()printf(''%d\nz\1+1);也許你還不懂這些符號和單詞,但很快就會學會這些內(nèi)容。髙級語言易學、易用、強大,具有一定的通用性。在例0.3中,如果想讓計算機計算20-4,你可能已經(jīng)猜到,將程序中的printf(“%d\n”,l+l);更改為printf("%d\I^,20-4);就這么簡單。回過頭來,如果要用機器語言或匯編語言來計算20-4,恐怕你就不容易猜到了。0.2C語言的歷史和發(fā)展高級語言門類繁多,c語言是其中影響最大、壽命最長的語言之一。本書便是教授大家利用C語言編寫計算機程序的。C語言的應用非常廣泛,普通計算機使用的Windows操作系統(tǒng)基本上是用C語言編寫的,用來進行文檔處理的Word、Excel也是基本上用C編寫的。C語言同時具有高級語言和低級語言的特點,因此也被稱為“中級”語言,使得C語言具有其它語言無法相比的速度優(yōu)勢和靈活性,C的語法規(guī)則簡單、靈活,使得它屏蔽了匯編語言復雜、難以調(diào)試等缺點。下面介紹C語言產(chǎn)生發(fā)展的簡單歷史。20世紀60年代,貝爾實驗室(BellLaboratory)的KenThompson開始用匯編語言開發(fā)UNIX操作系統(tǒng),當程序規(guī)模不斷擴大時,他開始無法忍受匯編語言的難寫、難讀和難以維護,便開始在BCPL程序設計語言的基礎(chǔ)上,將其改造成B語言,使得B語言更適合于開發(fā)UNIXo1971年,DennisM.Ritchie開始和Thompson合作開發(fā)UNIX,M.Ritchie主要負責改進B語言,后來便被命名為C語言。1973年C語言基本完成,Thompson和Ritchie用C語言重寫了UNIX系統(tǒng),UNIX操作獲得了巨大的成功,C語言也因此獲得廣泛的應用。C語言本身也在不斷發(fā)展,1989年,美國國家標準局(ANSI:AmericanNationalStandardsInstitute)發(fā)布了一個完整的C語言標準,被稱為C89或ANSIC。1990年,國際標準化組織(ISO:IntemationOrganizatonforStandardization)直接采用了C89,有的資料上稱為C90,實際上C90和C89完全ー樣。1999年,ISO發(fā)布了最新的C語言規(guī)范,被稱為C99,是目前C語言標準的最高版本。目前,有許多新程序設計語言正在興起,如C++、Java、C#等,它們借助面向?qū)ο蟪绦蛟O計思想,大大提高了開發(fā)效率,獲得了程序員們的認可,稱為程序設計語言中的三大主流陣營。在這樣的形勢下,仍然有一些程序員們在堅守C語言的陣營,他們追求著C語言的運行髙效率和靈活性。0.3ー個簡單程序的誕生在正式學習c語言編程規(guī)則之前,首先感受一下完整的c程序的的概貌,以及程序設計語言的工作過程。o.3.1簡單的C語言程序概貌下面的示例c程序,完成計算兩個整數(shù)中的最大值功能。【例0.4】計算兩個整數(shù)的最大值#include<stdio.h>/*GetMax函數(shù)求兩個整數(shù)中的最大值,兩個參數(shù)類型為整型函數(shù)返回值類型為整數(shù)?/intGetMax(inta,intb)(if(a>b) /?如果a比b的值大,則返回a*/returna;returnb;)voidmain()(intx,y,max;printf(''Pleaseinputtwointegers:'');scanf(''吿d吿d〃,&x,&y); /★通過鍵盤輸入兩個整數(shù)★/max=GetMax(x,y); /*求x、y中的最大值保存到max中?/printf(''Themaxnumberis:吿d\n”,max);}例0.4就是ー個簡單但完整的C語言程序,現(xiàn)在你可能還讀不懂其中每個符號所代表的含義,沒關(guān)系,先對程序有一個輪廓的認識。運行程序時,屏幕上將顯示一條提示信息:Pleaseinputtwointegers:要求用戶通過鍵盤輸入兩個整數(shù)。假設用戶輸入33和一4,即Pleaseinputtwointegers:33-4/符號/表示按下回車鍵,33和一4之間空ー個空格,也可以每輸入ー個數(shù)后按一下回車(以后的示例均如此表示),輸入后屏幕的提示結(jié)果為:Themaxnumberis:33.C語言程序由函數(shù)構(gòu)成函數(shù)(Function)是構(gòu)成C語言程序的基本單位,例0.4由GetMaX和main兩個函數(shù)構(gòu)成。毎個函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,GetMax的函數(shù)首部為"intGetMax(inta,intb)”,main函數(shù)的函數(shù)首部為"voidmain。”;函數(shù)體便是函數(shù)首部之后的ー對花括號”{ド之間的內(nèi)容。具體的有關(guān)函數(shù)的知識請參照第五章內(nèi)容。每個程序中有且只能有一個main函數(shù),這個函數(shù)稱為主函數(shù),程序執(zhí)行時,便從這個函數(shù)體“對應”的第一條指令開始執(zhí)行。ー個C程序中可以包含多個自定義函數(shù),也可以ー個沒有,示例。.4中的GetMax函數(shù)便是自定義函數(shù),main以外的函數(shù)均是自定義函數(shù)。.對庫函數(shù)的引用編程時,如果所有的函數(shù)都要程序員自己編寫,那工作效率一定很低,對于ー些通用的功能,多數(shù)編譯器均提供了一組標準庫函數(shù)。庫函數(shù)的使用極大提高了編程效率,程序員可以在自己的程序中調(diào)用庫函數(shù)。要調(diào)用系統(tǒng)提供的庫函數(shù),必須在程序中包含相應的頭文件(Headerfiles),包含頭文件要用到編譯預處理指令,示例。.4中所用的為:#include<stdio.h>stdio.h是最常用的需要包含的頭文件,一般程序中均要包含這ー頭文件。要將計算結(jié)果輸出的屏幕上,需要調(diào)用庫函數(shù)中的printf函數(shù),從鍵盤讓用戶輸入數(shù)據(jù),需要調(diào)用庫函數(shù)中的scanf函數(shù),它們都需要包含stdio.h;如果要調(diào)用數(shù)學函數(shù),如計算正弦函數(shù)值的sin函數(shù),則要包含math.h(具體格式為:#include<math.h>)o通常情況下,將頭文件包含放在程序的最開始處。.培養(yǎng)良好的書寫習慣C程序的函數(shù)體部分由語句構(gòu)成,語句都是以分號作為結(jié)束符(反過來不成立,出現(xiàn)分號的地方不一定是一條語句的結(jié)束),編譯預處理指令(如頭文件包含)不是C語句,所以不能在最后加分號,函數(shù)的定義前后也不能加分號。C的語句書寫格式比較規(guī)范,可以在一行內(nèi)書寫多條語句,也可以將一條語句分開寫在多行上。但為了保證程序的可讀性和調(diào)試改錯的方便,應該養(yǎng)成良好的代碼書寫規(guī)范和習慣。ー般情況下,一行內(nèi)只寫一條語句,代碼結(jié)構(gòu)清楚,錯落有致,希望大家在上機實踐的時候,仿照書中的例題來書寫程序,養(yǎng)成良好的習慣。.注釋也很重要在例0.4中,/*和*/之間的內(nèi)容便是注釋,注釋是程序員對自己所編寫程序的注釋性說明,可以采用中文也可以用英文,但一定要放在/*和*/之間,而且/和?之間不能有空格。編譯器在將程序翻譯為機器語言代碼時,忽略所有的注釋內(nèi)容,也就是說注釋對程序功能沒有任何影響。但注釋卻是編寫程序時不可缺少的內(nèi)容,清晰的注釋記錄了程序員編寫程序時的思路和設計思想,便于其他程序員或自己事后再來閱讀這ー段程序。規(guī)范化的程序設計提倡給程序加上必要的注釋。C語言的注釋可以有兩種方式,上述是第一種方式,放在/*和*/之間,中間可以換行,也就是說可以有較多的注釋說明。另一種方式最早是C++語言引入的,目前大多數(shù)C編譯器已經(jīng)支持,ANSIC標準也已經(jīng)引入,也稱為行注釋,用〃引導,〃之后到該行結(jié)束所有內(nèi)容都是注釋。如:scanf &x,&y); //通過鍵盤輸入兩個整數(shù)本教材中,根據(jù)需要兩種注釋都使用。0.3.2第一個程序的誕生用高級語言編寫的程序,計算機并不能直接運行,必須要借助編譯程序?qū)⑽覀兙帉懙拇a翻譯為用〇和1表示的機器語言指令代碼,才能真正在計算機中執(zhí)行。用c語言開發(fā)軟件都要經(jīng)歷“編輯f編譯f鏈接f運行”的過程。.編輯源代碼編輯階段就是利用c語言編寫實現(xiàn)特定功能的程序代碼,通常將這ー階段的代碼稱為源代碼(SourceCode),源代碼必須遵循高級語言的規(guī)范,同時也人的智慧與思維的體現(xiàn)。本書的其余章節(jié)都是講解如何寫好C語言源代碼。一般將編寫好的C語言源代碼保存為文本文件,擴展名為.c,如例0.4的代碼我們可以保存為findmax.Co.編譯(Compile)編譯由編譯器負責完成,編譯器是ー個事先開發(fā)好的軟件,它專門用于將我們編寫的源代碼翻譯為計算機能夠理解的二進制目標代碼。能將C語言源代碼翻譯為二進制碼的的編譯器有很多,常用的有TurboC、MicrosoftC、BorlandC等。編譯器是ー種非常復雜的軟件,不同的編譯器在翻譯代碼時的策略也不完全相同,同樣的代碼經(jīng)不同的編譯器翻譯后的可執(zhí)行文件并不完全相同,所以在真正開始軟件開發(fā)時,首先要了解自己所選擇的編譯器。本書選用TurboC作為編譯器,有關(guān)TurboC的操作請參照附錄的說明。在編譯階段,編譯器通常會發(fā)現(xiàn)源代碼中不符合語言規(guī)范的語法錯誤,程序員需要修訂這些錯誤并重新編譯直到編譯成功。如果你輸入的findmax.c沒有語法錯誤,編譯后將生成findmax.obj,我們稱之為目標文件。.鏈接(Link)程序中除了自己編寫的代碼外,往往還需要調(diào)用庫函數(shù)中提供的函數(shù)或者其他人編寫目標函數(shù),鏈接過程便是將這些目標函數(shù)合并成有關(guān)完整的可執(zhí)行文件。對于例0.4的findmax.c,將生成findmax.exe,findmax.exe便可以在計算機上直接運行。目前大多數(shù)編譯器都提供了集成的開發(fā)環(huán)境(IDE:IntegratedDevelopmentEnviroment),只要點擊一下菜單,便可以連續(xù)完成編譯、鏈接過程(編譯出錯則不能完成鏈接),最后生成ー個可執(zhí)行文件,一般不會覺察到鏈接過程的存在。.運行鏈接成功后得到的便是ー個可執(zhí)行程序,可執(zhí)行程序便可以復制給別人去執(zhí)行應用??蓤?zhí)行程序生成后便和源代碼脫離關(guān)系,可執(zhí)行程序的執(zhí)行并不需要源代碼的存在。很多初學C語言程序設計的人,總是認為是自己編寫的源代碼再執(zhí)行(一點TurboC中的Run菜單項,程序便執(zhí)行),實際上應該是你編寫的源代碼被編譯器翻譯成的可執(zhí)行程序在運行,當運行有錯誤時,重新修改代碼,重新翻譯,重新運行。程序在運行時,將二進制指令代碼和要處理的數(shù)據(jù)加載到內(nèi)存中オ能執(zhí)行,要想了解可執(zhí)行文件的加載過程還需要進一步的學習,而源代碼只是存儲在磁盤上的ー個普通文件。由此可見,真正執(zhí)行的不是源代碼,而是編譯鏈接結(jié)果加載到內(nèi)存后的二進制代碼。.小結(jié):程序員、編譯器、測試人員、用戶在軟件開發(fā)過程中,有非常重要的四個角色:程序員、編譯器、測試人員和用戶。程序員是C語言源代碼的撰寫者,根據(jù)功能需求,按C語言語言規(guī)范編寫源代碼。源代碼需要借助編譯器進行翻譯,我們需要購買一個C語言編譯器(如TurboC)安裝到自己的機器上,執(zhí)行編譯器提供的翻譯功能,生成一個可執(zhí)行程序。生成的可執(zhí)行程序需要經(jīng)過測試人員進行運行測試。測試無誤后,將軟件打包分發(fā)、銷售給廣大用戶使用,用戶是軟件的使用者和收益者,用戶通過軟件解決實際的問題。當然在學習C語言編程的時候,我們既是程序員,同時也是測試人員和用戶,但我們不能混淆這幾個截然不同的角色。編寫源代碼時我們是程序員:編譯時需要借助編譯軟件完成:程序編寫完成后要反復運行,查看有無功能上的缺陷或錯誤,此時我們便是測試員和用戶。程序員、測試員和用戶應該是在不同的環(huán)境和場合下編寫或程序,但在實際學習時,多個環(huán)節(jié)幾乎都是在同一臺機器的TurboC環(huán)境下完成的,容易造成錯覺。大家在編寫程序時,要養(yǎng)成良好的編碼習慣,編寫的程序要界面友好,輸入輸出要有提示說明,用戶輸入錯誤要有檢測和提示。你編寫的程序不一定只是你在運行,你的成果可能會拷貝到別人的機器上執(zhí)行,如果在輸入數(shù)據(jù)時沒有提示,用戶很難知道程序到底要干什么?在例0.4中,在要求用戶輸入兩個整數(shù)之前,通過printf("Pleaseinputtwointegers:");向屏幕上打印一行提示,非常直觀,在上機實踐時一定要遵循這ー編碼習慣。本章小結(jié)C語言是目前應用比較廣泛的編程語言之一,本章簡單介紹了程序及程序設計語言的基本概念,介紹了C程序設計語言的發(fā)展歷史。C語言編寫的源程序不能被計算機直接執(zhí)行,必須借助編譯器將源代碼編譯鏈接為可執(zhí)行程序,才能被計算機識別執(zhí)行。通過一個簡單的示例,展現(xiàn)C語言源代碼的概貌和編寫C程序的基本流程。復習題1、指令、程序和軟件有什么區(qū)別?2、機器語言、匯編語言、高級語言各有什么特點?3、簡述C語言編程的基本過程。4、簡述C程序的基本結(jié)構(gòu)。5、程序員、編譯器、測試人員、用戶在軟件開發(fā)過程中各自的職責是什么?第1章C程序設計基礎(chǔ)知識程序的最后執(zhí)行需要將可執(zhí)行代碼及待處理的數(shù)據(jù)加載到內(nèi)存中,計算機內(nèi)存中要為可執(zhí)行代碼留出保存空間,還要為待處理的數(shù)據(jù)留出相應的空間,很多場合下,要處理的數(shù)據(jù)占用的空間要比可執(zhí)行代碼占用的空間要多。現(xiàn)實生活中有自然數(shù)、整數(shù)、小數(shù)等概念,不同類型數(shù)的精度是不一樣的。在計算機內(nèi)存中,也要區(qū)分所保存數(shù)據(jù)的類型,如整數(shù)、浮點數(shù)、字符數(shù)據(jù)等,不同類型數(shù)據(jù)所占用的內(nèi)存空間(即占用的字節(jié)數(shù))是不ー樣的。大多數(shù)高級語言在源代碼中都要用聲明語句對程序中將要處理的數(shù)據(jù)進行變量定義,其目的就是為不同類型的數(shù)據(jù)開辟不同的存儲空間,便于進行處理與存儲。本章從數(shù)據(jù)基本類型開始,介紹變量定義、基本運算符及表達式語法,是C語言編程中的基礎(chǔ)知識。變量C語言的數(shù)據(jù)類型比較豐富,整體上可劃分為基本類型、構(gòu)造類型以及空類型,基本類型包括整型、浮點型(進ー步區(qū)分為單精度和雙精度類型)、字符型、枚舉類型和指針類型,構(gòu)造類型有數(shù)組、結(jié)構(gòu)體和共用體。本節(jié)將重點討論最基本的整型數(shù)和實型數(shù)以及定義整型和實型變量的定義方法。有關(guān)內(nèi)存的基礎(chǔ)概念內(nèi)存由能存儲信息的介質(zhì)組成,它們劃分為眾多的存儲單元,每個存儲單元可以存儲ー個字節(jié)或8個二進制位,可以將存儲單元理解為由8個微小開關(guān)構(gòu)成,每個開關(guān)可以表示一個二進制位,將指令和數(shù)據(jù)送入存儲器,只不過是打開ー些開關(guān)而合上另外一些開關(guān)。內(nèi)存包含眾多的存儲單元,為了識別它們,從。開始順序為它們編號,編號稱為某個存儲單元的地址,表示這一存儲單元在內(nèi)存中的位置(很多時候用相對位置的概念)。存儲單元的地址反映的是位置信息,存儲單元的內(nèi)容是8個二進制數(shù)。磁盤、光盤、CPU中的寄存器等存儲器的基本原理與內(nèi)存相似,只不過各自的存儲介質(zhì)不同而已。變量的引入程序運行過程中,經(jīng)常需要保存用戶輸入的數(shù)據(jù)、計算的中間結(jié)果以及最終計算結(jié)果,因此在c語言中引入了變量的概念,用來存放值可以變化的數(shù)據(jù)。顧名思義,變量對應的數(shù)據(jù)可以被讀出來參與計算,也可以將計算結(jié)果寫入某個變量對應的存儲空間。C語言中每個變量要具備3個要素:變量的名稱、變量的數(shù)據(jù)類型、變量的值。.標識符命名規(guī)則C程序中經(jīng)常要為函數(shù)、變量等起一個符號化的名稱,這些符號稱為標識符,標識符的命名必須遵循一定的規(guī)則。標識符只能由英文的字母、數(shù)字和下劃線構(gòu)成,標識符不能以數(shù)字打頭,第一個字符只能是字母或下劃線。C語言的關(guān)鍵字不能作為標識符,C語言總共有32個關(guān)鍵字,見表需要注意的是,不同的C編譯器,支持的關(guān)鍵字略有不同。C語言中的標識符區(qū)分大小寫,如Sum和sum是兩個不同的標識符。在C語言中,標識符長度可以不受限制,但舊的ANSIC規(guī)定,只有前6個字符有意義,也就是說編譯器只看標識符的前6個字符,新的C和C++編譯器打破了這ー限制,但不同的編譯器還是有一個長度限制。標識符命名要養(yǎng)成良好的習慣和一致的風格,盡量做到“見名知義’‘,尤其當程序代碼增多時,不好的標識符命名將使得代碼難以閱讀,也很難維護。這一條不是硬性規(guī)定,但應該從ー開始就要養(yǎng)成良好的習慣。表1-1C語言的關(guān)鍵字表autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile2.變量的名字變量的名字可以根據(jù)需要由程序員指定,除了要遵循標識符的規(guī)定,還應該注意以下的規(guī)則。1)在同一個函數(shù)體內(nèi),不要定義同名的兩個變量。在TurboC中,所有變量的定義語句必須放在函數(shù)體的最開始處,變量定義要遵循‘‘先定義后使用”的原則,否則會出現(xiàn)編譯錯誤。2) 盡量避免定義與庫函數(shù)中函數(shù)名同名的變量,如primf、scanf等,雖然不會出現(xiàn)語法錯誤,但容易造成混亂。下面的變量名是合法的變量名:total_money、一MyCar、AverageScore,class_l,也是比較好的變量命名,變量名中最好用英文單詞表達變量的含義,有的系統(tǒng)推薦使用下劃線分隔單詞,有的推薦使用單詞首字母大寫來區(qū)分,盡量使用統(tǒng)ー的風格,避免多種方法混雜在ー起。下面的變量命名雖然合法,卻不是很好的命名習慣:al、a2、xyz等。而下面的變量命名則是不合法的:l_class、total+moneny、My=Car>into.變量的定義方法變量定義的基本語法格式為:變量類型變量名列表;其中變量類型確定了變量所要存儲數(shù)據(jù)的類型,如整型、實型等,變量名列表列出多個需要定義的變量的名稱(也可以一次只定義ー個變量),變量名之間用逗號(一定不要使用中文逗號)分隔?!纠?.1]變量的定義intenglish_score;intmath_scoreztotal_score;doubleaverage_score;float_height;char_myChar;定義整型變量使用關(guān)鍵詞int,定義單精度實數(shù)用關(guān)鍵詞noat,定義雙精度實數(shù)使用關(guān)鍵字double,double類型數(shù)據(jù)比float類型數(shù)據(jù)有更高的存儲精度。在這些基本類型關(guān)鍵詞之前,還可以加一些修飾符,如short、long、signed、unsigned等,以確定更加具體的類型,具體的用法稍后再介紹。變量定義的同時還可以為變量指定初始值,如inta=5;。.變量與存儲單元的探討程序員在源代碼中定義的變量,是程序設計語言中特有的概念,經(jīng)編譯器編譯生成的可執(zhí)行程序加載到內(nèi)存中時,并沒有變量的概念,變量名被編譯器翻譯為某個存儲單元的“地址”,即它在內(nèi)存中的位置?;仡櫼幌吕?。.4中求兩個整數(shù)中的最大值的程序,用戶通過鍵盤輸入兩個整數(shù),兩個整數(shù)存儲在內(nèi)存中某些存儲單元,之后需要引用這兩個整數(shù)的值,在程序的運行階段,是通過指定數(shù)據(jù)在內(nèi)存中的位置來進行訪問的,這個位置由編譯器和系統(tǒng)加載可執(zhí)行程序時共同確定。而程序員在編寫源代碼的時候,很難知道數(shù)據(jù)將來會放在內(nèi)存的什么地方,為了屏蔽這ー細節(jié),我們用定義變量的方式來解決這一問題,定義的變量將來會放在內(nèi)存的什么地方這ー復雜問題交由編譯器來解決。由此必須明確,變量是為了編程的方便而提出的概念,我們只需通過變量名即可引用變量將來所對應存儲單元的值,作為編程人員,可以簡單地將變量和其將來所對應的存儲單元等同起來。.變量類型與占用的存儲空間定義變量需要指定變量的類型,變量的類型決定了在加載可執(zhí)行程序時,系統(tǒng)將要為它在內(nèi)存中開辟多少個字節(jié)的存儲空間,這ー工作由編譯器和操作系統(tǒng)聯(lián)合完成。同樣當需要訪問變量所對應的數(shù)據(jù)時,系統(tǒng)將根據(jù)變量的類型從某個位置開始(變量編譯后的地址),連續(xù)取若干個字節(jié)的內(nèi)容并解釋為該類型的數(shù)據(jù)。通俗地講,變量對應的是ー組存儲單元,變量的值是這些存儲單元中的二進制位組成的數(shù)。不同的系統(tǒng)、不同的編譯器中,某種數(shù)據(jù)類型占用的存儲空間并不一樣。表1-2以TurboC和常見的x86為例,列出常用的整型、實型和字符型變量類型將占用的存儲空間,若讀者使用不同的開發(fā)環(huán)境,請參照具體的文檔說明。表1-2不同類型數(shù)據(jù)占用存儲空間情況類型說明占用字節(jié)數(shù)取值范圍備注int整型2?32768?32767-2i5~(2,5-1)signed帶符號整型,與int等價shortint短整型,與int等價short短整型,與int等價singnedshortint帶符號短整型,與int等價unsignedint無符號整型2〇?655350~(2|6-1)unsignedshortint無符號短整型,與無符號整型等價longint長整型4-2147483648?2147483647-231-(23i-1)long長整型,與longint等價signedlongint帶符號長整型,與longint等價unsignedlongint無符號長整型4〇?42949672950-(232-l)float單精度型4-3.4X1038?3.4X10387位有效位double雙精度型8-1.7X1O3o8~1.7X1O30815位有效位longdouble長雙精度型10-3.4X104932?3.4X10493219位有效位char字符型1-128?127-27~(27-1)signedchar帶符號字符型,與char等りトunsignedchar無符號字符型10-2550-(28-l)關(guān)于不同類型數(shù)據(jù)占用存儲空間的幾點說明:signed(帶符號型)和unsigned只能修飾char和int型,因為double和float型必須為帶符號型,不能再修飾。char和int型默認情況下就是signed類型,可以說signed關(guān)鍵詞總是可以省略。short只能修飾int型,在TurboC中,short修飾符也總是可以省略的。long可以用來修飾int和double,longint用來表示更多位數(shù)的整數(shù),longdouble表示精度更高的雙精度實數(shù)。單很多編譯器并沒有實現(xiàn)longdouble數(shù)據(jù)類型。int型占用存儲空間在不同編譯器之間變化是最為無常的,在實際編程時,雖然可以省略諸如short之類的修飾符,但最好加上,以增加程序的可移植性。char型變量用于存儲ー個西文字符。但讀者要注意,char變量中存儲的是對應字符的ASCII碼。某種類型的數(shù)據(jù)所能表示的數(shù)值范圍是一定的,如int型變量占兩個字節(jié)(16位二進制),最高位為符號位,所能表示的整數(shù)范圍為ー32768?32767,如果將大于32767或小于ー32768的整數(shù)賦值給某個整型變量,則會發(fā)生錯誤,稱為溢出。例1.2展現(xiàn)了整型變量的溢出?!纠?.2]整型變量的溢出?include<stdio.h>voidmain()unsignedintbad_int;bad_int=65536;printf(''Theresultis:%d\n”,bad_int);程序的輸出結(jié)果為:Theresultis0。bad_int是無符號類型,所以65535在內(nèi)存中的表示形式如圖1-1所示。1|1|1|1|1|1|1|1|1|1|1|1|1|1|1

圖1-165535在內(nèi)存中的示意圖0000000000000000圖1-2〇在內(nèi)存中的示意圖當將65535加1變?yōu)?5536時,內(nèi)存中的存儲形式變?yōu)閳D1-2所示,它正好是〇的存儲形式。int型變量的表示范圍為0?65535,在所能表示的最大數(shù)基礎(chǔ)上加1,該變量就變?yōu)榭杀硎痉秶鷥?nèi)的最小值,這一點非常類似鐘表的鐘點,過了12點,便又從。點開始。數(shù)據(jù)在內(nèi)存中均以補碼的形式存儲,無符號數(shù)的原碼與反碼相同,只能表示正數(shù)。對于帶符號數(shù),表示整數(shù)的16位二進制中的最高位為符號位,1表示負數(shù),0表示整數(shù),數(shù)據(jù)同樣以補碼的形式存儲,帶符號整型數(shù)的取值范圍為ー32768?32767,32768按整數(shù)輸出將輸出ー32768。具體的驗證過程,請讀者自行完成。所以在程序設計過程中,應充分考慮數(shù)據(jù)的變化范圍,以選擇合適的數(shù)據(jù)類型來存儲數(shù)據(jù),避免由于溢出而導致的程序運行錯誤,這ー類錯誤是很難被發(fā)現(xiàn)的。1.2常量程序中除了需要定義變量用于開辟存儲空間、存儲數(shù)據(jù),我們還需要一些在程序運行過程中保持不變的數(shù)據(jù),如圓周率3.1415926、稅率、萬有引力常數(shù)等等,常量也有數(shù)據(jù)類型,常量的類型也決定了該常數(shù)占用的存儲空間。常量可區(qū)分為字面常量、符號常量和const常量,字面常量是程序代碼中直接書寫的數(shù)值,經(jīng)編譯后被嵌入在代碼中,稱為立即數(shù),程序運行時直接參與運算:符號常量與字面常量類似,但有一個易于理解的符號名稱;const常量與變量類似,程序加載時,需要為const常量開辟存儲空間,const常量有特定的數(shù)據(jù)類型,有符號化的名稱,只是在程序運行過程中,常量的值不能被修改。字面常量在書寫源程序時,經(jīng)常要直接書寫數(shù)值常量,本節(jié)重點介紹不同類型字面常量的書寫規(guī)范和格式。.整型常量在C語言中可以用十進制、ハ進制或十六進制書寫整型常量。默認方式為十進制,可以包含0-9的數(shù)字以及表示負數(shù)的號,不能以0開頭。如。、128、ー23等。ハ進制整型常量,在正常數(shù)值前加上〇作為前綴,數(shù)字由。?7構(gòu)成,如012(相當于十進制的10),-048(相當于十進制的ー40)。十六進制整型常量,在正常數(shù)值前加上Ox或0X作為前綴,數(shù)字由〇?9、A?F、a?f構(gòu)成,如0x12(表示十進制的18)、ー0X7B(表示十進制的ー123)。整型常量默認的類型為int型,如果要表示長整型整數(shù)常量,可以在正常數(shù)字后加一大寫或小寫的L作后綴,如129L、1391、Ox7AL等。默認情況下,整型常量為帶符號常量,如果要表示無符號整型常量,可以在數(shù)據(jù)后面加上大寫或小寫的U作為后綴。如123u、3456UL等。.實型常量實型常量只能用十進制表示,有小數(shù)方式和指數(shù)方式兩種表示方法。小數(shù)方式,與正常書寫的小數(shù)類似,如3.1415、ー2.、.345、0.0等。指數(shù)方式,由小數(shù)部分、代表指數(shù)的e或E、指數(shù)三部分構(gòu)成,指數(shù)為帶符號整數(shù),E或e之前必須有數(shù)字。合法的科學表示小數(shù)有1.23456E4、12.3456e3,它們均表示十進制的12345.6。而1.2e2.3、.e2、E4均不是合法的常量。默認情況下,實型常量為雙精度類型,在實型常量之后加上F或f作為后綴表示數(shù)據(jù)類型為單精度類型,在實型常量之后加上L或1作為后綴表示數(shù)據(jù)類型為長雙精度類型,但這ー類型在很多編譯器中并未實現(xiàn)。.字符常量C語言中的字符常量是由一對單引號括起來的一個字符,如'a,,‘べ,’鏟等。字符常量兩側(cè)的單引號是必須的,注意5和5兩個不同的對象,’5'表示字符5,而5表示整數(shù)的數(shù)字5,請讀者不要混淆。大多數(shù)字符常量都可以通過加單引號的方式表示,但有些特殊字符,如單引號本身和有些不可見的特殊字符,就無法通過這種方式表示。為了解決這ー問題,C語言引入“轉(zhuǎn)義字符”,用加若干字符的形式來表示有些特殊的字符,常見的轉(zhuǎn)義字符如表2-3所示。字符含義字符含義t\n,換行'\a'響鈴報警ヤ,回車(不換行)‘ヽ’'ー個單引號4\f水平制表符,ヽ,,,ー個雙引號W垂直制表符'Wー個反斜線W退格問號ヽf,走紙換頁4\ddd'1-3位

溫馨提示

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

評論

0/150

提交評論