




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 寫一個(gè)將整數(shù)轉(zhuǎn)換成字符串的函數(shù)itoa解析:整數(shù)轉(zhuǎn)化成字符串,可以采用加'0',然后再逆序,整數(shù)加'0'就會(huì)隱形轉(zhuǎn)化為char類型的數(shù)。#include <iostream>#include <stdio.h>using namespace std;int main(void)int num = 12345, j=0, i=0;char temp7, str7;while(num)tempi = num%10 + '0'i+;num = num/10;tempi = 0;printf("temp = %sn
2、",temp);i=i-1;while(i>=0)strj = tempi;j+;i-;strj=0;printf("string = %sn", str);return 0;2. 編程實(shí)現(xiàn)字符串?dāng)?shù)轉(zhuǎn)化成整數(shù)的方法。解析:可以采用減 '0' 再乘10累加的方法,字符串減 '0' 就會(huì)隱性轉(zhuǎn)換為int類型的數(shù)#include<iostream.h>#include<stdio.h>int main(void)int num=12345, j=0, i=0, sum=0;char temp7='1&
3、#39;, '2', '3', '4', '5', '0', str7;while (tempi)sum=sum*10+(tempi-'0');i+;printf("sum=%dn", sum)return 0;3. 字符串拷貝函數(shù)strcpy#include <stdio.h> char * strcpy(char * strDest, const char * strSrc) / 實(shí)現(xiàn)strSrc到strDest的復(fù)制if (strDest = NULL) | (
4、strSrc = NULL) /判斷參數(shù)strDest和strSrc的有效性return NULL; char *strDestCopy = strDest; /保存目標(biāo)字符串的首地址while (*strDest+ = *strSrc+)!='0'); /把strSrc字符串的內(nèi)容復(fù)制到strDest下return strDestCopy;strcpy函數(shù)返回char *類型的原因是為了能使用鏈?zhǔn)奖磉_(dá)式。拷貝函數(shù)的一個(gè)完整的標(biāo)準(zhǔn)寫法如下:#include<stdio.h>#include<malloc.h>#include<assert.h>
5、;#include<string.h>void stringcpy(char *strdest, const char *strsrc)assert(strdest!=NULL && strsrc!=NULL);while(*strsrc!='0')*strdest+=*strsrc+;*strdest='0'int main(void)char *f;char *t;f=(char *)malloc(15);t=(char *)malloc(15);stringcpy(f, "asdfghjkl");string
6、cpy(t, f);printf("%sn", f);printf("%sn", t);return 0;4. strcpy和memcpy主要有以下3方面的區(qū)別: 1) 復(fù)制的內(nèi)容不同。strcpy只能復(fù)制字符串,而memcpy可以復(fù)制任意內(nèi)容,例如字符數(shù)組、整型、結(jié)構(gòu)體、類等; 2) 復(fù)制的方法不同。strcpy不需要指定長(zhǎng)度,它遇到字符串結(jié)束符"0"便結(jié)束。memcpy則是根據(jù)其第3個(gè)參數(shù)決定復(fù)制的長(zhǎng)度。 3) 用途不同。通常在復(fù)制字符串時(shí)用strcpy,而需要復(fù)制其他類型數(shù)據(jù)時(shí)則一般用memcpy。5. malloc函數(shù) 函數(shù)原
7、型:void *malloc (unsigned int size) 作用:在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配一個(gè)長(zhǎng)度為size的連續(xù)空間,其參數(shù)為一個(gè)無(wú)符號(hào)整型數(shù),返回值是一個(gè)指向所分配的連續(xù)存儲(chǔ)域的起始地址的指針。 注意:若函數(shù)未能成功分配存儲(chǔ)空間(如內(nèi)存不足)就會(huì)返回一個(gè)NULL指針,所以在調(diào)用該函數(shù)時(shí)應(yīng)檢測(cè)返回值是否為NULL并執(zhí)行相應(yīng)的操作。例如: if (array (int *) malloc(10*sizeof(int)=NULL)printf("不能成功分配存儲(chǔ)空間。");exit(1);6. "回文數(shù)"是一種數(shù)字。如:98789, 這個(gè)數(shù)字正讀
8、是98789,倒讀也是98789,正讀倒讀一樣,所以這個(gè)數(shù)字就是回文數(shù)。思路1:建立數(shù)組,按位存儲(chǔ)。比較首位和末位是否相同。如不同,則不是回文數(shù)。相同則繼續(xù)比較,首位遞增,末位遞減,直到首位不再小于末位。思路2:求反轉(zhuǎn)后的數(shù)是否與原先相同。7. 有100個(gè)整數(shù),其中有負(fù)數(shù),找出連續(xù)三個(gè)數(shù)之和最大的部分。#include<iostream.h>void main()int a10=-3, 4, 6, 8, -9, 7, 10, -6, 20, -9;int i, index, sum=a0+a1+a2;for (i=1; i<8; i+)if (sum<ai+ai+1+a
9、i+2)sum=ai+ai+1+ai+2;index=i;cout<<aindex<<","<<aindex+1<<","<<aindex+2<<endl;8. 關(guān)于sizeofcout<<sizeof(1=2)<<endl; / = 操作符返回bool類型,相當(dāng)于 cout<<sizeof(bool)<<endl; 1)union的sizeofunion udouble a;int b;union u2char a13;int b;u
10、nion u3char a13;char b;cout<<sizeof(u)<<endl; / 8cout<<sizeof(u2)<<endl; / 16cout<<sizeof(u3)<<endl; / 13 union的大小取決于它所有的成員中占用空間最大的一個(gè)成員的大小。所以對(duì)于u來(lái)說(shuō),大小就是最大的double類型成員a了,所以sizeof(u)=sizeof(double)=8。但是對(duì)于u2和u3,最大的空間都是char13類型的數(shù)組,為什么u3的大小是13,而u2是16呢?關(guān)鍵在于u2中的成員int b。由于i
11、nt類型成員的存在,使u2的對(duì)齊方式變成4,也就是說(shuō),u2的大小必須在4的對(duì)界上,所以占用的空間變成了16(最接近13的對(duì)界)。結(jié)論:復(fù)合數(shù)據(jù)類型,如union,struct,class的對(duì)齊方式為成員中對(duì)齊方式最大的成員的對(duì)齊方式。2)struct和對(duì)齊struct s1char a;double b;int c;char d;struct s2char a;char b;int c;double d;cout<<sizeof(s1)<<endl; / 24cout<<sizeof(s2)<<endl; / 16 對(duì)于s1,首先把a(bǔ)放到8的對(duì)界
12、,假定是0,此時(shí)下一個(gè)空閑的地址是1,但是下一個(gè)元素b是double類型,要放到8的對(duì)界上,離1最接近的地址是8了,所以b被放在了8,此時(shí)下一個(gè)空閑地址變成了16,下一個(gè)元素c的對(duì)界是4,16可以滿足,所以c放在了16,此時(shí)下一個(gè)空閑地址變成了20,下一個(gè)元素d需要對(duì)界1,也正好落在對(duì)界上,所以d放在了20,結(jié)構(gòu)體在地址21處結(jié)束。由于s1的大小需要是8的倍數(shù),所以21-23的空間被保留,s1的大小變成了24。對(duì)于s2,首先把a(bǔ)放到8的對(duì)界,假定是0,此時(shí)下一個(gè)空閑地址是1,下一個(gè)元素的對(duì)界也是1,所以b擺放在1,下一個(gè)空閑地址變成了2;下一個(gè)元素c的對(duì)界是4,所以取離2最近的地址4擺放c,下
13、一個(gè)空閑地址變成了8,下一個(gè)元素d的對(duì)界是8,所以d擺放在8,所有元素?cái)[放完畢,結(jié)構(gòu)體在15處結(jié)束,占用總空間為16,正好是8的倍數(shù)。struct s1 char a8;struct s2 double d;struct s3 s1 s; char a;struct s4 s2 s; char a;cout<<sizeof(s1)<<endl; / 8cout<<sizeof(s2)<<endl; / 8cout<<sizeof(s3)<<endl; / 9cout<<sizeof(s4)<<end
14、l; / 16; s1和s2大小雖然都是8,但是s1的對(duì)齊方式是1,s2是8(double),所以在s3和s4中才有這樣的差異。 32位C+中的基本數(shù)據(jù)類型,也就char,short int(short),int,long int(long),float,double, long double大小分別是:1,2,4,4,4,8,10。3)class A1public: int a; static int b;A1();A1();sizeof(A1)=4;靜態(tài)變量是存放在全局?jǐn)?shù)據(jù)區(qū)的,而sizeof計(jì)算棧中分配的大小。9. sizeof作用1). sizeof操作符的一個(gè)主要用途是與存儲(chǔ)分配和I/O系統(tǒng)那樣的例程進(jìn)行通信。例如: void *malloc(size_t size) size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。2) . 用它可以看看一類型的對(duì)象在內(nèi)存中所占
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 輪胎買賣庫(kù)存合同范本
- 香港房屋借用合同范本
- 混凝土購(gòu)銷合同
- 瓜蔞種子銷售合同范本
- 茅臺(tái)回購(gòu)合同范本
- 外墻保溫拆除合同范本
- 動(dòng)感風(fēng)潮模板
- 代打包發(fā)貨合同范本
- 2025設(shè)備采購(gòu)合同(范本)
- 高效工作與流程優(yōu)化
- 普通地質(zhì)學(xué)教材
- 常減壓煉油仿真工藝流程簡(jiǎn)介
- 青春期女生健康講座
- 部編版語(yǔ)文五年級(jí)下冊(cè) 第五單元習(xí)作教材解讀和教學(xué)目標(biāo)
- 廣東省五年一貫制語(yǔ)文試卷
- 蘇教版小學(xué)科學(xué)二年級(jí)下冊(cè)每課教學(xué)反思(附目錄)
- JJF 1099-2018表面粗糙度比較樣塊校準(zhǔn)規(guī)范
- GB/T 4857.15-2017包裝運(yùn)輸包裝件基本試驗(yàn)第15部分:可控水平?jīng)_擊試驗(yàn)方法
- GB/T 19632-2005殯葬服務(wù)、設(shè)施、用品分類與代碼
- GB/T 14514-2013氣動(dòng)管接頭試驗(yàn)方法
- 違章教育習(xí)慣性違章培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論