




已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2講 數(shù)據(jù)輸入/輸出的概念,1.熟練掌握常用輸入輸出函數(shù):scanf、printf、getchar、putchar、gets、puts等 2. 熟練掌握文件的打開和關閉-fopen()和fclose() 3. 熟練掌握文件的基本讀寫操作 常用函數(shù):fscanf、fprintf、fgetc、fputc、fgets、fputs等 4. 熟練掌握文件的狀態(tài)檢測-feof()函數(shù),一、數(shù)據(jù)輸入/輸出的概念,內(nèi)存,RAM,從鍵盤將數(shù)據(jù)輸入,從數(shù)據(jù)文件讀入,將數(shù)據(jù)輸出到屏幕,將數(shù)據(jù)輸出到文件,說明: (1) 數(shù)據(jù)輸入/輸出是相對計算機內(nèi)存 (2) 數(shù)據(jù)輸入/輸出使用標準庫函數(shù)完成 (3) 數(shù)據(jù)輸入/輸出標準庫函數(shù)的原型聲明在stdio.h頭文件中,getchar(),getch(),gets() scanf(),fgetc(), fgets() fscanf(), fread(),putchar(), put() printf(),fputc(), fputs() fprintf(), fwrite(),putchar 函數(shù)是字符輸出函數(shù), 其功能是在顯示器上輸出單個字符。 其一般形式為: putchar(字符變量); 例如: putchar(A); 輸出大寫字母A putchar(x); 輸出字符變量x的值 putchar(n); 換行 說明:使用本函數(shù)前必須要用文件包含命令: #include “stdio.h“,1、字符輸出函數(shù)putchar(),二、字符(串)鍵盤輸入/屏幕輸出,字符串輸出函數(shù) puts使用格式:puts (st) 其中:st可以是己定義的字符數(shù)組名,也可以是指向字符變量的指針變量。 功能:把字符數(shù)組中或指針變量所指向的字符串輸出到顯示器。輸出從數(shù)組的第一個字符或指針所指向的字符到字符串(以0結尾)之間的所有字符。例: char c6=“China“; puts(c); puts不需要格式控制符,輸出完后且自動換行,等價于:printf(“%sn“,c); char c=“abc0sjd3” ;puts(c); 輸出結果為: abc,2. 字符串輸出函數(shù)puts(),二、字符(串)鍵盤輸入/屏幕輸出,函數(shù)getchar函數(shù)的功能是從鍵盤上輸入一個字符。 其一般形式為:字符變量=getchar(); 如: #include void main() char c; printf(“input a charactern“); c=getchar(); putchar(c); 使用getchar函數(shù)還應注意幾個問題:,3、字符輸入函數(shù)getchar( ),二、字符(串)鍵盤輸入/屏幕輸出,getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。 輸入多余的字符存入到鍵盤的緩沖區(qū),若有下一個getchar函數(shù)語句,直接從鍵盤的緩沖區(qū)讀取。 #include main() char c1,c2; c1=getchar(); c2= getchar(); putchar(c1);putchar(c2); 當程序運行后:輸入ABCDEF ,輸出為:,說明:,二、字符(串)鍵盤輸入/屏幕輸出,2. getch() 它與getchar()函數(shù)的區(qū)別是輸入不需要回車鍵結束,即輸入一個字符就自動結束輸入。它們的調(diào)用格式為: getch();,二、字符(串)鍵盤輸入/屏幕輸出,該函數(shù)不將讀入的字符回顯在顯示屏幕上,利用回顯和不回顯的特點,它經(jīng)常用于交互輸入的過程中完成暫停等。 在調(diào)試程序時,也經(jīng)??稍趍ain函數(shù)最后增加一個getch();以直接觀察程序的運行結果而不必每次都使用Alt+F5切換窗口,例如: #include void main() float x; printf(“Enter The Number x:“); scanf(“%f“, /*等待輸入任一鍵*/ ,4. 輸入字符串函數(shù)gets()函數(shù):,字符串輸入函數(shù)gets 格式: gets (st) 功能:從標準輸入設備鍵盤上輸入一個字符串。本函數(shù)得到一個函數(shù)值,即為該字符數(shù)組的首地址。,說明:gets函數(shù)并不以空格作為字符串輸入結束的標志,而只以回車作為輸入結束。這是與scanf(“%s”,)函數(shù)不同的。,二、字符(串)鍵盤輸入/屏幕輸出,例 字符串的輸入示例 #include “stdio.h“ void main() char st120,st220; printf(“input string:n“); gets(st1); scanf(“%s“,st2); puts(st1); puts(st2); 程序運行結果是:,二、字符(串)鍵盤輸入/屏幕輸出,一般形式為: printf(“格式控制字符串”,輸出表列),例如:printf(“%3dn“,x),%格式說明起始符,3輸出數(shù)據(jù)的寬度,d輸出數(shù)據(jù)的類型,x輸出項,格式輸出函數(shù)printf(),三、格式輸入/輸出,可見,雙引號中的字符除了格式說明的字符外,其它非格式說明的普通字符按原樣輸出。,例如:,格式輸出函數(shù)printf(),說明:格式字符串的一般形式為: % 標志輸出最小寬度精度長度類型字符 其中方括號中的項為可選項。 1. 類型字符 用以表示輸出數(shù)據(jù)的類型: C語言中輸出不同數(shù)據(jù),使用不同的類型字符, 例如:輸出整型數(shù)據(jù),使用的類型符 d,i (小寫),格式輸出函數(shù)printf(),表示輸出類型的格式字符及 意義 d, i 以十進制形式輸出帶符號整數(shù)(正數(shù)不輸出符號) o 以八進制形式輸出無符號整數(shù)(不輸出前綴O) x, X 以十六進制形式輸出無符號整數(shù)(不輸出前綴OX) u 以十進制形式輸出無符號整數(shù) f 以小數(shù)形式輸出單、雙精度實數(shù) e ,E 以指數(shù)形式輸出單、雙精度實數(shù) g ,G 以%f%e中較短的輸出寬度輸出單、雙精度實數(shù) c 輸出單個字符 s 輸出字符串,格式輸出函數(shù)printf( ),2.標志 -、+、#、空格四種, - 結果左對齊,右邊填空格 + 輸出符號(正號或負號)空格輸出值為正時冠以空 格,為負時冠以負號 # 對c,s,d,u類無影響;對o類, 在輸出時加前綴o;對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數(shù)時才給出小數(shù)點 3.輸出最小寬度 用十進制整數(shù)來表示輸出的最少位數(shù)。 若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出 ,若實際位數(shù)少于定義的寬度則補以空格或0。,格式輸出函數(shù)printf(),4. 精度 精度格式符以“.”開頭,后跟十進制整數(shù)。 意義是: 如果輸出數(shù)字,則表示小數(shù)的位數(shù); 如果輸出的是字符,則表示輸出字符的個數(shù); 若實際位數(shù)大于精度數(shù),則截去超過的部分。 5. 長度 長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。,格式輸出函數(shù)printf(),注意: 1. 格式字符串是以%開頭的字符串,可由格式字符串和非格式字符串兩種組成,其中格式控制字符串用于指定輸出格式。 2. 在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。 3. 非格式字符串在輸出時原樣照印,在顯示中起提示作用。 4. 輸出表列中給出了各個輸出項, 要求格式字符串和各輸出項在數(shù)量和類型上應該一一對應。,格式輸出函數(shù)printf(),1. scanf()函數(shù)的一般形式 scanf(“格式控制字符串”,地址列表); 其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串, 也就是不能顯示提示字符串。 地址列表,用來接受數(shù)據(jù)各變量的地址。 變量的地址表示如下: & 變量名,例如: &a,&b分別表示變量a和變量b 的地址,格式輸入函數(shù)scanf(),例: main() int a,b,c; printf(“input a,b,cn“); scanf(“%d%d%d“, ,格式輸入函數(shù)scanf(),2. 格式字符串 格式字符串的一般形式為: %*輸入數(shù)據(jù)寬度長度類型字符 其中有方括號的項為任選項。各項的意義如下: (1) 類型字符 表示輸入數(shù)據(jù)的類型,其格式符和意義如下所示: d 輸入十進制整數(shù) o 輸入八進制整數(shù) x 輸入十六進制整數(shù) u 輸入無符號十進制整數(shù) f或e 輸入實型數(shù)(用小數(shù)形式或指數(shù)形式) c 輸入單個字符 s 輸入字符串,格式輸入函數(shù)scanf(),2. “*”符 用以表示該輸入項讀入后不賦予相應的變量,跳過該輸入值。 如 scanf(“%d %*d %d“, 輸入:12345678將把1234賦予a,而把5678賦予b。,格式輸入函數(shù)scanf(),4.長度 長度格式符為l和h,l表示輸入長整型數(shù)據(jù)(如%ld) 和雙精度浮點數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)。 例如: main() int a; long b; double x; scanf(“%d%ld%lf”, ,格式輸入函數(shù)scanf(),3. 使用scanf函數(shù)還必須注意以下幾點: (1) scanf函數(shù)中沒有精度控制 。 如:scanf(“%5.2f”, 輸入: 12 10 或 12 10,格式輸入函數(shù)scanf(),(4)在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有 輸入的字符均為有效字符。 例如: scanf(“%c%c%c“, 輸入時各數(shù)據(jù)之間可加空格。,格式輸入函數(shù)scanf(),(5)如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。 例如: scanf(“%d,%d,%d“, 則輸入應為: a=5,b=6,c=7,格式輸入函數(shù)scanf(),(6)如輸入的數(shù)據(jù)與輸出的類型不一致時,雖然編譯能夠通過,但結果可能不正確。 void main() int a; printf(“input a numbern“); scanf(“%d“, ,由于輸入數(shù)據(jù)類型為整型, 而輸出語句的格式串中說明為長整型,因此輸出結果和輸入數(shù)據(jù)不符。,格式輸入函數(shù)scanf(),格式輸入/輸出-例題,例1:為float類型變量a、b輸入數(shù)據(jù)1.2和2.3,下列哪一組是正確的( )。 A、scanf(%f%f, 輸入1.22.3,例2: 編一程序輸入一個正整數(shù),輸出它的16進制數(shù),main() int n; scanf(“%d”, ,所謂文件 存儲在外部介質(zhì)上的數(shù)據(jù)的集合,例如:存儲在磁盤上。 C語言把文件看作是一個字符(字節(jié))的序列,即由一個一個字符(字節(jié))的數(shù)據(jù)順序組成。 C語言中的文件存儲方式分為 :ASCII文件 和 二進制文件 ASCII文件(文本文件) : 每個字節(jié)存放一個ASCII代碼,代表一個字符 二進制文件 : 把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到 磁盤上存放。,四、通過文件輸入/輸出,ASCII文件便于字符處理和輸出,二進制文件節(jié)省存儲空間。,其中: 0 -ASCII碼為 48(對應編碼為110000) 1 -ASCII碼為 49 (對應編碼為110001),說明: 1. 一個文件是一個字符流 或 二進制流。 2. C 語言中對文件的存取是以字符(字節(jié))為單位的, 輸入輸出數(shù)據(jù)流僅受程序控制,不受物理符號控制(如:回車,換行符), 稱這樣的文件為 流文件。,10000的二進制形式,四、通過文件輸入/輸出,C 語言處理文件通常使用緩沖文件系統(tǒng) 緩沖文件系統(tǒng) 系統(tǒng)自動地在內(nèi)存中為每個正在使用的文件名開辟一個 緩沖區(qū)。用于處理文本文件(字符流)。 程序數(shù)據(jù)區(qū) (輸入、輸出)文件緩沖區(qū) 磁盤文件,標準的 C 語言只采用緩沖文件系統(tǒng) :既可以處理文本文件,也可以處理 二進制文件。 C語言中對文件的讀寫都是用庫函數(shù)來實現(xiàn)。,四、通過文件輸入/輸出,每個被使用的文件都在內(nèi)存中開辟一個區(qū),用來存放文件的有關信息(如:文件的名字 、文件狀態(tài)與文件當前位置等)。這些信息保存在一個 結構體類型的變量中。 結構體類型是由系統(tǒng)定義的,名為 FILE 。 Turbo C 在 stdio.h 文件中有以下的文件類型聲明: typedef struct char level ; /* 緩沖區(qū)“滿“或“空“ 的程度 */ unsigned flags ; /* 文件狀態(tài)標志 */ char fd ; /* 文件描述符(文件號) */ unsigned char hold ; /* 如無緩沖區(qū)不讀取字符 */ char bsize ; /* 緩沖區(qū)大小 */ unsigned char *buffer ; /* 數(shù)據(jù)緩沖區(qū)的位置 */ unsigned char *curp ; /* 指針,下一個字符的位置 */ unsigned istemp ; /* 臨時文件,指示器 */ char token ; /* 用于有效性檢查 */ FILE ;,文件類型指針,有了FILE 類型之后,就可以用它來 定義FILE類型的變量。例如: FILE *fp; 表示定義了一個指向FILE 類型結構體的指針變量 fp,可以使 fp指向某個文件的結構體變量,從而通過該結構體變量中的文件信息來訪問該文件。也就是說,通過文件指針變量能夠找到與它相關的文件。 如果有n 個文件,一般應該設n 個指向FILE 類型結構體的指針變量,使它們分別指向n 個文件,以實現(xiàn)對文件的訪問,文件類型指針,例如: fp=fopen(“a1“,“r“); 說明: a1 為文件名 , 是字符串。稱為外部文件名。 使用方式為: 只讀方式。 fopen 函數(shù)帶回指向文件a1 的指針,并賦給 fp,使得 fp指向a1。 fp 稱為內(nèi)部文件名。,文件的打開與關閉,1. 文件的打開( fopen 函數(shù) ) C語言中用 fopen( ) 函數(shù)來實現(xiàn)打開文件, fopen 函數(shù)的調(diào)用方式為 : FILE *fp; fp = fopen(文件名,使用文件方式) ;,通過 fopen( ) 使內(nèi)部文件名 和 外部文件名聯(lián)系上,即fp 指向 a1文件。 在打開一個文件時,通知給編譯系統(tǒng)有以下3個信息: 需要打開(即訪問)的文件名。 使用文件的方式。 讓哪一個指針變量指向被打開的文件。,如果 fopen 函數(shù)打開文件失敗,則返回一個空指針值 NULL。,文件的打開與關閉,為避免因上述原因的出錯,造成對文件讀寫操作出錯,常用以下的方法來打開一個文件,以確保對文件讀寫操作的正確性: if(fp=fopen(“c:myfile.dat“,“w+“)=NULL) printf(“Cannot open file the file exit!“); exit(0); /* 退出程序 */ /* 此處編寫打開文件后,對文件讀寫的代碼 */,文件的打開與關閉,注意:指定文件路徑要使用“盤符:文件夾名文件名”形式,文件的打開與關閉,2. 文件的關閉(fclose 函數(shù) ) 關閉文件 就是使文件指針不再指向該文件,即使文件指針變量與文件“脫鉤”。 C 語言中用 fclose( ) 函數(shù)來關閉文件, fclose 函數(shù)的調(diào)用形式是 : fclose (文件指針) ; 例如 : fclose(fp) ; 關閉 fp 所指向的文件 如果fclose 函數(shù)關閉文件成功,則返回零值;如果fclose 函數(shù)關閉文件失敗,則返回非零值 EOF( -1),EOF 為文件結束符。,文件的打開與關閉,在語言中提供了多種文件讀寫的函數(shù): 字符讀寫函數(shù): fgetc和fputc 字符串讀寫函數(shù):fgets和fputs 格式化讀寫函數(shù):fscanf和fprinf 數(shù)據(jù)塊讀寫函數(shù):freed和fwrite,文件的讀寫,1. fputc 函數(shù) 把一個字符寫到 磁盤文件上去, 調(diào)用方式為 : fputc(ch , fp); 功能:其作用是 將字符(ch 的值)輸出到 fp 所指向的文件中去。如果輸出成功,則返回 ch字符;否則,返回 EOF (即 -1)。,文件的寫操作,例:輸入5行字符,將其寫入到C盤根目錄的myfile.txt文件中,函數(shù)fprintf()、fputs()、fputc()和fwrite()均為文件的寫操作函數(shù),它們在stdio.h頭文件中的原型定義形式如下: int fputc(int ch,F(xiàn)ILE *fp); int fputs(char *string,F(xiàn)ILE *fp); int fprintf(FILE *fp,char *format,); int fwrite(void *buf,int size,int count,F(xiàn)ILE *fp);,#include void main() FILE *fp; char ch80,*p=ch; int n; fp=fopen(“c:myfile.txt“,“w“); /* 打開文件*/ printf(“input a string:n“); for(n=1; n=5; n+) gets(p); /* 輸入一行字符 */ while (*p!=0) /* 逐個字符寫入文件 */ fputc(*p,fp); p+; fputc(n,fp); /* 寫入換行符 */ fclose(fp); ,文件的寫操作,2字符串寫函數(shù)fputs() fputs函數(shù)是向指定的文件輸出一個字符,其使用格式: fputs(str, fp); 其中,fp為定義的文件指針變量;str可以是指向字符串的指針變量、字符數(shù)組名或字符串常量。例如: fputs(“China“,fp); 操作成功,函數(shù)返回0;寫操作失敗,返回非0。,例:輸入5行字符,將其寫入到C盤根目錄的myfile.txt文件中,文件的寫操作,#include void main() FILE *fp; char ch80,*p=ch; int n; fp=fopen(“c:myfile.txt“,“w“); /* 打開文件*/ printf(“input a string:n“); for(n=1;n=5;n+) gets(p); /* 輸入一行字符 */ fputs(p,fp); /* 寫入該行字符 */ fputc(n,fp); /* 寫入換行符 */ fclose(fp); ,例:輸入5行字符,將其寫入到C盤根目錄的myfile.txt文件中,文件的寫操作,3格式化寫函數(shù)fprintf() 把格式化的數(shù)據(jù)寫到文件中,其中格式化的規(guī)定與printf()函數(shù)相同,所不同的只是fprintf()函數(shù)是向文件中寫入,而printf()是向屏幕輸出。如: fprintf(fp,“s=%f,i=%dn“,s,i); 其返回值為實際寫入文件中的字符個數(shù)(字節(jié)數(shù));如果寫錯誤,則返回一個負數(shù)。,例題:計算數(shù)列1,-1/3!,1/5!,-1/7!,1/9!,.的和至某項的絕對值小于1e-5時為止(該項不累加),將求和的結果以格式“%.6“寫到考生目錄下新建文件design.dat。,文件的寫操作,#include #include void main() FILE *p; float s=1,t=1,i=3; / / / / / / / / ,例題:計算數(shù)列1-1/3!+1/5!-1/7!+1/9!,.的和至某項的絕對值小于1e-5時為止(該項不累加),將求和的結果以格式“%.6“寫到考生目錄下新建文件design.dat。,文件的寫操作,p=fopen(“design.dat“,“w“); while(fabs(t)1e-5) t= -1/(i-1)*i)*t; s=s+t; i+=2; fprintf(p,“%.6f“,s); fclose(p);,文件的讀操作,標準C提供的文件讀操作函數(shù)有fgetc()、fgets()、fscanf() 和fread(),它們在stdio.h頭文件中的原型定義形式如下: int fgetc(FILE *fp); char * fgets(char *string,int n,F(xiàn)ILE *fp); int fscanf(FILE *fp,char *format,); int fread(void *buf,int size,int count,F(xiàn)ILE *fp);,說明: (1)對于讀操作,在文件內(nèi)部有一個位置指針,用來指向文件的當前讀的字節(jié)。在文件打開時,該指針總是指向文件的第一個字節(jié)。當讀取一個數(shù)據(jù)(字符、一字符串,一個整數(shù)或一塊數(shù)據(jù)),該位置指針將自動向后移動到下一個數(shù)據(jù)位置。,文件的讀操作,(2)對于文本文件,由于它的結束標記是EOF(即-1)因此通常判斷文本文件是否寫完通過讀取的字符是不是結束標志來判斷。 (3)對于二進制文件,由于沒有EOF的結束標志,只能使用系統(tǒng)提供的feof()函數(shù)來判斷,feof()的使用格式是: feof(fp); 其中,fp是文件指針變量,如果文件讀取結束則返回非0值,沒結束返回0。所以讀寫控制通過下面的形式來控制 while( !feof(fp) /* 此處寫入讀操作語句 */ (4)文本文件也可使用feof()函數(shù)按上面來的形式來判斷是否讀取結束。,1. fgetc 函數(shù) 從指定的文件讀入一個字符,該文件必須是以“讀”或“讀寫”方式打開。 調(diào)用方式為 : ch = fgetc(fp); fgetc 函數(shù)從 fp 所指定文件的當前位置讀入一個字符賦給ch;同時,文件的當前位置加 1,如果讀入時遇到文件結束符,則返回EOF(即 -1)。,EOF 是在 stdio.h 中 定義的符號常量,值為 -1。由于字符的ASCII 碼不可能出現(xiàn) -1,應此定義 EOF 為-1 是合適的。 EOF 不是可輸出字符,因此不能在屏幕上顯示。用于表示文件結束,只適用于文本文件。,文件的讀操作,while( ! feof(fp) c=fgetc(fp) ; putchar ( c ) ; ,對于 二進制文件,某個字節(jié)中的數(shù)有可能是 -1,因此難于用 EOF 判斷文件是否結束,這時可以用函數(shù) feof( fp) 來測試 fp 所指的文件當前是否 “文件結束”,是則返回 1,不是則返回 0 。 例如,feof( ) 也適用于文本文件,文件的讀操作,2. fgets ( )函數(shù) 從指定的文件讀入一個字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 5歲小孩常見病與護理
- 投行法律培訓
- 端午邀約活動課件
- 護理新生培訓
- 早產(chǎn)的病因及護理
- 名著導讀艾青詩選
- 礦業(yè)采礦培訓課件
- 新時代教育評價改革總體方案
- 腫瘤并發(fā)癥感染
- 銀行風險案例培訓
- 公司員工公積金管理制度
- 門窗店員工管理制度
- 護士職業(yè)精神課件
- 2020年沈陽職業(yè)院校技能大賽中職學生組職業(yè)英語(服務類)樣題
- 生物學基本知識
- 農(nóng)業(yè)科技產(chǎn)業(yè)園發(fā)展戰(zhàn)略規(guī)劃與實施路徑
- 2025年養(yǎng)老護理員(中級)考試試卷:實操技能解析
- 體育服務綜合體建設項目可行性分析 (一)
- 廣東深圳2025年公開招聘農(nóng)村黨務(村務)工作者筆試題帶答案分析
- 2025-2030中國滅草松原藥行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 農(nóng)村自建房業(yè)主培訓課件
評論
0/150
提交評論