字符串相關(guān)筆試題_第1頁
字符串相關(guān)筆試題_第2頁
字符串相關(guān)筆試題_第3頁
字符串相關(guān)筆試題_第4頁
字符串相關(guān)筆試題_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1. 寫一個將整數(shù)轉(zhuǎn)換成字符串的函數(shù)itoa解析:整數(shù)轉(zhuǎn)化成字符串,可以采用加'0',然后再逆序,整數(shù)加'0'就會隱形轉(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. 編程實現(xiàn)字符串?dāng)?shù)轉(zhuǎn)化成整數(shù)的方法。解析:可以采用減 '0' 再乘10累加的方法,字符串減 '0' 就會隱性轉(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) / 實現(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ù)的一個完整的標(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不需要指定長度,它遇到字符串結(jié)束符"0"便結(jié)束。memcpy則是根據(jù)其第3個參數(shù)決定復(fù)制的長度。 3) 用途不同。通常在復(fù)制字符串時用strcpy,而需要復(fù)制其他類型數(shù)據(jù)時則一般用memcpy。5. malloc函數(shù) 函數(shù)原

7、型:void *malloc (unsigned int size) 作用:在內(nèi)存的動態(tài)存儲區(qū)中分配一個長度為size的連續(xù)空間,其參數(shù)為一個無符號整型數(shù),返回值是一個指向所分配的連續(xù)存儲域的起始地址的指針。 注意:若函數(shù)未能成功分配存儲空間(如內(nèi)存不足)就會返回一個NULL指針,所以在調(diào)用該函數(shù)時應(yīng)檢測返回值是否為NULL并執(zhí)行相應(yīng)的操作。例如: if (array (int *) malloc(10*sizeof(int)=NULL)printf("不能成功分配存儲空間。");exit(1);6. "回文數(shù)"是一種數(shù)字。如:98789, 這個數(shù)字正讀

8、是98789,倒讀也是98789,正讀倒讀一樣,所以這個數(shù)字就是回文數(shù)。思路1:建立數(shù)組,按位存儲。比較首位和末位是否相同。如不同,則不是回文數(shù)。相同則繼續(xù)比較,首位遞增,末位遞減,直到首位不再小于末位。思路2:求反轉(zhuǎn)后的數(shù)是否與原先相同。7. 有100個整數(shù),其中有負(fù)數(shù),找出連續(xù)三個數(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的大小取決于它所有的成員中占用空間最大的一個成員的大小。所以對于u來說,大小就是最大的double類型成員a了,所以sizeof(u)=sizeof(double)=8。但是對于u2和u3,最大的空間都是char13類型的數(shù)組,為什么u3的大小是13,而u2是16呢?關(guān)鍵在于u2中的成員int b。由于i

11、nt類型成員的存在,使u2的對齊方式變成4,也就是說,u2的大小必須在4的對界上,所以占用的空間變成了16(最接近13的對界)。結(jié)論:復(fù)合數(shù)據(jù)類型,如union,struct,class的對齊方式為成員中對齊方式最大的成員的對齊方式。2)struct和對齊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 對于s1,首先把a放到8的對界

12、,假定是0,此時下一個空閑的地址是1,但是下一個元素b是double類型,要放到8的對界上,離1最接近的地址是8了,所以b被放在了8,此時下一個空閑地址變成了16,下一個元素c的對界是4,16可以滿足,所以c放在了16,此時下一個空閑地址變成了20,下一個元素d需要對界1,也正好落在對界上,所以d放在了20,結(jié)構(gòu)體在地址21處結(jié)束。由于s1的大小需要是8的倍數(shù),所以21-23的空間被保留,s1的大小變成了24。對于s2,首先把a放到8的對界,假定是0,此時下一個空閑地址是1,下一個元素的對界也是1,所以b擺放在1,下一個空閑地址變成了2;下一個元素c的對界是4,所以取離2最近的地址4擺放c,下

13、一個空閑地址變成了8,下一個元素d的對界是8,所以d擺放在8,所有元素擺放完畢,結(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的對齊方式是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計算棧中分配的大小。9. sizeof作用1). sizeof操作符的一個主要用途是與存儲分配和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) . 用它可以看看一類型的對象在內(nèi)存中所占

溫馨提示

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

評論

0/150

提交評論