




已閱讀5頁,還剩26頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C+簡明提要C+數據類型C+運算符C+類C+語句C+庫函數C+常用的其它函數 羅偉 2001年月1日 C+數據類型數據類型 說 明數值范圍 示 例bool布爾類型值true或falsebool Myb1,Myb2; Myb1=true; Myb2=iText=fun1(25.8);數組初始化使用局部靜態變量定義只有在定義全局變量或局部靜態變量時才能對數組初始化static int a5=0,1,2,3,4;static int b23=00,01,02,10,11,12;static char str14=a,b,c,0;static char str1=abc;類型強制轉換傳統C中格式:int i=8; float x=(float)i;C+支持左格式int i=5; float f; f=float(i);char str1=3.1415; double d; d=double(str1);union無名聯合中定義的變量共享一內存unionint I; float f1;char str18;/則各種類型變量共享一內存;可直接存取I=20; f1=3.14;類型名 &定義引用(引用變量是被引用變量的別名,它們共占一個內存)(引用實際是一和隱式指針,引用變量時.可以不寫指針運算符*)改動其中一個變量值將影響另一個值int k; int &j=k;int *p1=&k; int &p2=k;k=30;Edit1-Text=j; /j值此時為30;Edit2-Text=*p1; /*p1值為30;Edit3-Text=p2; /p2值為30;String(系統類)定義字符串變量可直接加String str110,str210,str330;*str1=abc; *str2=def; *str3=*str1+*str2;Edit1-Text=*str3;數據類型 說 明數值范圍 示 例C+運算符表示符號說 明 示 例+ - * /加減乘除int Sum; int x=2; int y=3; Sum=x*(x+y);%求兩整數的模int I=11; k=3; int Mod; Mod=I%k; (Mod值為2)&邏輯與if (I10) & (kb)?a:b /max值為5,逗號運算符int max; max=(a=3*5,a*4),a+6 /自左向右,max值為66 = 指針類成員運算符class aprivate: x,y; public:fun1(); float z; /定義類a a b,*p; /定義b和*p 兩個對象.非指針類成員運算符b.z=5.2; /對象b為指針類型對象,用.p-fun1; /對象p為指針類型對象,用-:作用域運算符int pk; sub1()int pk=2; :pk=5; /加了:為改變全局變 量pk值,函數sub1()中的同名局部變量值保持原值2*指針變量運算符詳指針頁&取地址運算符詳指針頁.*-*類析構函數前綴class a; a:a().operation+()運算符重載(加法)運算符重載可用于實現類的對象直接相加減等;class com; /定義類comcom a,b totle; /定義類的三個對象a,b和totle;com operation+(com c,com d )com temp; temp.real=c.real+d.real; /real及imag temp.imag=c.imag+d.imag; / 為類中成員return temp ; 之后就可以使用 totle=a+b; 或total=opetator+(a,b);operation-()運算符重載(減法)operation*()運算符重載(乘法)operation/()運算符重載(除法)operationtext=obj1.pusub1(3,abc);Edit2-text=obj3-pusub1(3,abc); /對象不能引用類中的私有成員,只有類定義中的公有成員才能引用. 構造函數類名(參數表) 函數體.(主要是初始化類中的原始數據)/在類中構造函數可以系統自行生成(為空),構造函數必需同類名一樣.構造函數可以不帶參數.若類cir 的構造函數定義為:cir:cir(int a,int b;char *s)k=a; d=b;str=new charstrlen(s)+1; strcpy(str,s);int main()cir obj4(2,4.5,abc);. /對象obj4被定義的同時也初始化將其私有成員k和d值初始化為2和4.5析構函數類名(參數表) 函數體.(主要是當對象撤消時作一些處理工作,如變量所占內存等);cir:cir()delete str; /當對象撤消時,清除對象中的變量*str所占內存重載構造函數一個類中可以定義幾個所帶參數不同的構造函數,以便適應不同情況;class Aprivate:.public:A(); /不帶參數的類A(int); /帶一個整形參數的類A(float); /帶一個浮點參數的類A(int,double,char); /帶三個參數的類若定義對象: obj6(3.14); 則系統自動調用帶一個浮點參數的構造函數進行初始化,其它不起作用.拷貝構造函數類名(const 類名 &對象引用名)依據已存在的對象建立一個新對象,(將原對象各成員逐域拷貝到新對象中)系統自動有缺省的函數(對象拷貝 后成員完全相同)cir:cir(const cir &p)k=2*p.k; d=2*p.d;cir obj7(2,3,abc);cir obj8(obj7); /或cir obj8=obj7;/則對象obj8中中的私有成員k=4,d=6 其余同obj7對象成員完全一樣.對象數組類名 對象名數量cir obj93;float f3;for (I=0;Ipusub1(80,b);友元函數(一般函數作友元)友元函數可以訪問類中的私有成員在類外定義,不能加:符號class Aprivate: int x; float y;public:friend void fr1(A &); /聲名友元函 .; 數void fr1(A &P)x=2*x;友元成員(一個類的成員函數作為另一個類的友元)class Avoid fr1(B &);class B.friend void A:fri(B &); ;void A:fr1(B &P)countP.(類中的成員);派生類(可訪問基類中的保護成員)class 派生類名:派生方式 基類名派生類新增的數據成員及成員函數;/派生類具有基類的所有成員并新增了自定義新的成員派生方式:private 或publicpublic(公有派生)時,基類中的所有公有成員在派生類中也是公有的private(私有派生)時,基類中的所有公有成員只能成為派生類中的私有成員.無論何種派生,基類中的私有成員既不允許外部函數訪問,也不允許派生類中的成員函數訪問.class BASEprivate: int x;public: void setx(int n) x=n; ;class A:private BASEprivate : int y;public: void setxy(int n) setx(n);y=n; ;class B:public BASEprivate : int z;public :void setxyz(int n)setx(n);y=2*n;多重繼承class C:public BASE,private A;C+語句說明 格 式 示 例if 語句格式1:if (邏輯表達式) 語句格式2:if () 語句; else if () 語句; else if () 語句n; else 語句n+1;格式:if () if () 語句; else 語句; else 語句3;if (x=b) t=a;a=b;b=t;else a=b=0; printf(“error!”) switch語句switch (表達式)case 值: ;break; case 值: ;break; default: ;break; /表達式可以是數字,字符等類型;int a=3; int b=2; int c; m=a-b;switch (m)case 0: printf(“m=0”);break; case 1: printf(“m=1”);break; default : char str1=“China”;switch (str1)case “USA”; . case “China”; .while循環語句while (表達式)語句; continue; /結束本次循環 break; /退出本層循環 int I,Sum=0; I=1;while (I=100) Sum=Sum+I; I+;do while語句do 語句; continue; /結束本次循環 break; /退出本層循環 while (表達式);int I,Sum=0; I=1;do Sum=Sum+I; I+; while (I=100);for語句continuebreak語句for(表達式;表達式;表達式) 語句1; ; continue; /結束本次循環 break; /退出本層循環 for (k=1;k=100;k+) Sum=Sum+k;for (k=1,n=1,k+nText=x;#endif/若變量DEBUG1被定義了在文本框中顯示內存變量x的值,用于調試程序,不用時,只需刪除#define DEBUG1 1 語句C+庫函數(數學函數): #include 或#include 名 稱 說 明 示 例(返回值) 示 例 值acos(弧度數)求反余弦函數值1.0471975asin(弧度數)求反正弦函數值cont”asin(0.5)=”asin(0.5)edl;0.5235687atan(弧度數)求反余切函數值cont”atan(1)=”atan(1)n;0.7853981atan2(Y,X)同atan()contatan2(3.4,34)endl;0.7853981cos(弧度數)求余弦函數值contacos(1.0471975);0.5cosh(弧度數)求雙曲余弦函數值contcosh()ceil(浮點數)上舍入返回最小整數.double dou1=3.14; int k;k=ceil(dou1); contk;4exp(浮點數d)計算e的d次方冪contexp(1);2.71828abs(整數值)labs(整數值)fabs(整數值)求整型數的絕對值求長整型數的絕對值求浮點數的絕對值int k=-2; contabs(k);long l=-3663763; contlabs(l);double f=-3.7367836 ; contfabs(f);236637633.736836floor(浮點數)下舍入返回最小整數.double dou1=3.94; int k;k=floor(dou1); contk;3fmod(x,y)返回x/y的余數contfmod(7.6,2.5)endl;0.1frexp(val,eptr)double valint *eptr/該函數返回尾數x, 0.5x1把雙精度數val分解為尾數x和以2為底的指數,即val=x*2的n次冪,并把n存放在eptr指向的變量中。/返回數字部份xint exp; double x;double x=frexp(48,&exp);cont”尾數為”xendl;cont”指數為”expendl;尾數為:0.75指數為:6/即48=0.75* 26log(浮點數x)求ln(x)的值contlog(2.71828);1log10(浮點數x)求log10(x)的值contlog10(100);2modf(val,iptr)double valdouble *iptr/該函數返回val的小數部份。把雙精度數val分解為整數部份和小數部份,把整數部份存到iptr指向的單元。/返回val的小數部份double d;double f=modf(3.1415926,&d);cont”f=”fendl;cont”d=”dendl;0.14159263pow(x,y)double x;couble y;計算x的y次冪。contpow(7,2);49sin(x)計算sin(x)值.contsin(1); /x為弧度值0.841471sinh(x)計算x的雙曲正弦值.contsinh(1);sqrt(x)計算x的平方根值contsqrt(49); /x大于07tan(x)計算tan(x)值.conttan(0.785398); /相當于tan(PI/4)1tanh(X)計算x的雙曲正切值.conttanh(0.785398);C+庫函數(字符函數): #include 名 稱 說 明 示 例(返回值) 示 例 值isalnum(ch)int ch;檢查ch是否是字母或數字./是字母或數字返回1,否則返回0;contisalnum(+);0isalpha(ch)int ch;檢查ch是否是字母/是字母返回1,否則返回0contisalpha(6);相當于contisalpha(54);0iscntrl(ch)int ch;檢查ch是否是控制字符(ASCII碼在0至0x1F之間)/是返回1,否則返回0contiscntrl(46);1isdigit(ch)int ch;檢查ch 是否是數字(0至9)/是返回1,否則返回0contisdigit(48); /48的ASCII碼是481isgraph(ch)int ch;檢查ch是否是可打印字符(ASCII碼在0x20至0x7E之間)(不含空格)/是返回1,否則返回0contisgraph(7);0islower(ch)int ch;檢查ch是否是小寫字母。/是返回1,否則返回0contislower(A);0isprint(ch)int ch;檢查ch是否是可打印字符(ASCII碼在0x20至0x7E之間)(含空格)/是返回1,否則返回0contisgraph(32); /32為空格的ASCII碼1ispunct(ch)int ch;檢查ch是否是字標點字符。(不含空格)/是返回1,否則返回0contispunct();1isspace(ch)int ch;檢查ch是否是空格,跳格符,回車換行符/是返回1,否則返回0contisspace(13); /13為回車符的ASCII碼1isupper(ch)int ch;檢查ch是否是小寫字母。/是返回1,否則返回0contisupper(A);1isxdigit(ch)int ch;檢查ch是否是一個16進制數學字符(0至9,或A至F,或a至f )/是返回1,否則返回0contisdigit(A);0C+庫函數(字符串函數): #include 名 稱 說 明 示 例(返回值) 示 例 值strcat()/函數原型說明char*strcat(char *str1,char *str2)把str2字符串接到str1字符串后面。str1字符串最后面的0取消。 char *str3;static char str1=“STR1的字符內容_”;static char str1=“STR2的字符內容*”;str3=strcat(str1,str2);contstr3;STR1的字符內容_ STR2的字符內容*strchr()/函數原型說明char*strchr(char *str1,int ch)找出str指向的字符串中第一次出現字符ch的位置/返回指向該位置的指針,如找不到,返回空指針。static char str1=“ABCD1234”;int *p;p=strchr(str1,D);contp;D1234strcmp()/函數原型說明int strcmp(char *str1,char *str2)比較兩個字符串str1,str2/若str1str2返回正數static char str1=“密碼1234”;static char str2=“密碼1234”;if (strcmp(str1,str2)=0 cont”密碼正確”; /注意比較兩個字符串是否相等時不能用if (str1=str2)之類,但可以比較單字符.密碼正確strcpy()/函數原型說明int *strcpy(char *str1,char *str2)把str2指向的字符串拷貝到字符串str1中去.(連同str2后面的0一同拷貝過去)/返回str1; str1的長度應大于str2的長度。static char str110,str35;static char str2=“要拷貝的字符串.”;contstrcpy(str1,str2);contstrcpy(str1,”China”);contstrcpy(str3,str2,3); /或用strncpy(,)/注意不能用賦值語句將一個字符串常量或字符數組直接賦給一個字符數組。如:str1=str2; /是錯誤的。但可以用String 來定義字符串類型數據完成+操作;如String str1,str2; str1=str1+str2;要拷貝的字符串.China要拷貝strlen()/函數原型說明unsign int strlen(char *str1)統計字符串str1中字符的個數(不包括終止符0)int N;static char str1=“AB12羅偉”;contstrlen(str1);/中文字符占2個字節8strstr()/函數原型說明char *strstr(char *str1,char *str2)找出str2字符串在str1字符串中第一次出現的位置(不包括str2字符串終止符0)/返回該位置的指針,如找不到,返回空指針。static char str1=“ABCD1234:”;static char str2=“CD”;char *str3;str3=strstr(str1,str2);contstr3endl;/本函數對中文無效返回空指針。CD1234tolower(ch)int ch;將ch單字符轉換為小寫字符char ch=B;conttolower(ch);btoupper(ch)int ch;將ch單字符轉換為大寫字符.char ch=98;conttoupper(ch);Bstrlwr(*str1)將字符串str1中的大寫字符轉為小寫字符static char str1=AbCDef123contstrlwr(str1)abcdef123strupr(*str1)將字符串str1中的小寫字符轉為大寫字符static char str1=AbCDef123contstrlwr(str1)ABCDEF123C庫函數(輸入輸出函數)(C+也可用): #include 名 稱 說 明 示 例(返回值) 示 例 值 String 字符串 變量名定義字任串變量名,以便完成諸如字符串的直接相加運算,而不必用strcpy()函數。 C庫函數(輸入輸出函數)(C+也可用): #include 名 稱 說 明 示 例(返回值) 示 例 值abort()異常終止一個程序if (error) abort(); /比exit(0);更徹底clearerr(fp)fclose(fp)關閉文件流fpFILE *fp;fp=fopen(“c:readme.txt”,”rw+”); fclose(fp);feof(FILE *fp )檢查文件是否結束FILE *stream;stream = fopen(DUMMY.FIL, r);fgetc(stream); if (feof(stream) printf(文件指針在尾部n); fclose(stream);fopen(fname,mode)/函數原型FILE *fopen(const char *fname,const char *mode)fname:文件名n:打開方式/FILE *fp;/fp=fopen(“c:win98 win.ini”,”rb”;/打開一個文件,并返回一個與文件流相關聯的指針.參數mode用以下值:“r” 打開文本文件 用于只讀“w” 創建新的文件用于只寫(或文件已存在則覆蓋)“a” 打開文本文件用于添加內容到文件尾部“rb” 打開二進制文件用于只讀FILE *fp; char fspec81;printf (“請輸入一個文件名:n”);gets(fspec); fp=fopen(fspec,”r”);if (fp=NULL) printr(“不能打開文件 %Sn”,fspec);exit(1); /以fp來進行文件操作。“wb” 創建新的二進制文件用于只寫“ab” 找開二進制文件用于添加“r+” 打開已存在的文本文件用于更新 (讀或寫)“w+” 創建新的文本文件用于更新“a+” 打開文本文件用于更新“rb+” 打開二進制文件用于更新“wb+” 創建新的二進制文件用于更新“ab+” 打開二進制文件用于更新當文件用于更新(讀或寫)時,若文件已存在,則文件被打開,若文件不存在,則創建該新文件.freopet(fname,mode,fp)同fopen()函數,但它首先關閉文件流fptmpfile()以二進制讀寫方式打開一個臨時文件,當文件被關閉或程序終止時,文件被自動刪除。#include #include int main(void) FILE *tempfp; tempfp = tmpfile(); if (tempfp) printf(臨時文件被創建n); else printf(不能創建臨時文件n); exit(1); return 0;fflush(fp)刷新輸出流fp并立即將輸出發送到物理設備。調用成功返回0;發生錯誤時返回EOFfwrite(msg, strlen(msg), 1, stream);clrscr();printf(按任一鍵立即顯示ABC.TXT文件:); getch(); flush(stream);fprintf(fp,fmt,)將格式串輸出到流fp返回所輸出的字節數.#include int main(void) FILE *stream; int i = 100; char c = C; float f = 1.234; stream = fopen(ABC.TXT, w+); fprintf(stream, %d %c %f, i, c, f); fclose(stream); return 0;/文本文件ABC.TXT內容100 C 1.234fputc()/函數原型int fputc(char ch,FILE *fp)將字符ch輸出fp指向的文件中.返回所輸出的字節數,發生錯誤返回EOFint main(void) char msg = Hello world; int i = 0; while (msgi) fputc(msgi, stdout); i+; /stdout為標準輸出設備 return 0; /或文件名fwrite(p,size,n,fp)/函數原型fwrite(char *p,unsigned size,unsigned n,FILE *fp)把p所指向的n*size個字節輸出到fp所指向的文件中struct mystruct /定義結構mystruct int i; char ch;int main(void) FILE *stream; struct mystruct s; /定義結構變量s if (stream = fopen(TEST.$, wb) = NULL) fprintf(stderr, 不能打開文件.n); return 1; s.i = 0; s.ch = A; /寫結構到文件TEST.$中 fwrite(&s, sizeof(s), 1, stream); fclose(stream); return 0; putc(ch,fp)把一個字符ch輸出到fp所指的文件中fgetc(fp)從fp指向的文件中取得下一個字符int main(void) FILE *stream; char string = 這是一個測試; char ch; stream = fopen(DUMMY.FIL, w+); fwrite(string, strlen(string), 1, stream); /* 搜尋文件的開頭 */ fseek(stream, 0, SEEK_SET); do /* 從這個文件中讀一個字符*/ ch = fgetc(stream); /*顯示這個字符 */ putch(ch); while (ch != EOF); fclose(stream); return 0;fgets()/函數原型char fgets(char *s,int n,FILE *fp)從fp指向的文件讀取一個長度為(n-1)的字符串,存入起始地址為s的空間.int main(void) FILE *stream; char string = 這是一個測試; char msg20; stream = fopen(DUMMY.FIL, w+); fwrite(string, strlen(string), 1, stream); fseek(stream, 0, SEEK_SET); /* 從文件中讀一個字符串*/ fgets(msg, strlen(string)+1, stream); printf(%s, msg); fclose(stream); return 0;fread()/函數原型int fread(char *p,unsigned size,unsigned n,FILE *fp)將fp所指定的文件中讀取長度為size的n個數據項,存到p所指向的內存區.int main(void) FILE *stream; char msg = 這是一個測試; char p20; if (stream = fopen(DUMMY.FIL, w+) = NULL) fprintf(stderr, 不能打開文件 .n); return 1; /* 寫一些數據到文件 */ fwrite(msg, strlen(msg)+1, 1, stream); fseek(stream, SEEK_SET, 0); fread(p, strlen(msg)+1, 1, stream); printf(%sn, buf); fclose(stream); return 0; fscanf()/函數原型int fscanf(FILE *fp,char fmt,args )向fp指定的文件中按fmt格式將輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 表彰大會活動報告
- 七年級語文下冊 第二單元 8 少年愛因斯坦教學設計 語文版
- 初中英語人教新目標 (Go for it) 版九年級全冊Section A第4課時教學設計
- 初中信息技術大連版八年級下冊第一單元 探秘動畫世界第十課 交互動畫之魂-按鈕元件的應用教學設計
- 初中體育華東師大版七年級全一冊邁向成熟的蛻變-青春期特點、常見問題和預防教案
- 碧桂園項目總培訓
- 九年級數學下冊 第二十九章 投影與視圖29.2 三視圖第2課時 由三視圖確定幾何體教學設計 (新版)新人教版
- 房地產精裝裝修培訓講師
- 抖音基礎教學培訓
- 七年級語文下冊 第三單元 10 阿長與《山海經》教學設計 新人教版
- 2025年安徽九華山旅游發展股份有限公司招聘66人筆試參考題庫附帶答案詳解
- 生理學(全套課件)
- 路基石方破碎開挖專項施工方案
- 二年級美術上冊課件 《3.我的手印畫》 贛美版 (共18張PPT)
- Q∕SY 126-2014 油田水處理用緩蝕阻垢劑技術規范
- 環保管理制度(適用于軟件企業)
- 全國青少年機器人技術等價考試三級全套課件
- 適老化改造培訓課件(PPT 31頁)
- 光伏并網逆變器調試報告正式版
- 市政道路大中修工程管理指引
- SF_T 0097-2021 醫療損害司法鑒定指南_(高清版)
評論
0/150
提交評論