版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C語言程式設計技術基礎
§1.1電腦程式的基本概念§1.2電腦程式設計的步驟與方法§1.3演算法及其表示§1.4電腦程式設計語言
§1.5C語言程式的執行過程§1.6C語言程式開發環境第1章引言§1.1電腦程式的基本概念程式概念廣義:通常指完成某項工作的一整套活動過程及活動方式。狹義:使電腦完成某一特定任務而編寫的若干條指令的有序集合。
電腦程式具有如下性質
目的性、分步性、有限性、有序性、操作性
§1.2電腦程式設計的步驟與方法1.2.1電腦程式設計的步驟1.2.2電腦結構化程式設計方法1.2.1電腦程式設計的步驟問題分析演算法設計程式編碼調試運行文檔編制
1.2.2電腦結構化程式設計方法
程式設計方法發展的幾個階段
為什麼學習結構化程式設計方法
結構化程式設計思想
結構化編碼結構化程式的特點結構化程式的分析方法模組化設計
§1.3演算法及其表示1.3.1演算法的概念與特點
1.3.2演算法的表示
1.3.1演算法的概念與特點演算法的概念演算法是指為解決某個特定問題而採取的方法和步驟。
演算法的特點有窮性確定性有零個或多個輸入有一個或多個輸出有效性1.3.2演算法的表示自然語言流程圖N-S圖偽代碼描述
偽代碼是一種近似高級語言但又不受語法約束的一種語言描述方式,它用一種介於自然語言和程式設計語言之間的文字和符號來描述演算法。開始/結束框處理框判斷框輸入/輸出框流程線連接符ABTBFAPAPTFFTAPABFTPAB當P為真A直到P為真A1.3.2演算法的表示(例子)【例1-1】任意輸入2個數,按昇冪(從小到大排列)輸出到螢幕上。請給出解決問題的演算法。Fval1→xval2→yTx→ty→xt→yx>yprintx,y輸入val1,val2結束開始x→ty→xt→y輸入val1,val2val1→x,val2→y輸出x,yx>yTF輸入任意兩個數val1、val2賦給變數x與yval1→xval2→yifx>ythenx→t,y→x,t→y,printx,yelseprintx,y
§1.4電腦程式設計語言1.4.1電腦程式設計語言簡介1.4.2C語言簡介1.4.3C語言程式的基本結構1.4.1電腦程式設計語言簡介電腦程式設計語言分類程式設計語言可以分為機器語言、組合語言和高級語言三大類。翻譯程式的方式
編譯方式事先編好的一個稱為“編譯程序”的程式,將其放在電腦中。當高級語言根源程式輸入到電腦中時,編譯程序便把根源程式整個翻譯成機器指令表示的目標程式。然後執行該目標程式,得到計算結果。解釋方式
事先編好的一個稱為“解釋程式”的程式,將其放在電腦中。當高級語言根源程式輸入到電腦中時,解釋程式將根源程式的每一條語句逐句翻譯,逐句執行,即邊解釋邊執行。
1.4.2C語言簡介C語言的發展歷程
C語言起源於
BCPL語言。Ken
LaneThompson、DennisM.Ritchie在B語言的基礎上設計出了C語言,並於Ken
Thompson合作開發了C語言版的UNIX操作系統。C語言的主要特點程式設計模組化、函數方式操作、數據類型多樣化、運算功能強、存儲類型豐富、具有預處理能力、程式簡潔
1.4.3C語言程式的基本結構
【例1-6】在螢幕上輸出一行資訊。#include<stdio.h>voidmain()/*主函數前面的void表示此函數是一個在執行後不產生返回值的“空類型”*/{ printf(“C語言程式設計基礎\n”);/*編譯系統提供的標準輸出函數*/}/*函數體由大括弧{}擴住*/
本程式的執行結果為:C語言程式設計基礎1.4.3C語言程式的基本結構
【例1-7】編寫一個C語言程式,對鍵盤輸入的任意兩個整數求和。
#include<stdio.h>intAdd(inta,intb)/*函數功能:計算兩個整數相加之和*/
{/*形式參數:整型數a和b*/intz; /*定義本函數用到的變數z*/z=a+b; /*整型數a和b的和放在z中*/return(z);/*將z的值作為函數Add的返回值*/}voidmain()/*主函數*/{intx,y,sum=0; /*定義兩個整型變數x,y和sum*/printf("inputtwointegers:");scanf("%d,%d",&x,&y);/*輸入兩個整型數x和y*/sum=Add(x,y);/*調用函數Add計算x和y之和*/printf("sum=%d\n",sum);/*輸出x和y之和*/}在運行上面這個程式時,首先,螢幕上顯示一條提示資訊:
Inputtwointegers:要求用戶從鍵盤輸入兩個整數。假設用戶鍵入10和9,即
Inputtwointegers:10,9↙1.4.3C語言程式的基本結構
對C語言程式的結構說明:1.函數是C語言程式的基本單位C程式是由函數構成的,一個C語言程式必須有且僅有一個用main作為名字的函數,這個函數通常被稱為主函數。C程式總是從main函數開始執行,而與它在程式中的位置無關。在有main函數的前提下,可以根據需要包含零到多個其他函數。函數可以是系統提供的庫函數,如例1-6中的printf函數,也可以是用戶自定義函數,如例1-7中的Add函數。C語言的這個特點便於進行模組化程式設計。
1.4.3C語言程式的基本結構
對C語言程式的結構說明:2.函數由函數首部和函數體兩部分組成(1)函數首部就是每個函數在定義或聲明時的第一行,它包括函數名、函數類型、形參名、形參類型的說明,如例1-7中函數Add的首部為:int Add(int a, int b)函數類型函數名形參類型形參名形參類型形參名函數名後的形參必須用一對圓括號括起來,若沒有形參時一對圓括號也不能省略,它已成為函數的標誌,如例1-6中對主函數main的定義。
(2)函數體由函數首部下面最外層的一對大花括弧中的內容組成,它可以包括變數聲明和所調用函數的聲明,還可以包括若干執行語句,聲明部分可以看作是對函數中“對象”的描述,執行語句是對函數所要實現的“動作”的描述。當然函數體中也可以什麼都沒有成為一個空函數。如:voidempty(){}1.4.3C語言程式的基本結構
對C語言程式的結構說明:3.C語言程式的書寫格式與規則(1)C語言程式中的每條語句和數據聲明的最後都必須以分號作為結束標誌,分號是C語句的必要組成部分。(2)C語言程式的書寫格式比較自由,既允許在一行內寫多條語句,也允許將一條語句分寫在多行上,而不必加任何標識。為了提高程式的可讀性和可測試性,建議讀者在寫程式的時候,一行內只寫一條語句,養成良好的、規範的程式設計風格。(3)在C語言程式中有一些用“/*”和“*/”包含起來的內容,它們被稱為注釋,是對程式功能的必要說明和解釋。注釋可以出現在程式的任何位置,但“/*”和“*/”必須配對使用。C編譯程序並不對注釋的內容進行語法檢查,可用英文也可以用漢字來書寫注釋內容,一行寫不下,可以繼續在下一行書寫,只要是在一對“/*”和“*/”中間的內容都被當作注釋來處理。寫注釋時應注意左斜線“/”和星號“*”之間不能留有空格。雖然有無注釋並不影響程式的功能和正確性,但由於注釋能起到“提示”代碼的作用,有助於讀者更快、更好地理解程式,提高程式的可讀性。因此,規範化程式設計提倡給程式添加必要的注釋。§1.5C語言程式的執行過程用高級語言編寫的程式稱為“根源程式”,用C語言編寫的程式被稱為C語言根源程式。C語言根源程式不能在電腦上直接運行,要運行C語言根源程式就需要經過編輯、編譯、連接及執行四個步驟。(1)編輯:編輯是用戶把編寫好的C語言根源程式輸入電腦,並以文本檔的形式存放在磁片上。其標識為:“檔案名.c”。其中檔案名是由用戶指定的符合C識別字規定的任意字元組合,擴展名要求為“.c”,表示是C根源程式。例如file1.c、t.c等。若發現書寫錯誤,可修改根源程式。(2)編譯:編譯是把C語言根源程式翻譯成用機器語言表示的目標檔。編譯過程由C編譯系統提供的編譯程序完成。編譯程序自動對根源程式進行句法和語法檢查,當發現錯誤時,就將錯誤的類型和所在的位置顯示出來,提供給用戶,以幫助用戶修改根源程式中的錯誤。此時應重新進入編輯狀態,對根源程式進行修改後再重新編譯,直到通過編譯為止。如果編譯通過就自動形成目標代碼並對目標代碼進行優化後生成目標檔。目標程式的檔標識是:"檔案名.obj"。這是系統規定的形式,擴展名".obj"是目標程式的檔類型標識。§1.5C語言程式的執行過程(3)連接:程式連接過程是用系統提供的連接程式(也稱鏈接程式或裝配程式)將目標程式、庫函數或其他目標程式連接裝配成可執行的目標程式。可執行程式的檔案名為:"檔案名.exe",擴展名".exe"是可執行程式的檔類型標識。絕大部分系統生成的可執行檔的擴展名是".exe"。有的C編譯系統把編譯和連接放在一個命令檔中,用一條命令即可完成編譯和連接任務,減少了操作過程。(4)執行:運行程式是指將可執行的目標程式投入運行。以獲取程式處理的結果。如果程式運行結果不正確,可重新回到第一步,重新對程式進行編輯修改、編譯和運行。與編譯、連接不同的是,運行程式可以脫離語言處理環境。因為它是對一個可執行程式進行操作,與C語言本身已經沒有聯繫,所以可以在語言開發環境下運行,也可直接在操作系統下運行。必須指出,對不同型號電腦上的C語言版本,上機環境各不相同,編譯系統支持性能各異,上述步驟有些可再分解,有些也可集成進行批處理,但邏輯上是基本相同的。§1.5C語言程式的執行過程編輯程式編譯程序連接程式庫函數根源程式檔案名.c目標程式檔案名.obj可執行程式檔案名.exe編譯連接其他目標檔出錯出錯出錯執行結果C編譯系統§1.6C語言程式開發環境
目前C語言的集成開發工具有許多,常用的集成開發環境有TurboC、BorlandC、VisualC++、DevC++、Gcc等。其中,TurboC、BorlandC是DOS環境下的程式,而VisualC++、DevC++是Windows環境下的程式,Gcc則是linux環境下的開發軟體。除了TurboC與BorlandC之外,其他開發工具都可以開發C++語言程式。相比較DOS下的TurboC2.0等軟體,在Windows下的開發環境更適合於圖形化的操作介面,同時還可以使用滑鼠,這給程式的開發帶來了很多使用上的方便。目前使用較多的開發環境是VisualC++6.0,在等級考試時也多採用此環境對C語言程式進行編輯與執行。§VC++6.0程式開發環境(啟動)1)點擊Windows“開始”菜單,選擇“程式”組下“MicrosoftVisualStudio6.0”子組下的快捷方式MicrosoftVisualC++6.0啟動VisualC++6.0。2)點擊Windows“開始“菜單,選擇“運行”,輸入msdev,即可啟動。啟動後的介面如下§VC++6.0開發環境(新建)選擇“File”菜單下的“New”菜單項或直接按Ctrl+N,啟動新建嚮導,如圖所示§VC++6.0程式開發環境選擇在“Projects”屬性頁選擇Win32ConsoleApplication,在ProjectName中輸入專案名稱demo,在Location中選擇專案檔,如上圖中c:/test/demo,專案所有檔將保存在此檔。輸入完畢,單擊確定按鈕,進入下一介面如圖§VC++6.0程式開發環境在圖上所示介面中選擇asimpleapplication,然後點擊Finish按鈕,系統顯示圖所示介面。如果想退回上一步可以選擇“Back”按鈕
§VC++6.0程式開發環境保存工程比較簡單,選擇File菜單中的Saveworkspace即可。這還不夠,專案由多個根源程式構成,在保存工程時,需要保存相關的根源程式,通過選擇File菜單中的Save命令分別保存修改後的根源程式即可。選擇File菜單中的Openworkspace,選擇相應的專案工作區檔或專案檔即可,例如本例中打開“C:/test/demo/demo.dsw”即可,打開後的介面如下.§VC++6.0程式開發環境選擇File菜單中的new命令,在新建嚮導中,選擇Files屬性,選擇C++SourceFile,並在File中輸入檔案名,單擊OK即可。§2.1C語言的基本詞法字元集
在C語言程式中允許出現的所有基本字元的組合稱為C語言的字元集。主要分為下列幾類:(1)大小寫英文字母各26個(共52個)(2)數字(10個)(3)鍵盤符號(33個)
轉義字元:是由“反斜杠字元(\)”開始後跟單個字元或若干個字元組成,通常用來表示鍵盤上的控制代碼或特殊符號。保留字在C語言的程式中有特殊含義的英語單詞稱為“保留字”,也稱“關鍵字”,主要用於構成語句,進行存儲類型和數據類型定義。
注:所有的保留字均由小寫字母組成。C語言的關鍵字共有32個,根據關鍵字的作用,可分為數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其他關鍵字4類。
(1)數據類型關鍵字(12個):char,double,enum,float,int,long,short,signed,struct,union,unsigned,void。
(2)控制語句關鍵字(12個):break,case,continue,default,do,else,for,goto,if,return,switch,while。
(3)存儲類型關鍵字(4個):auto,extern,register,static。
(4)其他關鍵字(4個):const,sizeof,typedef,volatile。識別字識別字是用戶自定義的一種字元序列,通常用來表示程式中需要辨認的對象名稱,如符號常量、變數、數組、函數等對象的名字。
C語言規定,識別字是由字母或下畫線開頭的字母、數字、下畫線組成的一串符號。下麵列出的識別字是合法的:
sum,near,day,Wang,_total,MONTH,for_erver1_2
下麵是不合法的識別字:
3_day,list.er,*123,#3Dfg,last-3-4
在使用識別字時還必須注意以下幾點:
(1)在識別字中,大小寫字母是有區別的。
(2)ANSIC標準沒有規定識別字的長度,但是各種版本的C語言編譯系統都有自己的規定。
(3)識別字雖然可以由程式員隨意定義,但識別字是用於標識某個量的符號。見名知意。
(4)C語言規定,用戶選取的識別字不能是C語言規定的保留字。
C語言的詞類
(1)常量:在程式運行中其值不發生變化的數據。
(2)變數:用來存放程式運行中變化的數據。
(3)運算符:用來表示簡單加工計算的符號。
(4)函數調用:用來代表調用指定函數後獲得的結果。
(5)運算式:用常量、變數、函數調用、運算符組成的式子,用來表示簡單的加工計算。
(6)保留字:在程式或語句中,用來表示特定語法含義的英語單詞。§2.2常量和變數
在程式執行過程中,其值不發生改變的量稱為常量,其值可變的量稱為變數。它們可與數據類型結合起來進行分類。2.2.1常量和符號常量
(1)直接常量(字面常量)
整型常量:23、0、-5;實型常量:5.7、-2.23;字元常量:a、e。
(2)符號常量在C語言中,可以用一個識別字來表示一個常量,稱為符號常量。符號常量在使用之前必須先定義,其一般形式為:
#define識別字常量
注:習慣上符號常量的識別字用大寫字母,變數識別字用小寫字母,以示區別。
【例2-1】符號常量的使用,求圓面積。#definePI3.14159265#include<stdio.h>voidmain(){ floats,r; r=5; s=PI*r*r; printf("s=%f\n",s);}使用符號常量具有下述幾個好處。(1)書寫簡單不易出錯。(2)修改程式方便。(3)含義清楚。2.2.2變數
在程式運行過程中,其值可以變化的量稱為變數。每一個變數都有一個名字,稱為變數名,以便被引用。一個變數在內存中佔據一定的存儲空間,在該存儲空間中存放一個屬於某種數據類型的數據,稱為變數的值。【例2-2】變數舉例。#include<stdio.h>voidmain(){ inta; /*定義變數a*/ a=3; /*給變數a賦值為3*/ printf("thefirstvalueis:%d\n",a);/*輸出此時a的值*/ a=5; /*給變數a賦值為5*/ printf("thesecondvalueis:%d\n",a); /*輸出此時a的值*/}程式運行的結果為:thefirstvalueis:3thesecondvalueis:5
特別注意:在C語言中,要求對所有用到的變數作強制定義,也就是必須“先定義,後使用”,就像前面的例子一樣,這樣做的目的是:
(1)凡未被事先定義的,系統不把它作為變數名,這就能保證程式中變數名使用得正確。
(2)每一個變數被指定為一個確定類型,在編譯時就能為其分配相應的存儲單元。
(3)指定每一個變數屬於一個類型,這就便於在編譯時根據此檢查該變數所進行的運算是否合法。§2.3C語言的基本數據類型
2.3.2整型數據
1.整型常量的表示方法
1)整型常量的表示整型常量就是整常數。在C語言中,使用的整常數有八進制、十六進制和十進位3種。
(1)八進制整常數:八進制整常數必須以數字0開頭,即以0作為八進制數的首碼。數碼取值為0~7。八進制數通常是作為無符號數(正整數)來使用的。
(2)十六進制整常數:十六進制整常數的首碼為0X或0x。其數碼取值為0~9、A~F或a~f。十六進制數通常也是作為無符號數(正整數)來使用的。
(3)十進位整常數:十進位整常數沒有首碼。其數碼為0~9。2)整型常數的尾碼在16位字長的機器上,基本整型的長度也為16位,因此表示的數的範圍也是有限定的。如果要表示的數超過了上述取值範圍,就必須用長整型數來表示。長整型數是用尾碼“L”或“l”來表示的。長整常數158L和基本整常數158在數值上並無區別。但對158L,因為是長整型量,C編譯系統將為它分配4個位元組存儲空間。而對158,因為是基本整型,只分配兩個位元組的存儲空間。因此在運算和輸出格式上要特別注意,避免出錯。整型數據
無符號數也可用尾碼表示,整型常數的無符號數的尾碼為“U”或“u”。例如,358u表示為無符號數,在存儲單元中最高位不作為符號位,而是用來存儲數據。整型數據2.整型變數
1)整型數據在內存中的存放形式數據的表示方法有多種多樣,但是所有數據在內存當中都是以二進位形式存放的。下麵定義一個整型變數a:
inta; /*定義a為整型變數*/a=12; /*給整型變數a賦值為12*/
在對程式編譯連接時由系統會給每一個變數名分配一個記憶體空間,將程式中賦值數據保存在對應的記憶體空間中。整型數據
實際上,數值在內存中是以補數的形式存放的。數值分為正數和負數,其補數的表示形式是不一樣的。
(1)正數的補數。一個正數的補數和這個數的原碼(即該數的二進位形式)相同。圖2-2就是正數12的補數。
(2)負數的補數。求負數的補數相對要複雜一些。在電腦中,帶符號整數的原碼最高位表示符號位,0代表正數,1代表負數。首先,先取數值的原碼;再將原碼除符號位的其他部分全部取反,得到反碼;最後,反碼加1,就得到了這個數的補數。整型數據2)整型變數的類型整型變數可以分為基本型、短整型、長整型和無符號型4種。
(1)基本型:類型說明符為int。
(2)短整型:類型說明符為shortint或short。
(3)長整型:類型說明符為longint或long。
(4)無符號型:類型說明符為unsigned。無符號型又與上述3種類型匹配而構成:無符號基本型:類型說明符為unsignedint或unsigned。無符號短整型:類型說明符為unsignedshort。無符號長整型:類型說明符為unsignedlong。整型數據
數據所占記憶體的位元組數直接影響到數據的取值範圍,在C語言中沒有具體規定各種數據類型所占的位元組數,只要求long型數據長度不短於int類型,short類型不長於int類型即可。到底具體如何實現,是由各電腦系統自行決定的。整型數據數
值
類
型取
值
範
圍字
節
數int-2147483648~2147483647即-231~(231-1)4(32位)unsignedint0~4294967295即0~(232-1)4(32位)shortint-32768~32767即-215~(215-1)2(16位)unsignedshortint0~65535即0~(216-1)2(16位)longint-2147483648~2147483647即-231~(231-1)4(32位)unsignedlong0~4294967295即0~(232-1)4(32位)【例2-3】各種數據類型長度。#include<stdio.h>voidmain(){ printf("各種數據類型長度:\n\n"); printf("整型:---------------%d\n",sizeof(int)); printf("無符號整型:-----------%d\n\n",sizeof(unsignedint)); printf("長整型:-------------%d\n",sizeof(long)); printf("無符號長整型:----------%d\n\n",sizeof(unsignedlong)); printf("短整型:-------------%d\n",sizeof(shortint)); printf("無符號短整型:---------%d\n\n",sizeof(unsignedshortint));}程式運行的結果為:各種數據類型長度:整型:---------------4無符號整型:-----------4長整型:-------------4無符號長整型:---------4短整型:-------------2無符號短整型:---------2整型數據3)整型變數的定義
C語言程式中如果要使用變數,必須“先定義,後使用”。定義變數的一般形式為:類型說明符變數名識別字,變數名識別字,…;
例如:
inta,b,c; (a,b,c為整型變數)longx,y; (x,y為長整型變數)unsignedintp,q; (p,q為無符號整型變數)整型數據
在書寫變數定義時,應注意以下幾點:
(1)允許在一個類型說明符後,定義多個相同類型的變數。各變數名之間用逗號間隔。類型說明符與變數名之間至少用一個空格間隔。
(2)最後一個變數名之後必須以“;”號結尾。
(3)變數定義必須放在變數使用之前。一般放在函數體的開頭部分。整型數據4)整型變數賦初值
C語言程式中經常要對一些變數賦初值,以便使用變數。賦初值的方法有以下兩種。
(1)先定義,再賦初值。例如:
inta,b,c; /*定義a,b,c為整型變數*/a=2; /*給變數a賦初值2*/b=8; /*給變數b賦初值8*/
(2)定義變數的同時賦初值。
例如:
inta=2;/*定義a為整型變數,並賦初值為2*/
也可以給被定義的變數的一部分賦初值。
例如:inta=2,b,c;
如果對幾個變數賦同樣的初值,應該這樣表示:
inta=6,b=6,c=6;
表示變數a、b、c的初值都為6。但是不能寫成:
inta=b=c=6;整型數據5)整型數據計算中遇到的問題由前面的知識可知,不同的數據類型都有各自的取值範圍,並不是所有的數據都可以表示。整型數據【例2-4】整型數據的溢出。#include<stdio.h>voidmain(){inta,b;a=32767;b=a+1;printf("a=%d\nb=%d\n",a,b);}程式運行的結果為:a=32767b=-327682.3.3實型數據
1實型常量的表示方法實型也稱為浮點型。實型常量也稱為實數或浮點數。在C語言中,實數只採用十進位。它有兩種形式:十進位小數形式和指數形式。
(1)十進位小數形式。由數碼0~9和小數點組成。例如:
0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實數。注意:必須有小數點。(2)指數形式:由十進位數加階碼標誌“e”或“E”及階碼(只能為整數,可以帶符號)組成。
其一般形式為:
aEn(a為十進位數,n為十進位整數階碼)
以下是合法的實數表示方式:
2.1E5(等於2.1×105)、
3.7E-2(等於3.7×10-2)、
0.5E7(等於0.5×107)、
-2.8E-2(等於-2.8×10-2)。規範化的指數形式:在字母e(或E)之前的小數部分中,小數點左邊應有一位(且只能有一位)非零的數字。實型數據2.實型變數
1)實型變數的類型及在內存中的存放形式實型變數分為:單精確度(float型)、雙精度(double型)和長雙精度(longdouble型)3類。實型數據類
型比特數(位元組數)有效數字位數取
值
範
圍float32(4)6~7(十進位)-3.4×10-38~3.4×1038double64(8)15~16(十進位)-1.7×10-308~1.7×10308longdouble64/80/96與編譯器有關與編譯器有關
實型數據按指數形式存儲,無論是單精確度還是雙精度,在內存存儲中都分為3個部分。
(1)符號位(Sign):0代表正,1代表負。
(2)指數位(Exponent):用於存儲科學計數法中的指數數據,並且採用移位存儲。
(3)尾數部分(Mantissa):尾數部分。實型數據尾數部分占的位(bit)數越多,數的有效數字越多,精度越高。指數部分占的位數越多,則能表示的數值範圍越大。2)實型數據在計算中遇到的問題實型變數是由有限的存儲單元組成的,能提供的有效數字是有限的。這樣就會存在舍入誤差。實型數據【例2-5】一個較大實數加一個較小實數。#include<stdio.h>voidmain(){floatx=7.24356E10,y;y=x+54;printf("x=%e\n",x);/*將x的值以指數形式輸出*/printf("y=%e\n",y);/*將y的值以指數形式輸出*/}程式運行的結果為:x=7.243560e+010y=7.243560e+010注:由於舍入誤差的原因,進行計算時要避免一個較大實數和一個較小實數相加減。2.3.4字元型數據
1.字元常量
1)一般形式的字元常量字元常量就是用單引號括起來的一個字元。例如,'a'、'b'、'='、'+'、'?'等都為字元常量。在C語言中,使用字元常量要注意以下幾點:
(1)字元常量只能用單引號括起來,不能用雙引號或其他括弧。
(2)字元常量只能是單個字元,不能是字串。
(3)字元可以是字元集中任意字元。2)特殊形式的字元常量以字元“\”開頭,後跟一個或幾個字元的字元序列,即轉義字元。轉義字元具有特定的含義,不同於字元原有的意義,故稱“轉義”字元。使用轉義字元時需要注意以下問題:
(1)轉義字元中只能使用小寫字母,每個轉義字元只能看作一個字元。
(2)\v垂直製錶和\f換頁符對螢幕沒有任何影響,但會影響印表機執行回應操作。
(3)在C語言程式中,使用不可列印字元時,通常用轉義字元表示。字元型數據字元型數據【例2-6】轉義字元\a、\b、\t、\r及\n的作用。#include<stdio.h>voidmain(){floatheight;printf("\aPleaseenteryourheight:_____cm\b\b\b\b\b\b\b");scanf("%f",&height);printf("\tYourheightis%.2fcm.\rOh!\n",height);}程式運行的結果為:Pleaseenteryourheight:180.5cmOh!Yourheightis180.50cm.2.字元變數字元變數是存放字元常量的變數,其取值是字元常量,即單個字元。字元變數的類型說明符是char。字元變數的定義形式:
char識別字1,識別字2,…,識別字n;
例如:charc1,c2,c3,ch;
定義完成字元變數以後,各個變數可以存放一個字元。下麵為上例中定義的字元變數賦值:
c1='a';c2='b';c3='c';ch='d';
C語言中,每個字元變數被分配一個位元組的記憶體空間,因此只能存放一個字元。字元數據是以ASCII碼的形式存放在變數的記憶體單元之中的。字元型數據3.字元變數與整型變數的互換使用每個字元變數被分配一個位元組的記憶體空間,字元值是以ASCII碼的形式存放在變數的記憶體單元之中,所以也可以把它們看成是整型數據。C語言允許對整型變數賦予字元值,也允許對字元變數賦整型值。在輸出時,允許把字元變數按整型量輸出,也允許把整型變數按字元量輸出。但是,由於整型變數占2個位元組,字元變數占1個位元組,當整型量按字元量處理時,只有低8位數據參與處理,也就是說,字元變數只能表示0~255之間的整數。字元型數據1)字元變數可以賦整數【例2-7】將整數賦給字元變數。#include<stdio.h>voidmain(){charc1,c2;c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}字元型數據程式運行的結果為:ab97982)整型變數可以賦字元常量【例2-8】將字元賦給整型變數。#include<stdio.h>voidmain(){inti,j;i='a';j='b';printf("%d%c\n",i,i);printf("%d%c\n",j,j);}字元型數據程式運行的結果為:97a98b3)字元變數參與算術運算【例2-9】大小寫字母的轉換。#include<stdio.h>voidmain(){charc1,c2;c1='A';c2='b';c1=c1+32;c2=c2-32;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}字元型數據程式運行的結果為:aB97664)字元變數在內存中最高位的符號問題有些系統(如VisualC++6.0)將字元變數的最高位作為符號位,其取值範圍為-128~127,對標準ASCII碼(0~127)來說,最高位為0,用“%d”格式輸出的數值不會受影響。但是,對非標準ASCII碼(128~255),最高位為1,則用“%d”格式輸出的數值會得到負數,而不是ASCII碼值。
例如:
chara=158;printf("%d\n",a);
運行結果為-98。這時可以將變數定義為無符號字元變數,使最高位不表示符號。例如:
unsignedchara=158;printf("%d\n",a);
運行結果為158。字元型數據4.字串常量字串常量是由一對雙引號("")括起的字元序列。例如:"CHINA"、"Cprogram"、"$12.5"等都是合法的字串常量。字串常量和字元常量是不同的,它們之間主要有以下區別:
(1)字元常量由單引號括起來,字串常量由雙引號括起來。
(2)字元常量只能是單個字元,字串常量則可以含一個或多個字元。
(3)可以把一個字元常量賦予一個字元變數,但不能把一個字串常量賦予一個字元變數。(4)字元常量占一個位元組的記憶體空間。字串常量占的記憶體位元組數等於字串中位元組數加1,增加的一個位元組中存放字元“\0”(ASCII碼為0)。C語言規定:在每一個字串常量的結尾加一個“字串結束標誌”,以便系統知道字串是否結束。“\0”就是字串結束標誌。字元型數據'a'與"a"的區別由圖可以看出,字元常量'a'和字串常量"a"雖然都只顯示一個字元,但在內存中的情況是不同的。'a'在內存中占一個位元組;而"a"實際上包含兩個字元:'a'和'\0',所以在內存中占兩個位元組。aa\0‘a’“a”字元型數據2.4運算符及運算式
C語言的運算符不僅具有不同的優先順序,而且還有一個特點,就是它的結合性。在運算式中,各運算量參與運算的先後順序不僅要遵守運算符優先順序別的規定,還要受運算符結合性的制約,以便確定是自左向右進行運算還是自右向左進行運算。1.C語言的運算符按功能可分為以下幾類
(1)算術運算符:用於各類數值運算。
(2)關係運算符:用於比較運算。
(3)邏輯運算符:用於邏輯運算。
(4)位操作運算符:參與運算的數據,按二進位位進行運算。
(5)賦值運算符:用於賦值運算
(6)條件運算符:用於條件求值(?:)。
(7)逗號運算符:用於把若干運算式組合成一個運算式
(8)指針運算符:用於取內容(*)和取地址(&)兩種運算。
(9)求位元組數運算符:用於計算數據類型所占的位元組數。
(10)特殊運算符運算符及運算式2.4.1C語言的運算符與運算式簡介2.運算符可按其運算對象的多少分為以下3類
(1)單目運算符(僅對一個運算對象進行操作):!~++--sizeof等。
(2)雙目運算符(對兩個運算對象進行操作):+-*/%<<=>等。
(3)三目運算符(對3個運算對象進行操作):?:運算符及運算式3.C語言運算符的優先順序及結合性
(1)優先順序求解運算式時,總是先按運算符的優先次序由高到低進行操作。優先順序是用來標誌運算符在運算式中的運算順序的。
(2)結合性當一個運算對象的兩側運算符的優先順序相同時,則按運算符的結合性確定運算式的運算順序。它分為兩類:一類運算符結合性為“從左到右”;另一類運算符結合性為“從右到左”。4.運算式用運算符將運算元連接起來的,並且符合C語法規則的式子稱為運算式。運算符及運算式1.基本算術運算符算術運算符有以下幾種:
(1)加法運算符“+”:加法運算符為雙目運算符具有左結合性。
(2)減法運算符“-”:減法運算符為雙目運算符。具有右結合性。
(3)乘法運算符“*”:雙目運算,具有左結合性。
(4)除法運算符“/”:雙目運算,具有左結合性。參與運算量均為整型時,結果也為整型,舍去小數。如果運算量中有一個是實型,則結果為雙精度實型。
(5)求餘運算符(模運算符)“%”:雙目運算,具有左結合性。要求參與運算的運算元必須為整型。求餘運算的結果等於兩數相除後的餘數。運算符及運算式2.4.2算術運算符及算術運算式【例2-10】算術運算的結果。#include<stdio.h>voidmain(){printf("5/3=%d,-5/+3=%d\n",5/3,-5/+3);printf("3/5=%d, 3./5=%f\n",3/5,3./5);printf("10%%3=%d,-10%%3=%d,10%%-3=%d,-10%%-3=%d\n",10%3,-10%3,10%-3,-10%-3);}運算符及運算式程式運行結果:5/3=1,-5/+3=-13/5=0,3./5=0.60000010%3=1,-10%3=-1,10%-3=1,-10%-3=-12.算術運算式用算術運算符和括弧將運算對象(也稱運算元)連接起來的、符合C語言語法規則的式子,稱為算術運算式。運算對象可以是常量、變數、函數等。
例如:3+6*9、(x+y)/2-1,都是算術運算式。算術運算式的結果是一個算術值。運算符及運算式3.自增與自減運算符在程式設計中,經常遇到“i=i+1”和“i=i-1”這兩種極為常用的操作。其中,變數i被稱為“計數器”,用來記錄完成某一操作的次數。C語言為這種計數器操作提供了兩個更為簡潔的運算符,即“++”和“--”,分別稱為自增運算符和自減運算符。它們是從右向左結合的單目算術運算符。運算符及運算式
這兩個運算符既可以放在運算對象之前,也可以放在運算對象之後,形成前置形式和後置形式,而運算對象也只能是變數。不管前置還是後置,其運算結果都是一樣的,都是把運算對象的值增加1或減少1。設有整型變數i,則++i、i++都使i值增加1,--i、i--都使i值減少1。例如,定義一個整型變數i,並對i賦初值i=3。
i++,++i
相當於i=i+1,變數i的值都為4。
i--,--i
相當於i=i-1,變數i的值都為2。運算符及運算式前置形式:++i、--i,它的功能是在使用i之前,i值先加(減)1(即先執行i+1或i-1,然後再使用i值)。後置形式:i++、i--,它的功能是在使用i之後,i值再加(減)1(即先使用i值,然後再執行i+1或i-1)。即前置運算是“先變後用”,而後置運算是“先用後變”。
例如,j=3時:k=++j; /*結果k=4,j=4*/k=j++; /*結果k=3,j=4*/k=--j; /*結果k=2,j=2*/k=j--; /*結果k=3,j=2*/運算符及運算式
使用自增、自減運算符應注意以下幾點:
(1)注意運算符的操作對象。自增、自減運算符的操作對象只能是變數,而不能是常量或運算式。例如,6--、++(a*2)、++(-i)都是錯誤的。如果兩個運算對象之間連續出現多個運算符,則C語言採用“最長匹配”原則。即在保證有意義的前提下,從左到右盡可能多地將字元組成一個運算符。因此,i+++j就被解釋成(i++)+j,而不是i+(++j)。運算符及運算式(2)注意運算符的結合方向。自增、自減運算符的結合性是自右向左的。運算式k=-i++等效於k=(-i)++還是k=-(i++)?因為負號運算符和自增運算符優先順序相同,哪一個正確就得看結合方向。自增、自減運算符及負號運算符的結合方向都是自右向左。因此,上式等效於k=-(i++)。再者,自增、自減運算符的操作對象只能是變數,而不能是常量或運算式,而-i是運算式,因此,從這個方面來說也不能等效於k=(-i)++。運算符及運算式(3)注意運算符的副作用。C語言允許在一個運算式中使用一個以上的賦值類運算,包括賦值運算符、自增運算符、自減運算符等。這種靈活性使程式簡潔,但同時也會引起副作用。這種副作用主要表現在:使程式費解,並易於發生誤解或錯誤。例如,當i=3時,運算式(i++)+(i++)+(i++)的值為多少?有的認為是9(3+3+3);也有的認為是12(3+4+5)。到底哪一個說法正確呢?究其原因,“先用後變,先變後用”中的“先”和“後”是一個模糊的概念,很難給出順序或時間上的準確定論,這是與編譯環境密不可分的。同一條語句,在不同的編譯環境中運行結果是不一樣的。運算符及運算式
解決這類副作用的方法是,儘量把程式寫得易懂一些,將費解處分解成若干語句。例如,“k=i+++j,”可寫成“k=i+j;i++;”而類似(i++)+(i++)+(i++)這類連續自增、自減的運算最好不要使用,以避免出現問題,減少程式出錯的可性能。運算符及運算式4.算術運算符的優先順序與結合性(1)算術運算符的優先順序(從高到低)運算符及運算式(2)算術運算符的結合性雙目算術運算符的結合性為自左向右,單目運算符的結合性為自右向左。當一個算術運算式中存在多個算術運算符時,各個運算符的優先順序與常規算術運算相同,即先乘、除和取餘,再計算加、減,同級運算符的計算順序是從左向右,即先計算左邊的算術運算式,再計算右邊的算術運算式。當然也可以用圓括號改變運算式計算的先後順序。運算符及運算式2.4.3賦值運算符及賦值運算式
C語言的賦值運算符是用來給變數賦值的。它是雙目運算符,優先順序14,僅高於逗號運算符,自右向左結合。賦值運算符包括基本賦值運算符和複合賦值運算符兩種。運算符及運算式1.基本賦值運算符賦值符號“=”就是基本賦值運算符。賦值運算符的一般形式為:
變數=運算式(變數或數據);
賦值運算符的作用:將運算符右端的值賦給運算符左邊的變數,實際上是將特定的值寫到變數所對應的記憶體單元中。
例如:
inta,x;a=5; /*將5賦值給變數a*/x=3*a+55; /*將運算式3*a+55的計算結果70,賦值給變數x*/運算符及運算式2.複合賦值運算符為了簡化程式並提高編譯效率,C語言允許在賦值運算符“=”之前加上其他運算符,這樣就構成了複合賦值運算符,又稱為帶有運算的賦值運算符。運算符及運算式運
算
符含
義用
法等
價
於+=加賦值運算符a+=ba=a+b-=減賦值運算符a-=ba=a-b*=乘賦值運算符a*=ba=a*b/=除賦值運算符a/=ba=a/b%=取餘賦值運算符a%=ba=a%b&=按位與賦值運算符a&=ba=a&b【例2-14】分析以下程式的運行結果。#include<stdio.h>voidmain(){intn=2;n+=n-=n*n;printf("n=%d\n",n);}運算符及運算式程式運行結果為:n=-43.賦值運算式由賦值運算符將一個變數和一個運算式連接起來的式子稱為賦值運算式。它的一般形式為:
<變數><賦值運算符><運算式>
運算符的左側只能是變數或賦值運算式,不能是常量或其他運算式,而右側可以是常量、賦過值的變數或運算式。下列賦值運算式是不正確的。
3=a+b、x+y=5*6、c=a+b=3
在運算符右側的<運算式>中,運算式可以仍然是一個賦值運算式。例如:
x=(y=8)運算符及運算式4.類型轉換如果賦值運算符兩側的數據類型不相同,系統將自動進行類型轉換,即把賦值運算符右邊的類型換成左邊的類型,轉換規則如下。
(1)實型與整型①將實型數據(包括單、雙精度)賦給整型變數時,捨棄其小數部分。②將整型數據賦給實型變數時,數值不變,補足有效位,即小數點後帶若干0,然後以指數形式存儲到變數中。運算符及運算式【例2-15】實型與整型數據之間的轉換。#include<stdio.h>voidmain(){inta;floatb;a=3.72;b=12;printf("a=%db=%f\n",a,b);}運算符及運算式程式運行結果為:a=3b=12.000000(2)單、雙精度實型①將一個double型數據賦給float變數時,取其前面的7位有效數字,但要注意數值範圍不能溢出。截斷前要進行四捨五入操作。②將一個float型數據賦給double變數時,數值不變,有效位數擴展到16位,用8個位元組存儲。運算符及運算式(3)字元型與整型①整型數據賦給char型變數時,只保留其最低8位,高位部分捨棄。②將字元型數據賦給整型變數時,由於字元數據只占一個位元組,而整型變數占兩個位元組,所以將字元數據(8位)放到整型變數的低8位中。如果字元數據的最高位為0,則整型變數的高8位補0;如果最高位為1,則整型變數的高8位全部補1。這樣可以保證數值會不發生變化。另外,如果用的是unsignedchar型變數或數據來賦值,則一律將整型變數的高8位補0。運算符及運算式(4)int型與1ong型①將帶符號整型數據(int型)賦給long型變數時,要進行符號擴展。首先將整型數的16位送到long型的低16位中,如果原整型數據為正值(首位為0),則long型變數的高16位補0;如果原整型數據為負值(首位為1),則long型變數的高16位補1。這樣可以保持數值不變。而如果是將unsignedint型數據賦給long型變數時,不存在符號擴展,只需將高位直接補0即可。無論是有符號整型數據,還是無符號整型數據,在賦給long型變數後,其值都不會發生變化。②將long型數據賦給一個int型變數時,只將long型數據的低16位原封不動地送到整型變數中即可,將高16位截斷捨棄。運算符及運算式(5)unsigned型整數①將一個unsigned型數據賦給一個佔據同樣長度存儲單元的非unsigned型整型變數時(如unsigned→int、unsignedlong→long,unsignedshort→short),將unsigned型數據原值按照原樣賦到非unsigned型整型變數中,內部的存儲方式不變,但輸出值卻可能改變(非unsigned型整型變數最高位為符號位)。②將一個非unsigned整型數據賦給長度相同的unsigned型變數時,原樣賦值,內部存儲形式不變,但輸出時是無符號的。運算符及運算式【例2-16】類型轉換。#include<stdio.h>voidmain(){inta,b,c=322;floatx,y=8.88;charc1='B',c2;a=y;x=c;b=c1;c2=c;printf("%d,%f,%d,%c\n",a,x,b,c2);}運算符及運算式程式運行結果為:8,322.000000,66,B2.4.4逗號運算符及逗號運算式
在C語言中逗號“,”也是一種運算符,稱為逗號運算符。優先順序最低,具有左結合性。其功能是把兩個運算式連接起來組成一個運算式,稱為逗號運算式。其一般形式為:
運算式1,運算式2
其求值過程是分別求兩個運算式的值,並以運算式2的值作為整個逗號運算式的值。運算符及運算式【例2-17】逗號運算式。#include<stdio.h>voidmain(){inta=2,b=4,c=6,x,y,z;y=(x=a+b),(b+c);z=((x=a+b),(b+c));printf("x=%d,y=%d,z=%d\n",x,y,z);}運算符及運算式程式運行結果為:x=6,y=6,z=10有關逗號運算式需要注意以下幾點:
(1)逗號運算式又可以和另一個運算式組成一個新的逗號運算式。例如:
(a=6,3*a),a+10(2)程式中使用逗號運算式,通常是要分別求逗號運算式內各運算式的值,並不一定要求整個逗號運算式的值。
(3)並不是所有出現的逗號都作為逗號運算符。函數的參數之間也是用逗號分隔的。例如:
printf("%d,%d,%d\n",(a,b,c),a,b)
其中“(a,b,c)”是一個逗號運算式,它的值是變數c的值,而後面的兩個逗號是參數的分隔符號。運算符及運算式2.5類型轉換
運算式中運算符所處理的對象的數據類型不可能都是同一類型。當運算式中出現類型不同的數據時要進行類型轉換,轉換的方法有兩種,一種是自動轉換,另一種是強制類型轉換。2.5.1不同數據類型數據間的
混合運算
自動轉換發生在不同數據類型的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:
(1)若參與運算數據的類型不同,則先轉換成同一類型,然後進行運算。
(2)轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉換成long型後再進行運算。
類型轉換(3)所有的浮點運算都是以雙精度進行的,即使僅含float單精確度量運算的運算式,也要先轉換成double型再進行運算。
(4)char型和short型參與運算時,必須先轉換成int型。
(5)在賦值運算中,賦值號兩邊的數據類型不同時,賦值號右邊的類型將轉換為左邊的類型。如果右邊的數據類型長度大於左邊的長度時,將丟失一部分數據,這樣會降低精度,丟失的部分按四捨五入向前舍入類型轉換類型轉換例如,假設變數的定義為:inti;floatf;doubled;charch;計算:ch/i+f*d-(f+i)的值的類型轉換如圖。2.5.2強制類型轉換
有時根據需要有必要有意識地改變某個運算式的數據類型,就需要強制類型轉換。強制類型轉換是通過類型轉換運算符來實現的。其一般形式為:
(類型說明符)(運算式)
其功能是把運算式的運算結果強制轉換成類型說明符所表示的類型。例如:
(float)a 把a轉換為實型
(int)(x+y) 把x+y的結果轉換為整型類型轉換
在使用強制轉換時應注意以下問題:
(1)類型說明符和運算式都必須加括弧(單個變數可以不加括弧),否則僅對緊跟強制類型轉換運算符的運算元進行類型轉換。如果把(int)(x+y)寫成(int)x+y,則成了把x轉換成int型之後再與y相加了。
(2)無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的數據長度進行的臨時性轉換,而不改變數據說明時對該變數定義的類型。類型轉換【例2-18】強制類型轉換。#include<stdio.h>voidmain(){floatf=5.75;printf("(int)f=%d,f=%f\n",(int)f,f);}類型轉換程式運行結果為:(int)f=5,f=5.750000§3.1C語言的基本語句一個完整的C程式可以存放於一個或多個C原始檔案中,每一個C原始檔案又可以包含若干預處理命令和C函數,數據聲明和執行語句是構成C函數的基本單元。C語言的語句是指示電腦完成某項任務的操作指令,是C程式中演算法實現的最小單位。程式或函數的功能是由一系列語句實現的,不同的語句結構可以構成一個完整的程式。在C語言中,根據語句的功能可將C語句分為5類:運算式語句、函數調用語句、程式控制語句、空語句及複合語句。§3.1C語言的基本語句【例3-1】輸入兩個整數,求它們的和與積。#include<stdio.h> voidmain(){ inta,b; intsum,mul; /*以上是數據描述部分,以下是執行語句部分*/ printf("請輸入兩個整數:\n"); scanf(“%d%d”,&a,&b
); sum=a+b; mul=a*b; printf("兩數之和sum=%d,兩數之積mul=%d\n",sum,mul);}
3.1.1運算式語句運算式語句由運算式加一個分號“;”組成,其一般形式為:運算式;運算式可以是任意的運算式,包括賦值運算式、算術運算運算式、關係運算運算式及邏輯運算運算式等。 例如:
a=8; x=2*x+3*y; i++; printf("Pleaseinputdata!\n");3.1.2函數調用語句函數調用語句由函數調用後加分號“;”構成。 其一般形式為: 函數名(實際參數列表);函數調用語句的執行過程為調用執行被調函數,實現函數的功能。例如:
printf("%d",a);
為調用C語言標準輸出函數,完成輸出變數a的功能。3.1.3程式控制語句
1.條件判斷語句
(1)選擇(分支)語句:if()…else…;
(2)多分支選擇語句:switch。
2.迴圈執行語句
(1)while語句:while()…;
(2)do-while語句:do…while();
(3)for語句:for()…。
3.轉向語句
(1)無條件轉向語句:goto<標號>;
(2)終止語句:break;可用於終止執行switch和迴圈語句;
(3)結束本次迴圈語句:continue;
(4)函數返回語句:return。3.1.4空語句C語言中的空語句就是只有一個分號的語句:
;在編譯時,空語句不產生任何指令代碼,不執行任何操作。3.1.5複合語句在C語言中,複合語句又稱為分程式(block),它是由一對花括弧括起來的若干語句組成的。例如:
{ inta,b,x; a=10; b=5; x=a-b; printf("%d",x); }在上面的例子中,5條語句被一對花括弧括起來,構成一條複合語句。從語法上看,複合語句是作為一個語法整體出現,在選擇結構和迴圈結構程式設計中,經常利用複合語句作為一個語法成分。返回§3.2常用輸出與輸入函數所謂輸入/輸出是以電腦主機為主體而言的,當需要將外界的數據送入電腦內部時,由輸入設備(鍵盤、滑鼠等)向電腦傳輸數據稱為輸入;當需要將電腦中的數據送給外界,即向輸出設備(顯示器、印表機等)傳輸數據成為輸出。在C語言中沒有專門的輸入/輸出語句,輸入/輸出操作是由C函數庫中的相關函數提供的。使用這些函數時,用預編譯命令“#include”將輸入/輸出頭檔包含在根源程式檔中:
#include<stdio.h>常用的標準輸入/輸出函數:
(1)格式化輸入/輸出函數:scanf()/printf()。
(2)字元輸入/輸出函數:getchar()/putchar()。
(3)字串輸入/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度全款购买房产合同范本含贷款转按揭条款3篇
- 2025年东莞货运考试题库
- 二零二五年度全新升级房屋租赁及转让权益保障协议
- 二零二五年度医疗险业务合作合同3篇
- 2024电子商务运营风险评估与管理合同3篇
- 2025年度物流公司物流园区绿化及环境卫生管理合同3篇
- 2024泰康保险公司保险产品与健康大数据分析合同3篇
- 2024智慧城市大数据分析技术服务合同
- 2025年度民间借贷委托转款安全监管协议3篇
- 2025年新科版高二数学下册月考试卷
- 员工信息安全意识培训v
- GST200主机说明书内容
- 隧道贯通方案贯通计算
- GB/T 36490-2018风力发电机组防雷装置检测技术规范
- GB/T 21010-2017土地利用现状分类
- GB/T 15532-2008计算机软件测试规范
- 2023年弥渡县广播电视台(融媒体中心)招聘笔试题库及答案解析
- 规范集团中层管理人员退休返聘的若干规定
- 无机及分析化学考试题(附答案)
- 2023年成都温江兴蓉西城市运营集团有限公司招聘笔试题库及答案解析
- 地震工程学-反应谱和地震时程波的相互转化matlab编程
评论
0/150
提交评论