




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C語言概述1.1C語言的發展歷程
C語言是國際上廣泛流行的高級語言。C語言的發展過程可以粗略的分為誕生(1970年—1973年)、發展(1973年—1988年)和成熟(1988年以後)三個階段。
(1)C語言是在B語言的基礎上發展起來的。B(BCPL)語言是1970年由美國貝爾實驗室設計的,並用於編寫了第一個UNIX操作系統,在PDP7上實現。優點:精練,接近硬體缺點:過於簡單,數據無類型。1.1C語言的發展歷程(2)1973年貝爾實驗室的D.M.Ritchie在B語言的基礎上設計出了C語言,但僅在貝爾實驗室使用。1975年UNIX第6版發佈,C優點突出引起關注。1977年出現了《可移植C語言編譯程序》。
1978年影響深遠的名著《TheCProgrammingLanguage》由BrianW.Kernighan和DennisM.Ritchie合著,被稱為標準C。在此之後,C語言風靡世界,成為最廣泛的幾種電腦語言之一。1983年,美國國家標準化協會(ANSI)根據C語言各種版本對C的發展和擴充,制定了新的標準ANSIC,比標準C有了很大的發展。1.1C語言的發展歷程
(3)1988年K&R按照ANSIC修改了他們的《TheCProgrammingLanguage》。1987年,ANSI公佈了新標準——87ANSIC。
1990年,國際標準化組織接受了87ANSIC為ISOC的標準(ISO9899—1990)。
1994年,ISO又修訂了C語言標準。目前流行的C語言編譯系統大多是以ANSIC為基礎進行開發的。
說明:不同版本的C編譯系統所實現的語言功能和語法規則又略有差別,因此讀者可以參閱有關手冊,瞭解所用的C語言編譯系統的特點。本書的敘述基本上以ANSIC為基礎。1.2數據在電腦內的存儲形式和表示方法1.2.1記憶體的組織形式1.內記憶體RAM(RandomAccessMemory)2.內記憶體的組織形式圖1.1內記憶體的結構示意圖
1.2數據在電腦內的存儲形式和表示方法加法運算規則:0+0=00+1=11+0=11+1=10乘法運算規則:0×0=00×1=01×0=01×1=12.十進位數與二進位數的轉換例如:將十進位19.45轉換為二進位數。19.45的整數部分為19,其轉換的過程如下:1.2數據在電腦內的存儲形式和表示方法19.45的小數部分為0.45(取四位小數),其轉換的過程如下:、0.45×2=0.90取其整數部分為00.90×2=1.80取其整數部分為10.80×2=1.60取其整數部分為10.60×2=1.20取其整數部分為1……
依次類推。則得到(19.45)10=(10011.0111)2括弧外的下標10和2,分別表示十進位數和二進位數。由此可以觀察到:19=1×24+0×23+0×22+1×21+1×20。
1.2數據在電腦內的存儲形式和表示方法1.2.3八進制(octal)數
1.八進制數的基本特徵八進制數由0、1、2、3、4、5、6、7等八個數字元號表示;基數為8;按逢8進1、借1算8的規則計數;採用位置記數法(或帶權記數法),權值為8。其基本運算規則與十進位相似。2.二進位數與八進制數的轉換
3.八進制數與十進位數的轉換1.2數據在電腦內的存儲形式和表示方法1.2.4十六進制(Hexadecimal)數1.十六進制數的基本特徵十六進制數由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等十六個數字元號表示;基數為16;按逢16進1、借1算16的規則計數;採用位置記數法(或帶權記數法),權值為16。十六進制數中的A、B、C、D、E、F分別代表10、11、12、13、14、15。在C語言中,表示十六進制數時,大小寫字母作用相同。2.十六進制數與二進位數間的轉換例如:將二進位數1011010101111110轉換為十六進制數。二進位數1011010101111110可以寫成1011,0101,0111,1110四組數,再分別用十六進制數碼C、5、7、E表示。即(1011010101111110)2=(C57E)161.2數據在電腦內的存儲形式和表示方法表1.1各種進位制度的常用數值轉換表
3.十六進制數與十進位數間的轉換若將一個十六進制整數轉換為十進位數,只需把十六進制數按權展開,累加各項即可。
注意:在進行轉換時,每位十六進制數都應表示為4位二進位數,如0應表示為0000,而不應只寫成0,否則就會丟失某些位。八進制數轉換為二進位數時,每位八進制數對應一個3位的二進位數。
1.2數據在電腦內的存儲形式和表示方法1.2.5原碼、反碼和補數。
在電腦內部,所有的資訊都要用二進位數來表示,數的符號“+”、“-”也必須採用二進位數來表示。通常以0表示正數的符號,以1表示負數的符號,當符號和數值都二進位數0和1表示之後,這樣的數叫机器数或机器码。
機器碼可以採用不同的碼制來表示,常用的有原碼、反碼和補數三種表示方法。這樣表示的目的是在電腦內部可以讓符號位一道參加數值運算。1.數的原碼表示原碼通常用最高位表示數的符號位,數值部分用二進位絕對值表示。即一個正數的原碼是它本身,一個負數的原碼是其符號位加數值部分。2.數的反碼表示
一個正數的反碼與其原碼相同,一個負數的反碼是將符號位除外,其他各位逐位取反,即0變1,1变0,參看表1.2。3.補數表示方法先以日常鐘錶的時間表示為例,說明補數的概念。假設現在的標準時間為6點整,而有一只指針指向10點,為了校準時間,可以採取兩種方法:一是將時針退(10-6)=4格;另一種方法是將時針向前撥(12-4)=8格。
這兩種方法都可以將鐘錶校準的正確時間。對於這個問題來說,減4和加8是等價的。由此,可以說(+8)和(-4)是以12為模的補數。1.2数据在计算机内的存储形式和表示方法說明:在電腦中,帶符號的數用補數表示,此時減法運算變為加法運算,從而簡化了電腦硬體電路的結構。當運算的結果超出補數表示範圍時,結果就不正確了,這稱為“溢出”。1.2数据在计算机内的存储形式和表示方法在數學上由於-4=-1×12+8,+8=0×12+8稱為同餘式。對於同餘式中的模,則表示可以棄舍或丟掉的數值。其結果是減去4和加上8都可以實現正確時間的校準。補數的計算規則:一個正數的補數和其原碼形式相同,一個負數的補數是將其反碼加1,參看表1.2中部分举例。在计算机中,负数是用其补码表示的。例如:求-42的補數。42用二進位數表示是101010,其原码为10101010,则其反码为11010101,即其反碼加1即为补码:11010110。1.3利用计算机处理问题的基本过程1.電腦算題的簡單過程2.利用電腦處理問題的過程(1)需求分析。(2)確定處理方案。
(3)確定操作步驟。(4)編寫根源程式。(5)輸入和運行程式。(6)整理結果。
圖1.3電腦處理一個實際問題的主要過程
1.4最簡單的C程式的構成
1.4.1C語言的特點(1)語言簡潔、緊湊,使用方便、靈活。(2)具有豐富的運算符和數據結構。(3)C語言是完全模組化和結構化的語言。(4)C語言因為兼有高級和低級語言的特點。(5)與組合語言相比,可移植性好。(6)生成目標代碼品質高。1.4最簡單的C程式的構成
1.4.2C語言中的字元集
1.字元集字元是組成語言的最基本的元素。C語言字元集由字母、數字、空格、標點和特殊字元組成,具體可以參看附錄1中常用字符與ASCII碼表。具體可以分為如下幾類:(1)字母。小寫英文字母a~z共26個,大寫字母A~Z共26個。
(2)數字。0~9共10個。
(3)空白符。空白字元、跳位字元、換行符等統稱為空白符。
(4)標點和特殊字元。1.4最簡單的C程式的構成
2.識別字
C語言中用來對變數、符號常量、函數、數組、自定義類型等數據對象命名的有效字元序列統稱為識別字(identifier)。簡單地說,識別字就是一個名字。
C語言規定識別字只能由字母、數字和下劃線3種字元組成,且第1個字元必須為字母或下劃線。
下麵列出的是合法的識別字,可以作為變數名。X1,a,A3,student,abc,kk下麵是不合法的識別字和變數名M.D.John,¥123,#33,3D64,a>b,3x特別注意:編譯系統將大寫字母和小寫字母認為是兩個不同的字元。
1.4最簡單的C程式的構成
3.關鍵字C語言的32個關鍵字,是C語言編譯系統賦予規定含義的英文單詞或字母組合,在進行C語言的程式設計時,不能再賦予其新的含義。C語言的關鍵字分為以下幾類:(1)類型說明符。用於定義變數、函數或其他數據結構的類型。如int、double等。(2)語句定義符。用於表示一個語句的功能。如if、else、while等。(3)預處理命令字。用於表示一個預處理命令。如include、define等。C語言的32個關鍵字,具體功能可以參看附錄Ⅳ。例1.1
輸出一行資訊Helloworld!。
#include<stdio.h>void
main(){
printf("Helloworld!
\n");}
1.4最簡單的C程式的構成/*檔包含*//*主函數*//*函數體開始*//*輸出語句*//*函數體結束*/說明
main
主函數名,每個C程式必須有一個主函數main,系統執行C程式時,從main函數開始。()是函數的標誌。1.4.3C程式的構成1.簡單的C程式舉例
1.4最簡單的C程式的構成
說明void函數類型表示此函數是“空類型”,printf是C編譯系統提供的標準函數庫中的輸出函數名,
雙引號“”是字串的定界符,雙引號內的字串按原樣輸出。“\n”是换行符,即在输出“Helloworld!”後回車換行。
{}是函數開始和結束的標誌,不可省每個C語句以分號結束
#是預處理命令行起始符號。使用标准库函數時應在程式開頭一行寫:#includestdio.h>說明:本程式的運行結果:
Helloworld!1.4最簡單的C程式的構成例1.2
求兩個整數之和。#include<stdio.h>voidmain(){inta,b,sum;a=11;b=45;
sum=a+b;
printf(“sumis%d\n”,sum);}
/*求兩數之和*/
/*變數聲明部分*//*賦值語句*//*輸出函數*/
本程式的運行結果:sumis561.4最簡單的C程式的構成
說明本程式中各行右側的/*……*/表示注釋。逗號主要用在變數類型說明中分隔各個變數,是分隔符號。在C程式中採用的分隔符號最常用的有逗號和空格兩種。空格多用於語句各單詞之間,作分隔符號。“inta,b,sum;”是函數體中的聲明部分,定義變數a和b,指定a和b為整型(int)變數。“a=11;b=45;sum=a+b;”是賦值語句。printf函數中得“%”是輸入輸出的“格式字串”,用來指定輸入輸出時的數據類型和格式。
1.4最簡單的C程式的構成例1.3計算長為l,寬為w,高為h的長方體體積v。
#include<stdio.h>viodmain(){intvolume(intlength,intwidth,inthigh);intl,w,h,v;printf("pleaseinputl,w,h:\n");
scanf("%d,%d,%d",&l,&w,&h);v=volume(l,w,h);
printf("v=%d",v);
return;}intvolume(intlength,intwidth,inthigh)
{intv;v=length*width*high; returnv; }程式運行結果:pleaseinputl,w,h:4,3,2↙
v=241.4最簡單的C程式的構成說明:本程式包括main和被調用函數volume兩個函數。max函數的作用是計算一個長方體的體積。return語句將z的值返回給主調函數main。2.C根源程式的結構特點(1)C程式是由函數構成的。一個C根源程式至少且僅包含一個main函數。(2)一個C程式總是從main函數開始執行的。(3)C根源程式中可以有預處理命令,預處理命令通常應放在原始檔案或根源程式的最前面。(4)C程式的基本單位是函數。被調用的函數可以是系統提供的庫函數(如printf和scanf等輸入輸出函數),也可以是用戶自定義函數(如volume函數)。
1.4最簡單的C程式的構成3.C函數的組成(1)函數首部。即函數的第1行,包括函數名、函數類型、函數屬性、函數參數(形式參數名、參數類型)。一個函數名後面必須跟一對圓括號,括弧內寫函數的參數名及其類型。例如,例1.3中的volume函數的首部為:(2)函數體。即函數首部下面的花括弧內的部分。①聲明部分。定義所用到的變數和對所調用函數的聲明。②執行部分。由若干個C語句組成。1.4最簡單的C程式的構成說明:(1)空函數:有時函數可以既無聲明部分也無執行部分。如:voidexample1(){}它是一個,什麼也不做,但這是符合C語言規則的。(2)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數scanf和printf等函數來完成的。由於輸入輸出操作牽涉具體的電腦設備,把輸入輸出操作放在函數中處理,就可以使C語言本身的規模較小,編譯程序簡單,很容易在各種機器上實現,程式具有可移植性。(3)不同電腦系統除了提供標準函數外,還提供一些專門的函數,因此不同電腦系統中所提供的函數個數和功能是有所不同的。ANSIC提供一百多個庫函數,TurboC則提供三百多個庫函數。1.4最簡單的C程式的構成4.書寫程式時應遵循的規則(1)每個語句和數據聲明的最後必須有個分號,分號是C語句的必要組成部分。(2)關鍵字、識別字之間必須至少加一個空格以示間隔。若已有明顯的間隔符如逗號、分號等,也可不再加空格來間隔。(3)C程式書寫格式自由,一行內可以寫幾個語句,一個語句可以分寫在多行上。(4)函數體內部用{}括起來的部分,通常表示程式的某一層次結構。在編程時應力求遵循這些規則,以養成良好的編程風格。(5)可以用/*……*/對C程式中的任何部分做注釋1.5C語言的運行環境和上機步驟
1.5.1C語言的運行環境選用TurboC++3.0作為學習C語言的運行環境。對於熟悉VisualC++的人,可以參考與本書配套的《C程式設計教程習題解答與上機指導》指導書來學習。
TurboC++3.0:是一個集成環境,它具有方便、直觀和易用的介面,雖然它也是DOS環境下的集成環境,但是可以把啟動TurboC++3.0集成環境的DOS執行檔tc.exe生成快捷方式,也可以用滑鼠操作。1.5C語言的運行環境和上機步驟
TurboC++3.0的集成環境可以通過兩種方法得到TurboC++3.0集成環境。(1)在DOS環境下。可以在DOS環境下用鍵盤輸入DOS命令TC即可:D:\TC3.0>TC↙
(2)在Windows環境下。先通過流覽找到TurboC++3.0集成環境所在的子目錄(如D:\TC3.0),從中找到可執行檔tc.exe,創建其快捷方式,並拖曳到Windows桌面上,用一個圖示表示。雙擊該圖示,就可打開的TurboC++3.0集成環境。圖1.4TurboC++3.0集成環境
1.5C語言的運行環境和上機步驟
在集成環境的上部,有一行主菜單,其中包括10個菜單項。用戶可以通過以上菜單來選擇使用集成環境所提供的TurboC++3.0的各項主要功能。
主菜單,其中包括10個菜單項:
FileEditSearchRunCompileDebugProjectOptionsWindowHelp以上10個菜單項分別代表:檔、編輯、查找、運行、編譯、調試、專案、選項、窗口、幫助。用滑鼠可以選擇菜單條中所需要的菜單項,單擊此菜單項就會出現一個下拉菜單。
1.5C語言的運行環境和上機步驟
1.5.2C程式的上機步驟
所謂程式,就是一組電腦能識別和執行的指令。每一條指令使電腦執行特定的操作。用高級語言編寫的程式稱為“根源程式(sourceprogram)”。
TurboC++3.0是一個集根源程式編輯、編譯、連接、運行與調試於一體、用菜單驅動的集成軟體環境。運行一個C語言程式的一般過程如圖1.7所示:
編輯編譯根源程式f.c有錯?連接執行結果正確?目標程式f.0bj無有庫函數和其他目標程式可執行程式f.exe是否開始結束1.5C語言的運行環境和上機步驟
說明:經過編輯得到一個根源程式檔f.c,然後將根源程式檔f.c輸入到電腦中,經過編譯得到目標程式檔f.obj,再將目標程式f.obj均輸入記憶體,與系統提供的庫函數等連接,即可得到可執行的目標程式f.exe,最後把f.exe調入記憶體並執行。即:運行C程式的步驟上機輸入與編輯根源程式對根源程式進行編譯與庫函數連接運行目標程式1編輯原始檔案新建:單擊File菜單下的New1.5C語言的運行環境和上機步驟
1.5C語言的運行環境和上機步驟
修改:選擇File→Open(即單擊“File”的下拉菜單中的Open項,修改已有的根源程式。
在編輯(EDIT)狀態下游標表示當前進行編輯的位置,在此位置可以進行插入、刪除或修改,直到自已滿意為止。保存:在完成編輯之後,應當保存根源程式。如果該根源程式是已有的,則選擇菜單File
Save命令保存已修改過的根源程式。若根源程式是新輸入的,則選擇File->Save命令,並在彈出的SaveFileAs對話框中的Name欄中輸入檔路徑和文件名,1.5C語言的運行環境和上機步驟
2.對根源程式進行編譯
選擇菜單Compile(或“Alt+F9”)對根源程式進行編譯。AA.C根源程式,出現1個錯誤(error),0個警告(warming)。
1.5C語言的運行環境和上機步驟
3將目標程式進行連接選擇菜單Compile→Link,如果不出現錯誤,會得到一個尾碼為.exe的可執行檔。4執行程式
選菜單Run→Run(或按“Ctrl+F9”鍵)。5退出TurboC++3.0環境退出TC有兩種方法:1)菜單法:File|Quit(先選擇File主項,再選擇並執行Quit子項)2)快捷鍵法:Alt+“X”(先按下Alt鍵並保持,再按字母鍵X,然後同時放開)。1.5C語言的運行環境和上機步驟
2.1C的數據類型C語言提供了以下一些數據類型。给变量定义数据类型,实际上是为数据在内存中分配规定的存储空间,存储空间通常用字节数的形式表示。數據類型構造類型指針類型空類型void枚舉類型enum數組類型結構體類型struct共用體類型
union基本類型整型int字元型char實型(浮點型)單精確度float雙精度
double2.2常量與變數3.2.1常量和符號常量在程式運行過程中,其值不能被改變的量稱為常量。常量區分為不同的類型:例如整型100,125,-100,0實型3.14,0.125,-3.789字元型‘a’,‘b’,‘2’字串‘a’,‘ab’,‘1232’符號常量:用一個識別字代表一個常量。符號常量的值在其作用域內不能改變,也不能再被賦值。例2.1定義一個符號常量PI,表示圓周率。然後使用符號常量PI計算圓的周長。
#include<stdio.h>
#definePI3.14/*定義符號常量PI,表示3.14*/
voidmain()
{
floatr,l;
r=5.0;
l=2*r*PI;
printf("l=%f\n”,l);
}
程式運行結果為:l=31.400000說明:
程式中用#define命令行定義PI代表常量3.14,此後凡在本文件中出現的PI都代表3.14,可以和常量一樣進行運算說明:如再用賦值語句給PRICE賦值是錯的如:
PRICE=40;/*錯誤,不能給符號常量賦值2.2常量與變數2.2常量與變數2.2.2變數變數代表記憶體中具有特定屬性的一個存儲單元,它用來存放數據,這就是變數的值,在程式運行期間,這些值是可以改變的。變數名實際上是一個以一個名字對應代表一個地址,在對程式編譯連接時由編譯系統給每一個變數名分配對應的記憶體地址。從變數中取值,實際上是通過變數名找到相應的記憶體地址,從該存儲單元中讀取數據。2.2常量與變數
變數名必須是識別字
例:sum,_total,month,Stu_name,l_1_2,BC235M.D.John,¥123,3D64,a>b
注意:編譯系統將大寫字母和小寫字母認為是兩個不同的字元。在C語言中,要求對所有用到的變數作強制定義,也就是“先定義,後使用”,凡未被事先定義的,C編譯系統不把它認作變數名,這就能保證程式中變數名使用得正確。
在選擇變數名和其他識別字時,應注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作識別字。每一個變數被指定為一個確定類型,在編譯時就能為其分配相應的存儲單元。2.3整型數據3.3.1整型常量的表示方法整型常量即整常數。在C語言中,整常數可用以下三種形式表示:(1)十進位整數。
如:123,-456.4,3.1415926。(2)八進制整數。以0頭的數是八進制數。
如:0123表示八進制數123,等於十進位數83,-011表示八進制數-11,即十進位數-9。(3)十六進制整數。以0x開頭的數是16進制數。如:0x123,代表16進制數123,等於十進位數291。-0x12等於十進位數-18。
2.3.2整型變數
1.整型數據在內存中的存放形式
數據在內存中是以二進位形式存放的。
如:
inti;/*定義為整型變數*/
i=17;/*給i賦以整數17*/2.3整型數據注意:十進位數17的二進位形式為10001,TurboC++3.0為一個整型變數在內存中分配2個位元組的存儲單元。數值是以補數(complement)表示的。
2.整型變數的分類共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)
注意:括弧表示其中的內容是可選的。2.3整型數據2.3整型數據C語言沒有具體規定以上各類數據所占記憶體的位元組數,只要求long型數據長度不短於int型,short型不長於int型。具體如何實現,由各電腦系統自行決定。如在TurboC++3.0中,int型和short型數據都是16位(bit),而long型數據是32位。以整数13在TurboC++3.0環境下,在各種整數類型的存儲單元中的存儲情況如圖所示。3.整型變數的定義C規定在程式中所有用到的變數都必須在程式中定義,變數說明的一般形式為:
數據類型名變數名表;(變數名之間用逗號分隔)
例如:
inta,b,c(指定變數a、b為整型)
unsignedshortc,d;(指定變數c、d為無符號短整型)
longe,f;(指定變數e、f為長整型)2.3整型數據例2.2整型變數的定義與使用。
#include<stdio.h>
voidmain()
{
inta,b,c,d;
unsignedu;
a=15;b=-19;u=17;
c=a+u;d=b+u;
printf(“c=a+u=%d,d=b+u=%d\n”,c,d);
}
說明
可以看到不同種類的整型數據可以進行算術運算程式運行結果為:c=a+u=32,d=b+u=-22.3整型數據例2.3整型數據的溢出(見圖)。
#include<stdio.h>
voidmain()
{
inta,b;
a=32767;b=a+1;
printf("\na=%d,a+1=%d\n",a,b);
a=-32768;b=a-1;
printf("\na=%d,a-1=%d\n",a,b);
}
說明:數值是以補數表示的。一個整型變數只能容納-32768~32767範圍內的數,無法表示大於32767或小於-32768的數。遇此情況就發生“溢出”。
程式運行結果為:a=32767,a+1=-32768a=-32768,a-1=327672.3整型數據4.整型數據的溢出2.3.3整型常量的類型(1)一個整數,如果其值在-32768~+32767範圍內,認為它是int型,它可以賦值給int型和longint型變數。(2)一個整數,如果其值超過了上述範圍,而在-2147483637~+2147483647範圍內,則認為它是為長整型。可以將它賦值給一個longint型變數。2.3整型數據(3)如果所用的C版本分配給shortint與int型數據在內存中佔據的長度相同,則它的表數範圍與int型相同。(4)一個整常量後面加一個字母u或U,認為是unsignedint型,如果寫成-12345u,則先將-12345轉換成其補數53191,然後按無符號數存儲。(5)在一個整常量後面加一個字母l或L,則認為是longint型常量。
例如:123l.432L.0L
2.3整型數據2.4實型數據2.4.1實型常量的表示方法兩種表示形式小數指數0.1233e-3注意:字母e(或E)之前必須有數字,且e後面的指數必須為整數:1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
3.4浮點型數據規範化的指數形式:
在字母e(或E)之前的小數部分中,小數點左邊應只有一位非零的數字。在C程式中,一個浮點數在用指數形式輸出時,是按規範化的指數形式輸出的。
例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e
其中的1.23456e3稱為“規範化的指數形式”。2.4實型數據2.4.2實型變數
1.实型數據在內存中的存放形式
一個浮點型數據一般在內存中占4個位元組(32位)。與整型數據的存儲方式不同,浮點型數據是按照指數形式存儲的。系統把一個浮點型數據分成小數部分和指數部分,分別存放。指數部分採用規範化的指數形式。2.4實型數據2.實型變數的分類和定義
實型變數分為單精確度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。表2.2實型數據的分類例如:floatx1,x2;(指定x1、x2为单精度浮点数)doubley1;(指定y1為雙精度浮點數)longdoublez1;(指定z1為長雙精度浮點數)
2.4實型數據例2.4实型数据的舍入误差。
#include<stdio.h>
voidmain()
{
floatx1,x2;
x1=333333.222E5
x2=x1+30;
printf("x1=%f\n",x1);
printf("x2=%f\n",x2);
}
說明:一個浮點型變數只能保證的有效數字是7位有效數字,後面的數字是無意義的,並不準確地表示該數。應當避免將一個很大的數和一個很小的數直接相加或相減,否則就會“丟失”小的數。與此類似,用電腦計算1.0/3.0×3.0的結果不可能等於1.0。程式運行結果為:x1=33333321728.000000x2=33333321728.0000002.4實型數據3.實型數據的舍入誤差2.4.3實型常量的類型
C編譯系統將浮點型常量作為雙精度來處理。
例如:f=2.45678*4523.65
系統先把2.45678和4523.65作為雙精度數,然後進行相乘的運算,得到的乘也是一個雙精度數。最後取其前7位賦給浮點型變數f。如是在數的後面加字母f或F(如1.65f,654.87F),這樣編譯系統就會把它們按單精確度(32位)處理。假如:
floaty;y=1234567.1111;float型變數y只能接收7位有效數字2.4實型數據2.5字元型數據2.5.1字元常量(1)字元常量只能用單引號括起來,不能用雙引號或其他括弧。(2)字元常量只能是單個字元。(3)字元可以是字元集中任意字元。
(4)C語言還允許用一種特殊形式的字元常量,就是以一個字元“\”開頭的字元序列,稱之為“轉義字元”。
表2.3轉義字元及其含義
有些以“\”開頭的特殊字元稱為轉義字元\n
換行\t
橫向跳格\r
回車\\
反斜杠\dddddd表示1到3位八進制數字\xhhhh表示1到2位十六進制數字2.5字元型數據例2.5
轉義字元的使用。
#include<stdio.h>
voidmain()
{
inta,b,c;
a=5;b=6;c=7;
printf("%d\n\t%d%d\n%d%d\t\b%d\n",a,b,c,a,b,c);
}
程式運行時輸出以下結果:2.5字元型數據2.5.2字元型變數1.字元型變數分類和定義字元型變數用來存放字元常量,注意只能放一個字元。一個字元變數在內存中占一個位元組。
字元變數的定義形式如下:charc1,c2;在本函數中可以用下麵語句對c1,c2賦值:
c1=‘a’;c2=‘b’;2.5字元型數據2.字元型數據在內存中的存儲形式及其使用方法字元型數據在內存中的存儲是將字元的ASCII碼值以二進位形式存放,佔用1個位元組。也就是說將一個字元型常量放到一個字元變數中,實際上並不是把該字元本身放到記憶體單元中去,而是將該字元的相應的ASCII代碼放到存儲單元中。
這樣使字元型數據和整型數據之間可以通用。一個字元數據既可以以字元形式輸出,也可以以整數形式輸出。2.5字元型數據例2.6
向字元型變數賦值。
#include<stdio.h>
voidmain()/*字元'a'的各種表達方法*/
{
charc1,c2,c3,c4,c5,c6;
c1='a';c2='\x61';c3='\141';
c4=97;c5=0x61;c6=0141;
printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3);
printf("c4=%c,c5=%c,c6=%c\n",c4,c5,c6);
printf("c1=%d,c2=%d,c3=%d\n",c1,c2,c3);
printf("c4=%d,c5=%d,c6=%d\n",c4,c5,c6);
}
程式運行結果:c1=a,c2=a,c3=ac4=a,c5=a,c6=ac1=97,c2=97,c3=97c4=97,c5=97,c6=972.5字元型數據例2.7
字元型數據的轉換。
#include<stdio.h>
voidmain()
{
charc1,c2,c3;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
c3=157;
printf("\nc1=%cc2=%cc3=%c\n",c1,c2,c3);
printf("c1=%dc2=%dc3=%d\n",c1,c2,c3);
}
程式運行結果:c1=Ac2=Bc3=¥
c1=65c2=66c3=-99
2.5字元型數據注意:需要進一步說明的是有些系統(如TurboC++3.0)將字元變數定義為signedchar型。其存儲單元中的最高位作為符號位,它的取值範圍就是-128~127。
如果在字元變數中存放一個ASCII碼為0~127間的字元,由於位元組中最高位為0,因此用%d輸出字元變數時,輸出的是一個正整數。如果在字元變數中存放一個ASCII碼為128~255間的字元,由於在位元組中最高位為1,用%d格式符輸出時,就會得到一個負整數,
2.5字元型數據2.5.3字串常量C語言除了允許使用字元常量外,還允許使用字串常量。字串常量是一對雙引號括起來的字元序列。例如:
”ThisisaCprogram.”,”CHINA”,”a”,”a1f3.45”也可以利用printf函數可以輸出一個字串。例如:printf("All
alone
in
a
foreign
land.");2.5字元型數據設ch1被指定為字元變數:charch1;ch1=’a’;是正確的。‘a’是字元常量而ch1=”a”;則是錯誤的。”a”是字串常量C規定:在每一個字串常量的結尾加一個“字串結束標誌”,以便系統據此判斷字串是否結束。C規定以字元’\0’作為字串結束標誌。2.5字元型數據注意:在寫字符串時不必加’\0’,因为’\0’字元是系統自動加上的。在C語言中沒有專門的字串變數,如果想將一個字串存放在變數中以便保存,必須使用字元數組,即用一個字元型數組來存放一個字串。2.6變數初始化和變數賦初值
(1)C語言允許在定義變數的同時使變數初始化。如:inta=3;//指定a為整型變數,初值為3
floatf=3.56;//指定f為浮點型變數,初值為3.56
charc=‘a’;//指定c為字元變數,初值為‘a’(2)可以使被定義的變數的一部分賦初值。如:
inta,b,c=5;表示指定a、b、c為整型變數,但只對c初始化,c的初值為5
2.6變數初始化和變數賦初值
(3)如果對幾個變數賦以同一個初值,應寫成:inta=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成∶
inta=b=c=3;
注意:初始化不是在編譯階段完成的,而是在程式運行時執行本函數時賦初值的,相當於有一個賦值語句。2.7算術運算符和算術運算式
2.7.1C語言運算符簡介
C的運算符有以下幾類:(1)算術運算符(+-*/%)(2)關係運算符(><==>=<=!=)(3)邏輯運算符(!&&||)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)(8)指針運算符(*和&)(9)求位元組數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數調用運算符())2.7算術運算符和算術運算式
2.7.2基本算術運算符和算術運算式1.基本的算術運算符+(加法運算符,或正值運算符,如:3+5、+3)-(減法運算符,或負值運算符,如:5-2、-3)*(乘法運算符,如:3*5)/(除法運算符,包括整數除和實數除,如25/3、4.2/2.0)%(模運算符,或稱求餘運算符,%兩側均應為整型數據,如:7%4的值為3)。2.7算術運算符和算術運算式
2.算術運算式和運算符的優先順序與結合性用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式。运算对象包括常量、变量、函数等。例如:
a*b/c-1.5+′a′
是一個合法的運算式。2.7算術運算符和算術運算式
C語言規定了運算符的優先順序和結合性。在運算式求值時,先按運算符的優先順序別高低次序執行,例如先乘除後加減。C規定了各種運算符的結合方向(結合性)
算術運算符的結合方向為“自左至右”,即先左後右。
注意:C語言規定了各種運算符的結合方向(结合性),“自左至右的結合方向’’又稱“左結合性”,即運算對象先與左面的運算符結合。有些運算符的結合方向為“自右至左”(例如,赋值运算符)。
在程式運行時,系統會自動進行結合性的運算的。2.7算術運算符和算術運算式
2.7.3自增、自減運算符自增運算符記為“++”,其功能是使變數的值自增1。自减1运算符记为“--”,其功能是使变量值自减1。如:
++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之後,使i的值加(減)1)
2.7算術運算符和算術運算式
說明:一般來說,++i和i++的作用相當於i=i+1。但++i和i++不同之處在於++i是先執行i=i+1後,再使用i的值;而i++是先使用i的值後,再執行i=i+1。--i和i--的作用相當於i=i-1。但--i和i--不同之處在於--i是先執行i=i-1後,再使用i的值;而i--是先使用i的值後,再執行i=i-1。
i++與++i的區別:
++i是先執行i=i+1後,再使用i的值;i++是先使用i的值後,再執行i=i+1。例如:①j=++i;
i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然後i變為42.7算術運算符和算術運算式
注意:
(1)自增運算符(++),自減運算符(--),只能用於變數,而不能用於常量或運算式,(2)++和--的結合方向是“自右至左”。如:9++或(a+b)++都是不合法的。
因為9是常量,常量的值不能改變,不可能出現“9=9+1”的形式。
(a+b)++也不可能實現,因為自增、自減運算還有一種給變數賦值的功能。2.7算術運算符和算術運算式
例2.8变量自增、自减运算举例。#include<stdio.h>voidmain(){inti=7;/*i的初值為7*/printf("%d",++i);/*i加1后输出故为8*/printf("%d",--i);/*i減1后输出故为7*/printf("%d",i++);/*輸出i為7之后再加1(為8)*/printf("%d",i--);/*輸出i為8之后再减1(為7)*/printf("%d",-i++);/*輸出-7之後i再加1(為8)*/printf("%d\n",-i--);}/*輸出-8之後i再減1(為7)*/
2.7算術運算符和算術運算式
程式運行結果:8778-7-8例2.9較複雜的變數自增、自減運算舉例。#include<stdio.h>voidmain(){inti=3,j=6,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("p=%dq=%di=%dj=%d\n",p,q,i,j);}2.7算術運算符和算術運算式
程式運行結果:2.7.4有關算術運算式使用中的問題說明(1)ANSIC並沒有具體規定運算式的求值順序,允許各編譯系統自己安排。
例如:對運算式a=f1()+f2()
並不是所有的編譯系統都先調用f1(),然後調用f2()。在有的情況下結果可能不同。有時會出現一些令人容易搞混的問題,因此務必要小心謹慎。例2.10自增自减运算的求值顺序。
2.7算術運算符和算術運算式
(2)C編譯系統在處理程式時盡可能多地(自左而右)将若干個字元組成一個運算符、識別字和關鍵字。
C語言中有的運算符為一個字元,有的運算符由兩個字元組成,為避免誤解,最好採取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應寫成(i++)+j的形式2.7算術運算符和算術運算式
(3)在調用函數時,實參數的求值順序,C標準並無統一規定。例如:i的初值為3,如果有下麵的函數調用:
printf(″%d,%d″,i,i++)
在有的系統中,從左至右求值,輸出“3,3”。在多數系統中對函數參數的求值順序是自右而左,輸出的是“4,3”。以上這種寫法不宜提倡,最好改寫成
j=i++;printf("%d,%d",j,i)
不要寫出別人看不懂的也不知道系統會怎樣執行程式2.7算術運算符和算術運算式
2.8各種數值類型數據間的轉換和運算
2.8.1隱式轉換整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據要先轉換成同一類型,然後進行運算。轉換的目的是:(1)將短的數擴展成機器處理的長度。(2)使得運算符兩側的數據類型相同。例如:下麵式子在C語言中是能夠通過類型轉換進行計算的。63+’a’-16*8+15.95該類型轉換是由系統自動進行的,轉換的規則:如圖(3)強制類型轉換運算符
可以利用強制類型轉換運算符將一個運算式轉換成所需類型。
一般形式:(類型名)(運算式)例如:(double)a將a轉換成double類型(int)(x+y)將x+y的值轉換成整型(float)(5%3)將5%3的值轉換成float型2.8各種數值類型數據間的轉換和運算
2.8各種數值類型數據間的轉換和運算
說明:需要轉換的運算式應該用括弧括起來。在強制類型轉換時,得到一個所需類型的中間變數,原來變數的類型未發生變化。
floatx=3.6;inta;a=(int)x;注意:強制類型轉換實際上是一種單目運算。各種數據類型名都可以用來作強制類型換的運算符,如(char)、(int)、(float)等。
2.9賦值運算符和賦值運算式
1.賦值運算符和賦值運算式賦值符號“=”就是賦值運算符,它的作用是將一個數據賦給一個變數。也可以將一個運算式的值賦給一個變數。
賦值運算符按照“自右而左”的結合順序
賦值運算式是賦值運算符將一個變數和一個運算式連接起來的式子。它的一般形式為:
<變數><赋值運算符><表达式>下麵是賦值運算式的例子:k=b=c=7k=5+(c=6)k=(b=5)+(c=4)k=(b=8)%(c=3)2.類型轉換如果賦值運算符兩側的類型不一致,但都是數值型或字元型時,在賦值時要進行類型轉換。
(1)将实型数据(单、双精度)赋给整型变量,舍弃实数的小数部分,以整数形式存储到变量中。如:i為整型變數,執行“i=3.56”的結果是使i的值為3,以整數形式存儲在整型變數中。例2.11将实型数据赋值给整型变量。
(2)將double型數據賦給float型變數時,截取其前面7位有效數字,存放到float變數的存儲單元中(32bits)。但同樣應注意數值範圍不能溢出。
2.9賦值運算符和賦值運算式
(3)char型數據賦給int、short、long型整型變數時,由於字元只占1個位元組,而整型變數占2个字节或4个字节,因此将字符数据(8個二進位位)放到整型变量存储单元的低8位中。有兩種情況如下。
①零擴展:高位補零。②符號擴展:按字元最高位(符號位為0或1)碼補高位。
2.9賦值運算符和賦值運算式
(4)將一個int、short、long型数据赋给一个char型變數時,只將其低8位原封不動地送到char型變數(即高位截去)。若将一个long型數據賦給一個int型變數,只將long型數據中低16位原封不動地送到整型變量(即高位截去)。
例如:longa=32769;intb;b=a;2.9賦值運算符和賦值運算式
(5)將unsignedint型數據賦給longint型變數時,不存在符號擴展問題,只需將高位補0即可。
說明:不同類型的整型數據間的賦值歸根到底就是一條:按存儲單元中的存儲形式直接傳送。
例2.12不同數據類型間的賦值。
2.9賦值運算符和賦值運算式
2.9賦值運算符和賦值運算式
類型轉換小結如果運算式值的類型,與被賦值變數的類型不一致,但都是數值型或字元型時,系統自動地將運算式的值轉換成被賦值變數的數據類型,然後再賦值給變數。float\double
int去掉小數—>高位截取int
float\double按浮點數形式存儲double
float增加精度char
inta.高位補0b.符號擴展int\short\long
char高位截取int
long符號擴展unsignedint
long高位補0非Unsigned
unsigned原樣照賦
3.複合的賦值運算符和賦值運算式在賦值運算符“=”之前加上其他二目運算符可構成複合賦值符。即:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=例如:a+=5等價於a=a+5x*=y+7等價於x=x*(y+7)r%=p等價於r=r%p2.9賦值運算符和賦值運算式
討論1:賦值運算式也可以包含複合的賦值運算符。
如:a+=a-=a*a分析:此賦值運算式的求解步驟如下∶①先進行“a-=a*a”的運算,它相當於a=a-a*a,a的值為12-144=-132。②再進行“a+=-132”的運算,相當於a=a+(-132),a的值為-132-132=-264。討論2:賦值運算式也可以包含複合的賦值運算符。例如:若a為3,求下列運算式的值:a+=a-=a*=a2.9賦值運算符和賦值運算式
討論3:將賦值運算式作為運算式的一種,使賦值操作不僅可以出現在賦值語句中,而且可以以運算式形式出現在其他語句(如輸出語句、迴圈語句等)中。如:printf("%d",a=b);
分析:如果b的值為3,則輸出a的值(也是運算式a=b的值)為3。在一個語句中完成了賦值和輸出雙重功能。2.9賦值運算符和賦值運算式
2.10位運算
運算符含義運算符含義
&按位與~取反
|按位或<<左移∧按位異或>>右移說明:(1)位運算符中除~以外,均為二目(元)運算符。(2)運算量只能是整型或字元型的數據,不能為實型數據。所謂位運算是指進行二進位位的運算。在系統軟體中,常要處理二進位位的問題。例如,將一個存儲單元中的各二進位位左移或右移一位,兩個數按位相加等。
C語言提供的位運算符有:
2.10.1位运算符及其功能
1.“按位與”運算符(&)
&運算是雙目運算,其基本規則是將參加運算的兩個數據,按二進位位進行“按位與”運算。
即:&0=00&1=01&0=01&1=1
例如:inta1=0x19,a2=0x35,b;b=a1&a2;注意:如果參加&運算的是負數(如-3&-5),則要以補數形式表示為二進位數,然後再按位進行“與”運算。2.10位運算
按位與有一些特殊的用途:
(1)清零。若想對一個存儲單元清零,即使其全部二進位位為0,只要找一個二進位數,其中各個位符合以下條件:原來的數中為1的位,新數中相應位為0。然後使二者進行&運算,即可達到清零目的。2.10位運算
(2)取一個數中某些指定位。
如有一個整數a(2個位元組),想要取其中的低位元組,只需將a與8個1按位與即可。0010110010101100abc000000001111111100000000101011002.10位運算
2“按位或”運算符(|)|運算是雙目運算,其基本規則是將參加運算的兩個數據,按二進位位進行“按位或”運算。即0|0=0,0|1=1,1|0=1,1|1=1例如:inta1=0x19,a2=0x35,b;b=a1|a2;2.10位運算
“按位或”
運算一個的用途示對一個數據的某些位定值為13.“按位異或”運算符(∧)
∧運算的功能是將參加運算的兩個數據,按位異或運算,也稱XOR運算符。即:
0∧0=00∧1=11∧0=11∧1=0
2.10位運算
例如:inta1=0x19,a2=0x35,b;b=a1∧a2;則其運算的情況如下:
例如:有01100110,想使其低4位翻轉,即1变为0,0變為1。可以将它与0000111l進行∧運算,即01100110∧0000111l=01101001。∧運算符應用:
(1)使特定位翻轉與0相∧,保留原值
01100110∧00001111
011010012.10位運算
(2)交换两个值,不用临时变量。
例如:將a和b兩個整數的值互換,可以利用如下語句實現:inta=0xff00,b=0x88aa;a=a∧b;b=b∧a;a=a∧b;
自己演算一下!4.“按位取反”運算符(~)
~是一個單目運算符,用來對一個二進位數按位取反,即將0变l,将1变0。
即:
0=1~1=0
例如:(~)0000000000000101(5)1111111111111010(八進制數177752)(-6)2.10位運算
5.左移运算符(<<)
<<是雙目運算,其功能式將一個數的各個二進位位全部左移若干位。其左边是需要移位的对象,右边是一个整型表达式,代表要左移的位数。移位时右端补0,左端移出的位棄舍。
例如:
inta=128,b;
b=a<<2;
2.10位運算
注意:在實際應用中,左移比乘法運算快得多,有些C編譯程序自動將乘2的運算用左移乘2n的冪運算處理為左移n位。
例如:左移1位相當於該數乘以2,左移2位相當於該數乘以22=4,15<<2=60,即乘了4。但此結論只適用於該數左移時被溢出捨棄的高位中不包含1的情況。假設以一個位元組(8位)存一個整數,若a為無符號整型變數,則a=64時,左移一位時溢出的是0,而左移2位時,溢出的高位中包含1。2.10位運算
6.右移運算符(>>)>>是双目运算,其功能式将一个数的各个二进制位全部右移若干位。>>运算符左边是需要移位的对象,右边是一个整型表达式,代表要右移的位数。
移位時右端移出的位棄舍。對於unsigned數和正數左端補0,對於負數左端補1。注意:右移一位相當於除以2右移n位相當於除以2n。2.10位運算
例如:inta1=9,a2=-8,b1,b2;b1=a1>>2;b2=a2>>2;2.10位運算
在右移時,需要注意符號位問題:有的系統移入0,有的系統移入1。移入0的稱為“邏輯右移”,即簡單右移;移入1的稱為“算術右移”。TurboC++3.0和其他一些C編譯採用的是算術右移,即對有符號數右移時,如果符號位原來為1,左面移入高位補1。例如:2.10位運算
k的值為十六進制數0xf0f0k:1111000011110000(用二進位形式表示)k>>1:0111100001111000(邏輯右移時)k>>l:1111100001111000(算術右移時)7.位運算賦值運算符
位運算符與賦值運算符可以組成複合賦值運算符。例如:&=,|=,>>=,<<=,∧=例:a&=b相當於a=a&ba<<=2相當於a=a<<22.10位運算
8.不同长度的数据进行位运算如果兩個數據長度不同(例如long型和int型),進行位運算時(如a&b,而a為long型,b為int型),系統會將二者按右端對齊。如果b為正數,則左側16位補滿0;若b為負數,左端應補滿1;如果b為無符號整數型,則左側添滿0。2.10位運算
2.10.2位运算举例
例2.13右移運算符(>>)和按位與(&)位運算符舉例。
#include"stdio.h"voidmain(){unsigneda,b;printf("inputanumber:");scanf("%d",&a);b=a>>3; /*a右移3位,將右移後的值賦給b*/printf("a=%d\tb=%d\n",a,b);b=b&9; /*將b和9按位與的值賦給b*/printf("a=%d\tb=%d\n",a,b);}2.10位運算
程式運行結果:inputanumber:127a=127b=15a=127b=9例2.14左移(<<)、右移(>>)、按位或(|)、按位與(&)位運算符舉例。#include"stdio.h"voidmain(){chara=’a’,b=’b’;intp,c,d;p=a;p=(p<<2)|b;/*將p左移2位然後和b按位與運算*/d=p&0xff;/*將p和0xff按位與運算*/c=(p&0xff00)>>8;printf("a=%d\tb=%d\nc=%d\td=%d\n",a,b,c,d);}2.10位運算
程式運行結果:a=97b=98c=1d=2302.11逗號運算符和逗號運算式
在C語言中“,”也是一種特殊的運算符——逗號運算符,又稱為“順序求值運算符”。用逗號運算符將若干個運算式連接起來的式子稱為逗號運算式。例如:3+5,a=14,b=4,a+b,r=a+b-2逗號運算式的一般形式可以擴展為:運算式1,運算式2,表达式3,…,運算式n
逗號運算式的求解過程是:先求解運算式1,再求解運算式2,依次求到表达式n,表达式n的值就是整個逗號運算式的值。a的值為14,b的值為4.12,然後求解a+b,得18。整個逗號運算式的值為16。優先順序:逗號運算符是所有運算符中級別最低的賦值運算符的優先順序別高於逗號運算符,逗號運算符是所有運算符中級別最低的。
例如,下麵兩個運算式的,作用是不同的:x=(a=5,7*3)x=a=8,6*2
前一個是一個賦值運算式,將一個逗號運算式的值賦給x,x的值等于21,同时变量a的值為5。後一個是逗號運算式,包括一個賦值運算式和一個算術運算式,x的值為8,整個逗號運算式的值為12,变量a的值為8。
2.11逗號運算符和逗號運算式
3.1.1演算法概念廣義地說,為解決一個問題而採取的方法和步驟,就稱為“演算法”。要進行程式設計,也必須要有進行程式設計的演算法。1.程序设计中的算法著名電腦科學家沃思提出一個公式
數據結構+演算法=程式即:一個程式應包括兩個方面的內容:對數據的描
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级厨师考试试题及答案
- EDA实验二+含异步清零和同步使能的十进制加减法计数器
- 2025年问界工地测试题及答案
- 2025年氧气并发症的试题及答案
- 2025年古代玄学考试试题及答案
- 2025年毕业生考试题及答案
- 2025年美妆品测试题及答案
- 品牌手册丨超级植物公司
- 2025年园区电工面试题及答案
- 2025年长春版四下试题及答案
- 高中物理【原子结构和原子核】知识点、规律总结
- 湘阴县易聚餐饮有限公司部门备用金业务财务融合流程设计
- 企业员工合规管理培训
- 监狱应急处突
- 2023年河北医科大学第一医院招聘医疗工作人员考试真题
- 苏科版八年级物理上册同步学与练第14课光的反射(原卷版+解析)
- 2024年学校意识形态工作总结模版(5篇)
- 5《这些事我来做》(说课稿)-2024-2025学年道德与法治四年级上册统编版
- 第45届世界技能大赛餐厅服务项目全国选拔赛技术工作文件
- 小学全体教师安全工作培训
- 大学物业服务月考核评价评分表
评论
0/150
提交评论