基礎52期-3.主要開發(fā)實戰(zhàn)_第1頁
基礎52期-3.主要開發(fā)實戰(zhàn)_第2頁
基礎52期-3.主要開發(fā)實戰(zhàn)_第3頁
基礎52期-3.主要開發(fā)實戰(zhàn)_第4頁
基礎52期-3.主要開發(fā)實戰(zhàn)_第5頁
已閱讀5頁,還剩122頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

CC它是人和人交換信息不可缺少的工具。們必須和計算機角落。也最方便的方式——語言,而C語言就是人和計算機交流的一種語言。最重要的功能:說的一方傳遞信息,聽的一方接收說的一方下達指令,聽的一方遵循命令做事情語言是人和人交流,C語言是人和機器交流。只是,人可以不聽另外一個人,語言有獨特的語則和定義,雙方必須遵循這些規(guī)則和定義才能實現真正交流。操作系統(tǒng)提供以下功終端命令方簡言之:主要作用是管理好硬件設備,并為用戶和開發(fā)者提供一個簡單的接口,編程語言(計算機語言)是人們?yōu)榱丝刂朴嬎阍O計的一種符號和文字的組合,從而實現向計算機發(fā)出指令.形式是符號和文字目的是為了控制計算機硬C言就是一種編符號和文字組成用C的目的就是為了編譯編程語言是文字和符號的組CPU能認識機器指指令的表現方式就是0和1的組合.這顯然很?此時要一個中間角色負責將文字和符號轉換為機個負責轉換的角色叫做解釋器.解釋器本質上就是一個運行在操作系統(tǒng)上的應用程序.計算機的大腦或者說心臟就是CPU,它控制著整個計算機的。每種CPU,都有自己的指令系統(tǒng)。這個指令系統(tǒng),就是該CPU器語言。機器語言是一組由0和1系列組成的指令碼,這些指令碼,是CPU制作廠商規(guī)要讓計算機干活,就得用機器語言(二級制數)去命令它。這樣令,不是一種計算機的機器指令編制的程序,不能在另一種計算機上執(zhí)行。代0與1。一門人類可以比較輕松認識的編程語言。情。這正如如何才能讓說的話人明白呢?——翻譯!器,將標識符換成0與1,知道怎么把匯編語言翻譯成機器語言。匯編語言翻譯成機器語言,難道就不能把其他更人性化的語言翻譯成機器語言?1954年,Fortran使程序員擺脫了計算機硬件的限制,把主要精力放在了程序設計上,不在關注低層的計算機硬件。這類語言,稱為高級語言。言,這就是編譯程序,簡稱編譯器。數據被加工的過程?;谶@類方法的程序設計語言成為面向過程的語言。C語言就是這種面向過程的程序設計語言。C貝爾的DennisRitchie在1972年開發(fā)了C,當時他正與kenThompson一起設計UNIX操作系統(tǒng),然而,C并不是完全由Ritchie構想出來的。它來自ThompsonB言。ANSIC/C89197080CC不同版本。1983年,(ANSI)成立了一個X3J11,來制定C語,(ANSI)通過了C語言標準,被稱為ANSIX3.159-1989"ProgrammingLanguageC"。因為這個標準是通過的,所以一般簡稱C89標準。有些人也簡稱ANSIC,因為這個標準是(ANSI)發(fā)布的。1990,(IEC)把C89CISO/IEC9899:1990-Programminglanguages--C[5]。因為此標準是在1990C90C89,因為此標準與ANSIC891994年,國際標準化組織(ISO)和國際電工(IEC)發(fā)布了C89標準修訂版,名叫ISO/IEC9899:1990/Cor1:1994[6],有些人簡稱為C94標準。1995年,國際標準化組織(ISO)和國際電工(IEC)再次發(fā)布了C89標準修訂版,名叫ISO/IEC9899:1990/Amd1:1995-CIntegrity[7],有些人簡稱為C95。1999年1月,國際標準化組織(ISO)和國際電工(IEC)發(fā)布了C語言的新標ISO/IEC9899:1999ProgramminglanguagesCC99。這是C語言的第二個標準。longlong,longdouble_Complex,float_Complex支持了不定長的數組。數組的長度就可以用變量了。類型的時候呢,就用inta[*]這2007年,C語言標準又重新開始修訂C語言,到了2011年正式發(fā)布了ISO/IEC2011C11C11標準新引入的特征盡管沒C99相對C90引入的那么多,但是這些也都十分有用,比如:字節(jié)對齊說明符、泛型機制(genericselection)UnicodeCC執(zhí)行速功能強大(直接進行系編程自寫代碼實現周可移植性較過于自由,經驗不足易出對平臺庫依賴C機器生匯編,匯編生B,B生C,CCC語言的應用極其廣泛,從,到底層操作系統(tǒng),從多應用到大型,均可使用C言來開發(fā):C語言可以寫程C語言可以專門針對某個寫出功能強大的程序C語言可以寫出大型游戲的引C語言可以寫出另一個語C語言可以寫操作系統(tǒng)和驅動程序,并且只能用C語言編任何設備只要配置了微處理器,就都支持C語言。從微波爐到,都是C言技術來推動的CC語言僅有32個關鍵字,9種控制語句,34種運算符,卻能完成無數的功能第一個C語言程序 編寫C語言代碼 #include#includeint{printf("oreturn}C語言的源代碼文件是一個普通的文本文件,但擴展名必須是.c#include意思是頭文件包含,#include<stdio.h>代表包含stdio.h使用C語言庫函數需要提前包含庫函數對應的頭文件,如這里使用printf()函數,需要包含stdio.h頭文#include<#include的區(qū)<>表示系統(tǒng)直接按系統(tǒng)指定 檢""表示系統(tǒng)先在""指定的路徑(沒寫路徑代表當前路徑)查找頭文件,如 一個完整的C語言程序,是由一個、且只能有一個main()函數(又稱主函main函數是C語言程序的,程序是從main函數開始執(zhí)行{}叫代碼塊,一個代碼塊可以有一條或者多條語C語言每句可執(zhí)行代碼都是";"分號結所有的#開頭的行,都代表預編譯指令,預編譯指令行結尾是沒有分所有的可執(zhí)行語句必須是在代碼塊一些說明和解釋,這樣有利于代碼的閱讀/**/叫塊注塊注釋是C語言標準的注釋printf是C語言庫函數,功能是向標準輸出設備輸出一個字printf(“oworld\n”);//\n的意思是回車換return代表函數執(zhí)行完畢,返回return代表函數的終如果main定義的時候前面是int,那么return后面就需要寫一個整數;如main義的時候前面是void,那么return面什么也不需要寫main函數中return0程序執(zhí)行成功,return-1表程序執(zhí)行intmain()和voidmain()在C是一樣的,但C++只接受int這種定義方CCC代碼編譯成可執(zhí)行程序經過4步預處理除,這里并不會檢查語法編譯:檢查語法,將預處理后文件編譯生成匯編文匯編:將匯編文件生成目標文件(二:C語言寫的程序是需要依賴各種庫的,所以編譯之后還需要把庫集成開發(fā)環(huán)境 Visual集成開發(fā)環(huán)境(IDE,IntegratedDevelopmentEnvironment)面工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等的發(fā)軟件服務套。所有具備這一特性的軟件或者軟件套(組)環(huán)境。VisualStudio(簡稱VS)是微軟公司的開發(fā)工具包系列產品。VS是一個基本完整的開發(fā)工具集,它包括了整個軟件生命周期中所需要的大部分工具,如UML具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等等,所寫的目標代碼適用于微軟支持的所有平臺。VisualStudio目前最流行的Windows含+k,Ctrl++k,Ctrl++k,Ctrl+++Shift+nextstepVS2013的C4996錯誤(注意由于微軟在VS2013建議再使用C傳統(tǒng)庫函數等,所以直接使用這些庫函數會提示C4996錯誤VS建議采用帶_s的函數,如scanf_s、strcpy_s,但這些并不是標準C示:#define#define_CRT_SECURE_NO_WARNINGS #pragmawarning(disable:4996) 數據類型的作用:編譯器對象(變量)分配的內存空間大小常量在程序運行過程中,其值不能被改常量一般出現在表達式或賦值語句100,200,-3.14,0.125,-變量在程序運行過程中,其值可以改變量在使用前必須先定義,定義變量前必須有相應的數據類標識符命名規(guī)標識符不能是關鍵標識符只能由字母、數字、下劃線第一個字符必須為字母或下標識符中字母區(qū)分大myBooleanMytExt見名知意。起一個有意義的名字,盡量做到看一眼就知道是什么意思(比如:name,student。小駝峰式命名法(lowercamelcase):第一個單詞以小寫字母開始;第小駝峰式命名法(lowercamelcase):第一個單詞以小寫字母開始;第大駝峰式命名法(uppercamelcase):每一個單字的首字母都采用大寫的單詞,比如send_buf變量特變量在編譯時為其分配相應的內存可以通過其名字和地址相應內變量不需要建立空間,如:externint定義變量需要建立空間,如:int#include#includeint{//extern 空externinta=10;err,intb=//定義一個變量b,b的類型為int,b賦值為return}從廣義的角度來講中包含著定義,即定義是的一個特例,所以并非所有的都是定義:intb它既是,同時又是定對于externb來講它只是不是定一般的情況下,把建立 空間的稱之為“定義”,而把不需要建立空間的稱之為“ ”。#include#include<stdio.h>#defineMAX10int{int //定義了一個變量,其類型為int,名字叫constintb10;//定義一個const常量,名為叫b,值為//b=11;err,//MAX=100;//err,aMAX;//將abc的值設置為MAX的值a=123;printf("%d\na打印變量a的值return0;}進制也就是進位制,是人們規(guī)定的一種進位方法。對于任何一種進制—X制,就表示某一位置上的數運算時是逢X一位。進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x十六進000011112223334445556667778899ABCDEF二進制是計算技術中廣泛采用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規(guī)則是“逢二進一”,借位規(guī)則是“借一當當前的計算機系統(tǒng)使用的基本上是二進制系統(tǒng),數據在計算機中主要是以補的形式 的。術含術含bit(輸是以“位”(bit)為單位。Byte(一個字節(jié)為8個二進制,稱為8位,計算機中的最小單位是字節(jié)。數據是以“字節(jié)”(Byte)為單位。1M(11Kb(1KB(1Mb(1MB(2,16WORD,4,321bit,11Byte,1,81024k,1024bit,10241024Byte,10241024Kb=1024*1024KB=1024*十進制轉化二進制的方法:用十進制數除以2,分別取余數和商數,商數為的時候,將余數倒著數就是轉化后的結果十進制的小數轉換成二進制:小數部分和2相乘,取整數,不足1取0,每次八進制,Octal,縮寫OCT或O,一種以8為基數的,采用0,1,2,3,4,5,6,7八個數字,進1。一些編程語言中常常以數字0開始表明八進制的數和二進制數可以按位對應(八進制一位對應二進制三位)應用在計算機語言中。十進制轉化八進制的方法用十進制數除以8,分別取余數和商數,商數為0的時候,將余數倒著數就是它由0-9,A-F組成,字母不區(qū)分大小寫。與10進制的對應關系是:0-9對應0-9,A-F應10-15。十六進制的數和二進制數可以按位對應(十六進制一位對應二進制四位)此常應用在計算機語言中。十進制轉化十六進制的方法用十進制數除以16,分別取余數和商數,商數為0的時候,將余數倒著數就是C1-900xC#include#includeint{inta=123;intb=intc=////0//printf("十進制:%d\n",aprintf("八進制:%o\n", //%o,為字母o,不是數printf("十六進制:%x\nreturn}sizeofsizeof不是函數,所以不需要包含任何頭文件,它的功能是計算一個數據sizeof的返回值為size_t,size_t類型在32位操作系統(tǒng)下是unsignedsizeof返回的占用空間大小是為這個變量開辟的大小,而不只是它用到的#include#include<stdio.h>intmain(){intintbsizeof(a);//sizeofprintf("b=%d\n",sizetc=printf("c%u\nc);//用無符號數的方式輸出creturn}打印格含10int%o(8int16int16int10#include#includeint{inta=123; intb=0567; intc=0xabc;//定義變量c,以16進制方式賦值為0xabcprintf("a=%d\n",printf("8進制:b=%o\n",b);printf("10進制:bd\nb);printf("16進制:c=%x\n",c);printf("16進制:cX\nc);printf("10進制:c=%d\n",c);unsignedintd0xffffffff定義無符號int變量d,以16printf("有符號方式打?。篸d\nd);printf("無符號方式打?。篸u\nd);return0;}#include#includeint{intprintf("請輸入a//不要加scanf("%d",printfprintf("a%d\na);打印areturn}short、int、long、long數據類占用空short(2int(4long(longlong(Windows4,Linux4(328(648注意雖然C言標準中沒有明確規(guī)定整型數據的長度,但long型整數的長度不能短于int類型,short類型整數的長度不能長于int類型。。整型常所需類int10l,long10ll,longlong10u,unsignedint10ul,unsignedlong10ull,unsignedlonglong打印格含shortintlonglonglongunsignedshortunsignedintunsignedlong打印格含unsignedlonglong#include#includeint{shorta=10;intb=10;longc=10l;或者longlongd10ll;或者printf("sizeof(a)=%u\n",sizeof(a));printf("sizeof(b)=%u\n",sizeof(b));printf("sizeof(c)=%u\n",sizeof(c));printf("sizeof(c)=%u\n",printf("shorta=%hd\n",a);printf("intb=%d\n",b);printf("longc=%ld\n",c);printf("longlongd=%lld\n",d);unsignedshorta2=20u;unsignedintb2=20u;unsignedlongc2=20ul;unsignedlonglongd2=20ull;printf("unsignedshorta=%hu\n",a2);printf("unsignedintb=%u\n",b2);printf("unsignedlongc=%lu\n",c2);printf("unsignedlonglongd=%llu\n",d2);return}有符號數是 為符號位,0代表正數,1代表負數#include#includeint{signedinta1089474374;//定義有符號整型變量printf("%X\na F BA//1011111100001111111100001011return}無符號數最不是符號位,而就是數的一部分,無符號數不可能是負數#include#includeint{unsignedinta3236958022;定義無符號整型變量printf("%X\nareturn}增大數的表達最大值。數據類占用空取值范數據類占用空取值范2-3276832767(-215~215-4-21474836482147483647(-231~231-unsignedshortunsignedintunsignedlong4244-21474836482147483647(-231~231-0到65535(0~216-0 (0~232-0 (0~232-字符型變量用于一個單一字符,在C語言中用char表示,其中每個字符變量都會占用1節(jié)。在給字符型變量賦值時,需要用一對英文半角格式的單引號('')把字符括起來。對應的ASCII編碼放到變量的單元中。char的本質就是一個1字節(jié)大小的整型。#include#includeint{charch=printf("sizeof(ch)=%u\n",printf("ch[%%c%c\nch);//printf("ch[%%d]%d\nch打印‘aASCIIcharA='A';chara='a';printf("a=%d\n",printf("A=%d\n",printf("Ac\n",'a32小寫a轉大寫printf("ac\n",'A32大寫A轉小寫ch='printf("空字符:%d\nch空字符ASCII的值為printf("Ac\n",'a小寫a轉大寫printf("ac\n",'A大寫A轉小寫returnreturn}#include#includeint{charprintf("請輸入ch的值//不要加scanf("%c",printf("chc\n",ch打印chreturn}ASCII對照表ASCII控制字ASCII字ASCII字ASCII字0@、1!Aa2"Bb3#Cc4$Dd5%Ee6&Ff7,Gg8(Hh9)Ii*Jj+Kk,Ll-Mm.Nn/Oo0Pp1Qq2Rr3Ss4Tt5Uu6Vv7Ww8Xx9Yy:Zz;[{</|=]}>^`?_ASCII碼大致由以下兩部分組ASCII非打印控制字符ASCII表上的數字0-31分配給了控制字符,用于ASCII打印字符:數字32-126分配給了能在鍵盤上找到的字符,當查看或打印文檔時就會出現。數字127代表Del命令。轉義字含ASCII碼值(十進制退格(BS)換頁(FF),換行(LF)回車(CR)水平制表(HT)(TAB轉義字含ASCII碼值(十進制垂直制表代表一個單引號(撇號)8,d3816,h216注意:紅色字體標注的為不可打印字符#include#includeint{printf("\refg\nr\nprintf("\befg\n");//\b為退格鍵,\n為換行printf("%d\n\123'\123'為8進制轉義字符,0123對應10進制數為printf("%d\n\x23'\x23'為16進制轉義字符,0x23對應10進制數為return}當超過一個數據類型能夠存放最大的范圍時,數值會溢出有符號位最 溢出的區(qū)別:符號位溢出會導致數的正負發(fā)生改變,但最的溢出會導致最 丟失。數據類占用空取值范1-128127(-27~27-unsigned10到255(0~28-#include#includeintint{charch=0x7f+2;//127+2printf("%d\n", 0111 ,這是負數補碼,其原碼為11111111,結果為-//unsignedcharch2;ch2=0xff+1;//255+1printf("%u\n",ch2); 1111 ,char只有8位的溢出,結果為00000000,十進制為ch2=0xff+2;printf("%u\n", 1111 ,char只有8位的溢出,結果為00000001,十進制為return}實型變量也可以稱為浮點型變量,浮點型變量是用來小數數值的。在C語言中,浮點型變量分為兩種:單精度浮點數(float)、雙精度浮點數(double),但是double量所表示的浮點數比float型變量更精確。數據類占用空有效數字范47815~16由于浮點型變量是由有限的單元組成的,因此只能提供有限的有效數字在有效位以外的數字將被舍去,這樣可能會產生一些誤差。不以f結尾的常量是double型,以f結尾的常量(如3.14f)是float型#include#includeint{floata3.14f或3.14Fdoubleb=3.14;printfprintf("a=%f\n",printf("b=%lf\n",a3.2e3f3.2*100032000,e可以寫printf("a1=%f\n",a=100e-3f;//100*0.001=printf("a2=%f\n",a=printf("a3f\na結果為return}含externinta;constinta=定義寄存器變量,提高效率。registerCPUregisterregister字符串是內存中一段連續(xù)的char空間,以'\0'(數字0)結字符串常量與字符常量的不每個字符串的結尾,編譯器會自動的添加一個結束標志位'\0',即aprintf函數printf是輸出一個字符串printf格式字符打印格對應數據類含shortunsignedunsigned8unsigned10unsigned16,xabcdef,Xchar(字符串以'\0‘結尾,這個'\0'即空字符void16%printf附加格式字含l(d,u,x,o-m(0(0mnm.n(指定nn=6#include#include<stdio.h>intmain(){inta=printf("a=%d\n",a);//格式化輸出一個字符串printf("%p\n&a);//輸出變量a在內存中的地址charc=longa2=100;printf("%ld,%lx,%lo\n",a2,a2,longlonga3=printf("%lld,%llx,%llo\n",a3,a3,intabc=printf("abc='%6d'\n",printf("abc='%-6d'\n",abc);printf("abc='%06d'\n",abc);printf("abc='%-06d'\n",doubled=printf("d=\'%-10.3lf\'\n",return}scanf函數scanf通過%轉義的方式可以得到用戶通過標準輸入設備輸入的數據#include#includeint{charch1;charch2;charch3;inta;intch1=getchar();printf("ch1=%c\n",getchar();//測試此處getchar()ch2=getchar();printf("\'ch2=%ctest\'\n",getchar測試此處getchar()printf("請輸入ch3",printf("ch3=%c\n",scanf("%d",&a);printf("a=%d\n",scanf("%d",&b);printf("b=%d\n",return}運算符類作sizeof術術示結+3---+加10+-減10-5*乘10*/除10/2%10%1術示結a=2;a=3;a=2;a=3;-a=2;b=--a=1;-a=2;b=a--a=1;術示結=a=2;a=2;a=0;-chana=5;a-a=2;a=4;a=3;C語言的比較運算中,“真”用數字“1”來表示,“假”用數字“0”來表示術示結4==04!=1<4<0>4>14<=04>=1術術示結!非如果a!a如果a!a與a&&如果ab或a||如果ab有一個為真,1--.---2--~~-*&!(類型--3/除*乘%4+加-減56><7表達式8&9^|2=------------,-問題。轉換的方法有兩種自動轉換(隱式轉換):遵循一定的規(guī)則,由編譯系統(tǒng)自動完成強制類型轉換:把表達式的運算結果強制轉換成所需的數據類型類型轉換的原則:占用內存字節(jié)數少(值域小)的類型,向占用內存字節(jié)數(值域大)的類型轉換,以保證精度不降低#include#includeint{intnum=5;printf("s1=%d\n",num/2);printf("s2=%lf\n",num/2.0);return}需的類型,其基本語法格式如下所示:#include#includeint{floatx=0;inti=0;x=i=i=//x為實型,i//printf("x=%f,i=%d\n",x,return}C語言支持最基本的三種程序運行結構:順序結構、選擇結構、循環(huán)結構順序結構:程序按順序執(zhí)行,不發(fā)生跳轉選擇結構:依據是否滿足條件,有選擇的執(zhí)行相應功循環(huán)結構:依據條件是否滿足,循環(huán)多次執(zhí)行某段代if開開判斷條執(zhí)行語結#include#includeint{inta=1;intb=if(a>{printf("%d\n",}return}if…else語句 結結#include#include<stdio.h>intmain(){inta=1;intb=if(a>{printf("%d\n",}{printf("%d\n",}return}if…elseif…else語句開開判斷條件tue判斷條件判斷條件結執(zhí)行語句執(zhí)行語句執(zhí)行語句執(zhí)行語句#include#includeint{unsignedintscanf("%u",if(a<{printf("個位}elseif(a<{printf("十位}elseif(a<{printf("百位}{printf("很大}return}#include#includeint{inta=10;intb=20;intc;if(a>{c=}{c=}printf("c1=%d\n",a=b=c=(a>b?a:bprintf("c2=%d\n",return}#include#includeint{charc=switchc)//{casecase'2':printf("notOK\n");default://如果上面的條件都不滿足,那么執(zhí)行printf("areu}return}while語句#include#includeint{inta=20;while(a>10){scanf("%d",printf("a=%d\n",}return}do…while語句開開執(zhí)行語循環(huán)條結#include#includeint{inta=1;{printf("a=%d\n",}while(a<return}for#include#includeint{intintsum=for(i=0;i<=100;{sum+=}printf("sum=%d\n",sum);return0;}循環(huán)語句之間可以相互嵌套#include#includeint{intnum=0;inti,j,k;for(i=0;i<10;{for(j=0;j<10;{for(k=0;k<10;{ oworld\n");}}}printf("num=%d\n",num);return0;}break、continue、break語句在switch條件語句和循環(huán)語句中都可以使用break當它出現在switch條件語句中時,作用是終止某個case并跳出switch結當它出現在循環(huán)語句中,作用是跳出當前內循環(huán)語句,執(zhí)行后面的代碼當它出現在嵌套循環(huán)語句中,跳出最近的內循環(huán)語句,執(zhí)行后面的代碼#include#includeint{inti=0;while{printf("i=%d\n",if(i=={break;跳出while}}intflag=0;intm=0;intn=0;for(m=0;m<10;{for(n=0;n<10;{if(n=={flag=break;跳出for(n0;n10;}}if(flag=={break;跳出for(m=0;m10;}}return}continue語句使用continue語句。int{intsum=//定義變量for(inti=1;i<=100;{ifi20)//如果i是一個偶數,執(zhí)行if{ }sum }printf("sum=%d\n",return}#include#includeint{gotoEnd;//無條件跳轉到Endreturn0;}起來——稱為數組。同的數據類型,同時所有的成員在內存中的地址是連續(xù)的。數組屬于構造數據類一個數組可以分解為多個數組元素:這些數組元素可以是基本數據類型或構造類型。intintstructStu按數組元素類型的不同,數組可分為:數值數組、字符數組、指針數組、結構數組等類別。inta[10];chars[10];charinta[10];chars[10];char*p[10];通常情況下,數組元素下標的個數也稱為維數,根據維數的不同,可將數組分為一維數組、二維數組、三維數組、數組等。通常情況下,二維及以上的數組稱為數組。數組名字符合標識符的書寫規(guī)定(數字、英文字母、下數組名不能與其它變量名相同,同一作用域內是唯一方括號[]中常量表達式表示數組元素的個03定義數組時[]內最好是常量,使用數組時[]內即可是常量,也可以是變#include#includeint{inta[10];//定義了一個數組,名字叫a,有10個成員,每個成員都是int//a[0]……a[9],沒有a[0]=0;a[9]=inti=for(i=0;i<10;{a[i]i;}for(i=0;i<10;i++){printf("%d",}return}初始化為零。局部數組若不初始化,內容為隨機值。intinta[10]1,2,3,4,5,6,7,8,9,10inta[10]1,2,3初始化前三個成員,后面所有元素都設置為0inta[10]={0};//所有的成員都設置為0inta1,23,4,5定義了一個數組,有5數組名是一個地址的常量,代表數組中首元素#include#includeint{inta[10]1,2,3,4,5,6,7,8,9,10printf("a=%p\n",printf("&a[0]=%p\n",intnsizeof(a);//數組占用內存的大小,10個int類型,10*4=intn0sizeof(a[0]);//數組第0個元素占用內存大小,第0個元素為intinti=for(i=0;i<sizeof(a)/sizeof(a[0]);{printf("%d",}return}#include#includeint{inta[]={1,-2,34,5,6,7,-8,9,10};//inti=intmax=for(i=0;i<sizeof(a)/sizeof(a[0]);{if(a[i]>{max=}}printf("數組中最大值為:%d\nreturn}#include#includeint{inta[]={1,-2,34,5,6,7,-8,9,10};//inti=intj=sizeof(a)/sizeof(a[0])-1;inttmp;while(i<{tmp=a[i]=a[j];a[j]a[i]=a[j];a[j]=tmp;}for(i=0;i<sizeof(a)/sizeof(a[0]);{printf("%d",}return}#include#includeint{inta[]={1,-2,34,5,6,7,-8,9,10};//inti=0;intj=intn=sizeof(a)/sizeof(a[0]);inttmp;//1//2for(i=0;i<n-1;{forj=0;jni-1j++)//{if(a[j]>a[j+{tmp=a[j];a[j]=a[j+1];a[j+1]=}}}for(i=0;i<n;{printf("%d",}return}二維數組定義的一般形式是類型說明符類型說明符數組名[常量表達式1][常量表達式其中常量表達式1表示第一維下標的長度,常量表達式2表示第二維下標的度int命名規(guī)則同一維數定義了一個三行四列的數組,數組名為a其元素類型為整型,該數組的元素個數二維數組a是按行進行存放的,先存放a[0]行,再存放a[1]行、a[2]行,并二維數組在概念上是二維的:其下標在兩個方向上變化,對其一般需要兩個下標。在內存中并不存在二維數組,二維數組實際的硬件器是連續(xù)編址的,數組存放方式是一樣的。#include#includeint{//定義了一個二維數組,名字叫//由3個一維數組組成,這個一維數組是intinta[3][4];a[0][0]=a[2][3]=12;inti=0;intj=intnum=for(i=0;i<3;{for(j=0;j<4;{a[i][j]=}}for(i=0;i<3;i++){for(j=0;j<4;{printf("%d,",}}return}////分段賦 inta[3][4]={{1,2,3,4},{5,6,7,8,},{9,10,11,12inta[3][4]{{1,2,3,4{5,6,7,8,{9,10,11,12//inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12inta[3][4]={1,2,3,4};inta[3][4]={0};inta[][4]={1,2,3,4,5,6,7,8};數組名是一個地址的常量,代表數組中首元素#include#includeint{//定義了一個二維數組,名字叫//每個元素又是一個一維數組inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12//第0個一維數組的數組名為printf("a=%p\n",printf("a[0]=%p\n",//測二維數組所占內存空間,有3個一維數組,每個一維數組的空間為//sizeof(a)=3*4*4=printf("sizeof(a)=%d\n",printf("sizeof(a[0])=%d\n",sizeof(a[0])printf("sizeof(a[0][0])=%d\n",printf("i=%d\n",sizeof(a)/printf("j=%d\n",sizeof(a[0])/printf("n=%d\n",sizeof(a)/return}#include#includeint{////行代表人 //floata[5][3]={{80,75,56},{59,65,71},{59,63,70},{85,45,90},{76,77,45}intinti,low[3]={0floats=0,lesson_aver[3]={0for(i=0;i<3;{for(j=0;j<5;{s=s+if(a[j][i]<{}}lesson_aver[i]=s/5;s=0;}for(i=0;i<3;i++){printf("%.2f\n",}for(i=0;i<3;i++){ }return}數組的定義與二維數組類似,其語法格式具體如intint定義了一個三維數組,數組的名字是a,數組的長度為3,每個數組的元素又是一個二維數組,這個二維數組的長度是4,又是一個一維數組,這個一維數組的長度是5,元素類型是int。#include#includeint{//inta[3][4][5]定義了一個三維數組,有3個二維數組intinta[3][4][5]={{{1,2,3,4,5},{6,7,8,9,10},{0},{0}},{{0},{0},{0{0}},{{0},{0},{0},{0}}inti,j,for(i=0;i<3;{for(j=0;j<4;{for(k=0;k<5;{//添 元素代printf("%d,",}}}return}C語言中沒有字符串這種數據類型,可以通過char的數組來替代字符串一定是一個char的數組,但char的數組未必是字符串數字0(和字符‘\0’等價)結尾的char數組就是一個字符串,但如果char數組沒有以數字0那么就不是一個字符串,只是普通字符數組,所以字符串是一種特殊的char數組。#include#includeint{charc1'c'pr'o'g'};//printf("c1s\n",c1亂碼,因為沒有’\0’charc2[]={'c','','p','r','o','g','\0'};printf("c2=%s\n",//字符串處理以‘\0’(數字0)作為結束符,后面的'h','l'l'e''o'不會輸出charc3[]={'c','','p','r','o','g','\0','h','l','l','e','o','\0'};printf("c3=%s\n",return}#include#include//CC語言字符串,以字符‘\0數字0intmain(){//不指定長度沒有0charbuf[]={'a','b','c'printf("bufs\n //charbuf2[100]={'a','b','c'};printf("buf2=%s\n",charbuf3[1000//charbuf4[2'1'2'3數組越界charbuf5[50]={'1','a','b','0','7'};printf("buf5=%s\n",charbuf6[50]={'1','a','b',0,'7'printf("buf6=%s\n",charbuf7[50]={'1','a','b','\0','7'printf("buf7=%s\n",charbuf8[]="agjdslgjlsdjg";charstr[]="\012abc";printf("str==%s\n",return}由于字符串采用了'\0'標志,字符串的輸入輸出將變得簡單方便#include#includeint{charprintf("inputprintf("inputstring1:scanf("%sstr);//scanf(“%s”,str)默認以空格分隔printf("output:%s\n",str);return}當調用函數時,需要關心5要素頭文件:包含指定的頭文函數名字:函數名字必須和頭文件的名字一功能:需要知道此函數能干嘛后才參數:參數類型要匹返回值:根據需要接收返回#include#includetime_ttime(time_t返回值:當前系統(tǒng)時間time_t相當于long#includevoidsrand(unsignedint功能:用來設置rand()#includeint返回值#include<stdio.h>#include<time.h>#includeint{time_ttm=LL);//得到系統(tǒng)時srand((unsignedint)tm);//隨 intr=printfprintf("r=%d\n",return}#include#includesizetstrlen(constchar返回值:字符串s的長度,size_t為unsignedintcharcharstr[]="abcdefg";intn=strlen(str);printf("n=%d\n",n);#include#includechar*strcpy(char*dest,constchar 到dest所指向的空間中,'\0'也會拷貝過參數返回值注意:如果參數dest所指的內存空間不夠大,可能會造成緩沖溢出的錯誤情charchardest[20]="123456789";charsrc[]=" oworld";strcpy(dest,src);printf("%s\n",dest);#include#includechar*strncpy(char*dest,constchar*src,size_t功能功能:把指向字符串的前個字符 參數返回值charchardest[20]charsrc[]= ostrncpy(dest,src,printf("%s\n",dest[5]=printf("%s\n",#include#includechar*strcat(char*dest,constchar返回值charcharstr[20]=char*src= oprintf("%s\n",strcat(str,#include#includechar*strncat(char*dest,constchar*src,sizet功能參數返回值字符串前個字符連接到dest的尾部,‘\0’charcharstr[20]=char*src= oprintf("%s\n",strncat(str,src,#include#includeintstrcmp(constchar*s1,constchar功能s1s2ASCII參數返回值char*str1=" ochar*str1=" oworld";char*str2=" omike";if(strcmp(str1,str2)=={}elseif(strcmp(str1,str2)>{}{}#include#includeintstrncmp(constchar*s1,constchar*s2,sizet功能s1s2前nASCII參數返回值char*str1=" ochar*str1=" oworld";char*str2=" omike";if(strncmp(str1,str2,5)=={}elseif(strcmp(str1, oworld")>{}{}#include#includeintsprintf(char*str,constchar*format,'\0'為止。參數返回值-1charchardst[100]={0};inta=10;charsrc[]=" oworld";printf("a=%d,src=%s",a,src);intlen=sprintf(dst,"a=%d,src=%s",a,printf("dst=\"%s\"\n",printf("len=%d\n",#include#includechar*strchr(constchar*s,int功能:在字符串s中查找字母c出現的位參數參數返回值charcharsrc[]="ddda123abcd";char*p=strchr(src,'a');printf("p=%s\n",p);#include#includechar*strstr(constchar*haystack,constchar*needle);返回值charsrc[]="ddddabcd123abcd333abcd";char*p=strstr(src,"abcd");printf("p=%s\n",#include#includechar*strtok(char*str,constchar功割字符時,則會將該字符改為\0字符,當連續(xù)出現多個時只替換第一個為\0。參數返回值在第一次調用時:strtok()必需給予參數s字符往后的調用則將參數s設置成NULL,每次調用成功則返回指向被分割出片charchara[100]adc*fvcv*ebcy*hghbdfg*casdert";char*s=strtok(a,"*");//將"*"分割的子串取出while(s!=NULL){printf("%s\n",s=strtok(NULL,}#include#includeintatoi(constchar功參數nptr返回值類似的函數有atof():把一個小數形式的字符串轉化為一個浮點數atol():將一個字符串轉化為long類charstr1[]="-10";intcharstr1[]="-10";intnum1=atoi(str1);printf("num1=%d\n",charstr2[]="0.123";doublenum2=atof(str2);printf("num2=%lf\n",C序是由函數組成的,我們寫的代碼都是由主函數main()開始執(zhí)行的。函數是C程序的基本模塊,是用于完成特定任務的程序代碼單元。從函數定義的角度看,函數可分為系統(tǒng)函數和用戶定義函數兩種系統(tǒng)函數,即庫函數數,可以直接使用它們,如我們常用的打印函數printf()。用戶定義函數:用以解決用戶的專門需要函數的使用可以省去重復代碼的編寫,降低代碼重復intmax(inta,int{if(a>return}return}}int{//操作1//inta1=10,b1=20,c1=c1max(a1,b1調用//操作2//inta2=11,b2=21,c2=c2max(a2,b2調用//……return0;}函數可以讓程序更加模塊化,從而有利于程序的閱讀,修改和完到它們的平均值;打印出一個柱狀圖。如果我們把這些操作直接寫在main()以讓程序更加清晰、模塊化:#include#includeint{floatreadlist(list,sort(list,average(list,bargraph(list,bargraph(list,return}似于C序的函數。默認情況下,公司就是一個大部一個部門的情況下),相當于C程序的main()函數。如果公司比較小(程序比較小),因為任務少而簡單,一個部門即可(main()函數)勝任。但是,如果這個公司很大型應用程序務多而雜,如果只是一個部門當于沒有部門,沒有分工),我們可想而知,公司管理、運營起來會有多,不是說這樣不可以運營,只是這樣不完美而已,如果根據公司要求分成一個個部能封裝一個一個函數招聘由行政部門負責,研發(fā)由技術部門負責等,這樣就可以分工明確,結構清晰,方便管理,之間還可以相互協調。函數定義的一般形式{執(zhí)行語句部分}理論上是可以隨意起名字,最好起的名字見名知意,應該讓用戶看到這個函數名字就知道這個函數的功能。注意,函數名的后面有個圓換號(),代表這個為函數,不是普通的變量名。在定義函數時指定的形參,在未出現函數調用時,它們并不占內存中的單元,因此稱它們是形式參數或虛擬參數,簡稱形參,表示它們并不是實際存在的數據,所以,形參里的變量不能賦值。voidvoidmax(inta10,intb20)error,{}在定義函數時指定的形參,必須是,類型+變量的形式//1://1:right,類型+voidmax(inta,int{}//2:error,voidmax(int,{}//3:error,inta,intb;voidmax(a,b){}在定義函數時指定的形參,可有可無,根據函數的需要來設計,如果沒有形參,圓括號內容為空,或寫一個void關鍵字:void{}void{}花括號{}里的內容即為函數體的內容,這里為函數功能實現的過程,這和以前的寫代碼沒太大區(qū)別,以前我們把代碼寫在main()函數里,現在函數的返回值是通過函數中的return語句獲得的,return后面的值也可盡量保證return語句中表達式的值和函數返回類型是同一類intintmax函數的返回值為int{inta=returna返回值a為int類型,函數返回類型也是int}如果函數返回的類型和return語句中表達式的值不一致,則以函數返回類型為準,即函數返回類型決定返回值的類型。對數值型數據,可以自動進行類型轉換。doubledoublemax函數的返回值為double{inta=returna返回值a為int類型,它會轉為double}注意:如果函數返回的類型和return句中表達式的值不一致,而它又return語句的另一個作用為中斷return所在的執(zhí)行函數,類似于break中斷循環(huán)、switch語句一樣intint{return1;//執(zhí)行到,函數已經被中斷,所以下面的return2無法被執(zhí)行到return2;//沒有執(zhí)行}如果函數帶返回值,return后面必須跟著一個值,如果函數沒有返回值,函數名字的前面必須寫一個void鍵字,這時候,我們寫代碼時也可以通過return中斷函數(也可以不用),只是這時,return后面不帶內容(分號“;”除外)。voidvoidmax最好要有void{return;return;}定義函數后,我們需要調用此函數才能執(zhí)行到這個函數里的代碼段。這和main()函數不一樣,main()為編譯器設定好自動調用的主函數,無需人為調用,我們都是在main()函數里調用別的函數,一個C程序里有且只有一個main()函數。#include#includevoid{printf("thisisfor}int{ //print_testreturn}進入main()函調用print_test()函它會在main()函數的前尋找有沒有一個名字叫“print_test”的函如果找到,接著檢查函數的參數,這里調用函數時沒有傳參,函數定義也沒有形參,參數類型匹配;開始執(zhí)行print_test()函數,這時候,main()塞(停)在print_test()這一行代碼,等待print_test(執(zhí)行。print_test()函數執(zhí)行完(這里打印一句話),main()才會繼續(xù)往下執(zhí)行,執(zhí)行到return0,程序執(zhí)行完畢。形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數后,實參也不能使用實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在調用函數時,編譯系統(tǒng)臨時給形參分配單元。調用結束后,形參單元被釋放。實參單元與形參單元是不同的單元。調用結束后,形參單元被釋放,函數調用結束返回主調函數后則不能再使用該形參變量。實參單元仍保留并維持原值。因此,在執(zhí)行一個被調用函數時,形參的值如果發(fā)生改變,并不會改變主調函數中實參的值。如果是調用無參函數,則不能加上“實參”,但括號不能省void{}int{test();right,圓括號()test(250error,return}如果實參表列包含多個實參,則各參數間用逗號隔voidtest(inta,int{}int{intp=10,q=test(p, return}實參與形參的個數應相等,類型應匹配(相同或賦值兼容)。實參與形參按順序對應,一對一地傳遞數據。實參可以是常量、變量或表達式,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。所以,這里的變量是在圓括號()外面定義好、賦好值的變量。voidtest(inta,int{}int{intp=10,q=20;test(p,q); //righttest(11,30-10);//righttest(intaintberrorreturn}如果函數定義沒有返回值,函數調用時不能寫void關鍵字,調用函void{}int{test();//voidtest();//error,void關鍵字只能出現在定義,不可能出現在調用的地方inta=test(); //error,函數定義根本就沒有返回值return}如果函數定義有返回值,這個返回值我們根據用戶需要可用可不用,但是,假如我們需要使用這個函數返回值,我們需要定義一個匹配類型的變量來接收。函數的定義返回值為intint{}int{intatestright,a為int類型intb;b= rightchar*ptest雖然調用成功沒有意義p為char*,函數返回值為int,errorint只是類型,沒有定義變量int=test();errorint只是類型,沒有定義變量inttest();return}如果使用用戶自己定義的函數,而該函數與調用它的函數(即主調函數)不在對被調用的函數作。所謂函數,就是在函數尚在未定義的情況下,事先將該函數的有關信息注意:一個函數只能被定義一次,但可以多次#include#includeintmax(intx,intyintmax(int,int);//式int{inta=10,b=25,nummax=0;num_maxmax(a,b函數的調用printf("num_max=%d\n",num_max);return0;}intmax(intx,int{returnx>y?x:}函數定義和的區(qū)別1)型、函數體等,它是一個完整的、獨立的函數單位。2)的作用則是把函數的名字、函數類型以及形參的個數、類型和順序(注意,不包括函數體)通知編譯系統(tǒng),以便在對包含函數調用的語句進行編譯時,據此對其進行對照檢查(是否一致)。mainexitmain函數中調用exitreturn結果是一樣的,但在子函數中調用只是代表子函數終止了,在子函數中調用exit,那么程序終止#include<stdio.h>#include#include<stdio.h>#include<stdlib.h>void{}int{whilereturnreturn}把函把函放在頭文件xxx.h中,在主函數中包含相應頭文在頭文件對應的xxx.c中實現 的函當一個項目比較大時,往往都是分文件,這時候有可能不把同一個頭文include多次,或者頭文件嵌套包為了避免同一個文件被include多次,C/C++中有兩種方式,一種是方式,一種是pragmaonce式。 SOMEFILEH#defineSOMEFILE_H 方法二#pragma#pragma內存含 器:計算機的組成中,用來程序和數據,輔助CPU進行運算處理內存:存貯器,暫存程序/數據——掉電丟失SRAM、DRAM、DDR、外存:外部器,長時間保存程序/數據—掉電不丟ROM、ERRROM、(NAND、NOR)、硬盤、光盤內存是溝通CPU與硬盤的橋暫存放CPU運算暫存與硬盤等外部器交換的數物理器和地址空有關內存的兩個概念:物理器和地址空間物理器:實際存在的具體器主板上裝插的內存顯示卡上的顯示各種適配卡上的 和ROM地址空間:對器編碼的范圍。我們在軟件上常說的內存是指這一層含義。編碼:對每個物理單元(一個字節(jié))分配一個號尋址:可以根據分配的號碼找到相應的單元,完成數據的讀將內存抽象成一個很大的一維字符編碼就是對內存的每一個字節(jié)分配一個32位或64位的(與32位或64位處理器相關)這個內存我們稱之為內存地址內存中的每一個數據都會分配相應的地址char:占一個字節(jié)分配一個地int:占節(jié)分配四個地float、struct、函數、數組內存區(qū)的每一個字節(jié)都有一個,這就是“地址”這個變量分配內存單元,并確定它的內存地址()指針的實質就是內存“地址”。指針就是地址,地址就是指指針是內存單元的,指針變量是存放地址的變量通常我們敘述時會把指針變量簡稱為指針,實際他們含義并不一樣指針也是一種數據類型,指針變量也是一種變指針變量指向誰,就把誰的地址賦值給指針變“*”操作符操作的是指針變量指向的內存空#include#includeint{inta=0;charb=100;printf("%p,%p\n&a,&b打印ab//int*代表是一種數據類型,int*指針類型,pint*p;p&a;//將a的地址賦值給變量p,p",char*p1=",return}注意:&寄存器變量不在內存里,而在CPU里面,所以是沒有地址。inta=0;inta=0;intb=11;int*p=&a;*p=printf("a=%d,*p=%d\n",a,p=*p=printf("b=%d,*p=%d\n",b,使用sizeof()測量指針的大小,得到的總是:4或sizeof()測的是指針變量指向地址的大32位平臺,所有的指針(地址)32位(4字節(jié)64位平臺,所有的指針(地址)64位(8字節(jié)int*p1;int*p1;int**p2;char*p3;charprintf("sizeof(p1)=%d\n",sizeof(p1));printf("sizeof(p2)=%d\n",sizeof(p2));printf("sizeof(p3)=%d\n",sizeof(p3));printf("sizeof(p4)=%d\n",sizeof(p4));printf("sizeof(double*)=%d\n",sizeof(double*));指針變量也是變量,是變量就可以任意賦值,不要越界即可(32位為464位為8字節(jié)),但是,任意數值賦值給指針變量沒有意義,因為這樣的指針就成了野指針,此指針指向的區(qū)域是未知(操作系統(tǒng)不允許操作此指針指向的內存區(qū)域)。所以,野指針不會直接錯誤,操作野指針指向的內存區(qū)域才會出問題。intinta=100;int*p;pa;把a的值賦值給指針變量p,pok=*p1000;//任何變量(空閑可用),C語言中,可以把NULL賦值給此指針,這樣就標志此指intint*p=NULL是一個值為0的宏常#define#define ((void萬能指針voidvoid*指針可以指向任意變量的內存空間voidvoid*p=inta=p(void*)&a指向變量時,最好轉換為void//使用指針變量指向的內存時,轉換為int*((int*)p)=printf("a=%d\n",intainta=100;intb=//constint*p1=&a;//等價于intconst*p1=&a;//*p1=111;//errp1=&b;//ok//int*constp2=&a;//p2=&b;*p2=222;數組名字是數組的首元素地址,但它是一個常intinta[]={1,2,3,4,5,6,7,8,9printf("a=%p\n",printf("&a[0]=%p\n",//a10;err,#include#includeint{inta[]={1,2,3,4,5,6,7,8,9inti=intintn=sizeof(a)/for(i=0;i<n;{//printf("%d,",printf("%d,",}int*pa定義一個指針變量保存a的地址for(i=0;i<n;i++){p[i]=2*}for(i=0;i<n;{printf("%d,",*(p+}return}指針計算不是簡單的整數相如果是一個int*,+1的結果是增int的大如果是一個char*,+1的結果是增char大#include#includeint{intint*p=printf("%d\n",p+=2;//移動了2個printf("%d\n",charb=0;char*p1=&b;printf("%d\n",p12;//移動了2個printf("%d\n",return}}通過改變指針指向操作數組元素#include#includeint{inta[]={1,2,3,4,5,6,7,8,9inti=intn=sizeof(a)/int*p=for(i=0;i<n;{printf("%d,",*p);}return}示例#include#includeint{inta[]={1,2,3,4,5,6,7,8,9inti=intn=sizeof(a)/int*p=a+n-for(i=0;i<n;{printf("%d,",*p);}return}示例#include#includeint{inta[]={1,2,3,4,5,6,7,8,9int*p2=&a[2];//int*p2=&a[2];//第2個元素地址int*p1=&a[1];//第1個元素地址printf("p1pp2%p\np1,p2);intn1=p2-p1;//n1=intn2=(int)p2-(int)p1;//n2=printf("n1=%d,n2=%d\n",n1,return}指針數組,它是數組,數組的每個元素都是指針類型#include#includeint{int*p[3];inta=1;intb=2;intc=3;inti=0;p[0]=p[1]=p[2]=for(i=0;i<sizeof(p)/sizeof(p[0]);i++{printf("%d,",}return}C語言允許有多級指針存在,在實際的程序中一級指針最常用,其次是二級二級指針就是指向一個一級指針變量地址的指三級指針基本用不著,但考試會考intinta=int*p&a;*p=100;//*p就是intint**q=//*q就是//**q就是int***t=//*t就是//**t就是//***t就是#include#includevoidswap1(intx,int{inttmp;tmp=x;x=y;y=printf("x=%d,y=%d\n",x,}voidswap2(int*x,int{inttmp;tmp=*x=*y=}int{inta=3;in

溫馨提示

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

評論

0/150

提交評論