201下面的代碼有什么問題?并請給出正確的寫法。 void DoSomeThing(char* p) { char str[16]; int n; assert(NULL != p); sscanf(p, "%s%d", str, n); if (0 == strcmp(str, "something")) { } } A: sscanf(p, "%s%d", str, n); 這句該寫成: sscanf(p, "%s%d", str, &n); -------------------------------------------------------------------------- 202.下面代碼有什么錯誤? Void test1() { char string[10]; char *str1="0123456789"; strcpy(string, str1); } 數(shù)組越界 203.下面代碼有什么問題? Void test2() { char string[10], str1[10]; for(i=0; i<10;i++) { str1[i] ='a'; } strcpy(string, str1); } } 數(shù)組越界 204下面代碼有什么問題?LUPA開源社區(qū)+j H2B F,c U Void test3(char* str1) { char string[10]; if(strlen(str1)<=10) { strcpy(string, str1); } } ==數(shù)組越界 ==strcpy拷貝的結(jié)束標(biāo)志是查找字符串中的\0 因此如果字符串中沒有遇到\0的話 會一直復(fù)制,直到遇到\0,上面的123都因此產(chǎn)生越界的情況 建議使用 strncpy 和 memcpy 205.寫出運(yùn)行結(jié)果: { char str[] = "world"; cout << sizeof(str) << ": "; char *p = str; cout << sizeof(p) << ": "; char i = 10; cout << sizeof(i) << ": "; void *pp = malloc(10); cout << sizeof(p) << endl; } 6:4:1:4 -------------------------------------------------------------------------- 206.C和C++有什么不同? 從機(jī)制上:c是面向過程的(但c也可以編寫面向?qū)ο蟮某绦颍?/span>c++是面向?qū)ο蟮?,提供了類。但是?/span>c++編寫面向?qū)ο蟮某绦虮?/span>c容易 從適用的方向:c適合要求代碼體積小的,效率高的場合,如嵌入式;c++適合更上層的,復(fù)雜的; llinux核心大部分是c寫的,因?yàn)樗窍到y(tǒng)軟件,效率要求極高。 從名稱上也可以看出,c++比c多了+,說明c++是c的超集;那為什么不叫c+而叫c++呢,是因?yàn)?/span>c++比 c來說擴(kuò)充的東西太多了,所以就在c后面放上兩個+;于是就成了c++ C語言是結(jié)構(gòu)化編程語言,C++是面向?qū)ο缶幊陶Z言。LUPA開源社區(qū) } n*r C++側(cè)重于對象而不是過程,側(cè)重于類的設(shè)計而不是邏輯的設(shè)計。 207在不用第三方參數(shù)的情況下,交換兩個參數(shù)的值 #include <stdio.h> void main() { int i=60; int j=50; i=i+j; j=i-j; ) i=i-j; printf("i=%d\n",i); printf("j=%d\n",j); } 方法二: i^=j; j^=i; i^=j; 方法三: // 用加減實(shí)現(xiàn),而且不會溢出 a = a+b-(b=a) 208.下面的函數(shù)實(shí)現(xiàn)在一個固定的數(shù)上加上一個數(shù),有什么錯誤,改正 int add_n(int n) { static int i=100; i+=n; return i; } 答: 因?yàn)?/span>static使得i的值會保留上次的值。 去掉static就可了 209.union a { int a_int1; double a_double; int a_int2; }; typedef struct { a a1; char y; } b; class c { double c_double; b b1; a a2; }; 輸出cout<<sizeof(c)<<endl;的結(jié)果? 答: VC6環(huán)境下得出的結(jié)果是32 我(sun)在VC6.0+win2k下做過試驗(yàn): int-4 float-4 double-8 指針-4 210. unsigned short array[]={1,2,3,4,5,6,7}; int i = 3; *(array + i) = ? 答:4 211. class A { virtual void func1(); void func2(); } Class B: class A { void func1(){cout << "fun virtual void func2(){cout << "fun } A, A中的func1和B中的func2都是虛函數(shù). B, A中的func1和B中的func2都不是虛函數(shù). C, A中的func2是虛函數(shù).,B中的func1不是虛函數(shù). D, A中的func2不是虛函數(shù),B中的func1是虛函數(shù). 答: A 212輸出下面程序結(jié)果。 #include <iostream.h> class A { public: virtual void print(void) { cout<<"A::print()"<<endl; } }; class B:public A { public: virtual void print(void) { cout<<"B::print()"<<endl; }; }; class C:public { public: virtual void print(void) { cout<<"C::print()"<<endl; } }; void print(A a) { a.print(); } void main(void) { A a, *pa,*pb,*pc; pa=&a; pb=&b; pc=&c; a.print(); b.print(); c.print(); a->print(); pb->print(); pc->print(); print(a); print(b); print(c); } A::print() A::print() B::print() C::print() A::print() B::print() C::print() A::print() A::print() A::print() 215. 行尾使用注釋的開始標(biāo)記符為____ //_____。 216 多行注釋的開始標(biāo)記符和結(jié)束標(biāo)記符分別為_____ /*_____和___ */_______。 217. 用于輸出表達(dá)式值的標(biāo)準(zhǔn)輸出流對象是____ cout_____。 218 用于從鍵盤上為變量輸入值的標(biāo)準(zhǔn)輸入流對象是__ cin______。 219. 一個完整程序中必須有一個名為____ main____的函數(shù)。 220一個函數(shù)的函數(shù)體就是一條____復(fù)合_____語句。 221. 當(dāng)執(zhí)行cin語句時,從鍵盤上輸入每個數(shù)據(jù)后必須接著輸入一個___空白_____符,然后才能繼續(xù)輸入下一個數(shù)據(jù)。 222在C++程序中包含一個頭文件或程序文件的預(yù)編譯命令為____#include ______。 223. 程序中的預(yù)處理命令是指以___#___字符開頭的命令。 224. 一條表達(dá)式語句必須以___分號___作為結(jié)束符。 225. 在#include命令中所包含的頭文件,可以是系統(tǒng)定義的頭文件,也可以是___用戶(或編程者_____定義的頭文件。 226. 使用#include命令可以包含一個頭文件,也可以包含一個__程序____文件。 227.一個函數(shù)定義由__函數(shù)頭______和__函數(shù)體_____兩部分組成。 228.若一個函數(shù)的定義處于調(diào)用它的函數(shù)之前,則在程序開始可以省去該函數(shù)的__原型(或聲明)____語句。 229.C++頭文件和源程序文件的擴(kuò)展名分別為__.h ___和___.cpp ___。 230.程序文件的編譯錯誤分為____警告(warning)____和____致命(error) ____兩類。 231.當(dāng)使用___ void ____保留字作為函數(shù)類型時,該函數(shù)不返回任何值。 232.當(dāng)函數(shù)參數(shù)表用___ void __保留字表示時,則表示該參數(shù)表為空。 233.從一條函數(shù)原型語句“int fun1(void);”可知,該函數(shù)的返回類型為______,該函數(shù)帶有______個參數(shù)。 234. 當(dāng)執(zhí)行cout語句輸出endl數(shù)據(jù)項時,將使C++顯示輸出屏幕上的光標(biāo)從當(dāng)前位置移動到___下一行_____的開始位置。 235. 假定x=5,y=6,則表達(dá)式x++*++y的值為___35_______。 236. 假定x=5,y=6,則表達(dá)式x--*--y的值為___25_______。 237. 假定x=5,y=6,則執(zhí)行表達(dá)式y*=x++計算后,x和y的值分別為___6___和___30 _____。 238. 假定x=5,y=6,則執(zhí)行表達(dá)式y+=x--計算后,x和y的值分別為____4__和___11___。 239. C++常數(shù)0x145對應(yīng)的十進(jìn)制值為___325 ___。 240. C++常數(shù)0345對應(yīng)的十進(jìn)制值為____ 229__。 241. 十進(jìn)制常數(shù)245對應(yīng)的十六進(jìn)制的C++表示為____0xF5___。 242. 十進(jìn)制常數(shù)245對應(yīng)的八進(jìn)制的C++表示為___0365 ___。 243. signed char類型的值域范圍是__-128__至___+127 __之間的整數(shù)。 244. int和float類型的數(shù)據(jù)分別占用___ 4___和____ 4___個字節(jié)。 245. float和double類型的數(shù)據(jù)分別占用____ 4___和_____8___個字節(jié)。 246. bool和char類型的數(shù)據(jù)分別占用_____1____和____1___個字節(jié)。 247. unsigned short int和int類型的長度分別為____ 2___和____4___。 248. 字符串”This\’s a book.\n”的長度為_____ 15____。 249. 字符串”\nThis\’s a pen\n\n”的長度為_____ 15_____。 250. 在C++中存儲字符串”abcdef”至少需要___7 _____個字節(jié)。 251. 在C++中存儲字符串”a+b=c”至少需要_____6 ___個字節(jié)。 252. 假定x和y為整型,其值分別為16和5,則x%y和x/y的值分別為___1_______和____3____。 253. 假定x和y為整型,其值分別為16和5,則x/y和double(x)/y的值分別為____3____和___3.2____。 254. 假定x是一個邏輯量,則x && true的值為___ x ____。 255. 假定x是一個邏輯量,則x || true的值為_____ true(或1)_____。 256. 假定x是一個邏輯量,則x && false的值為____ false(或0) ___。 257. 假定x是一個邏輯量,則x || false的值為x。 258. 假定x是一個邏輯量,則!x || false的值為____!x ____。 259. 假定x是一個邏輯量,則x && !x的值為____ false(或0)____。 260. 假定x是一個邏輯量,則x || !x的值為____ true(或1)___。 261. 設(shè)enum Printstatus{ready,busy,error}; 則 cout<<busy的輸出結(jié)果是_____1___。 262. 設(shè)enum Printstatus{ready=2,busy,error}; 則cout<<busy的輸出結(jié)果是____3____。 263. 常數(shù)-4.205和6.7E-9分別具有___4_____和____2___位有效數(shù)字。 264. 枚舉類型中的每個枚舉值都是一個____枚舉常量_____,它的值為一個___整數(shù)____。 265. 常數(shù)100和3.62的數(shù)據(jù)類型分別為____ int ___和_____ double ___。 266. 若x=5, y=10, 則計算y*=++x表達(dá)式后,x和y的值分別為___6___和__60 ___。 267. 假定x和ch分別為int型和char型,則sizeof(x)和sizeof(ch)的值分別為__4__和__1__。 268. 假定x=10,則表達(dá)式x<=10?20:30的值為__ 20 __。 269. 表達(dá)式sqrt(81)和pow(6,3)的值分別為___9 ___和___216___。 270. 含隨機(jī)函數(shù)的表達(dá)式rand()%20的值在___0__至___ 19 __區(qū)間內(nèi)。 271. 在switch語句中,每個語句標(biāo)號所含關(guān)鍵字case后面的表達(dá)式必須是___常量___。 272. 在if語句中,每個else關(guān)鍵字與它前面同層次并且最接近的____ if ____關(guān)鍵字相配套。 273. 作為語句標(biāo)號使用的C++保留字case和defaule只能用于___ switch ___語句的定義體中。 274. 執(zhí)行switch語句時,在進(jìn)行作為條件的表達(dá)式求值后,將從某個匹配的標(biāo)號位置起向下執(zhí)行,當(dāng)碰到下一個標(biāo)號位置時(停止/不停止)___不停止__執(zhí)行。 275. 若while循環(huán)的“頭”為“while(i++<=10)”,并且i的初值為0,同時在循環(huán)體中不會修改i的值,則循環(huán)體將被重復(fù)執(zhí)行__11___次后正常結(jié)束。 276. 若do循環(huán)的“尾”為“while(++i<10)”,并且i的初值為0,同時在循環(huán)體中不會修改i的值,則循環(huán)體將被重復(fù)執(zhí)行___10 ___次后正常結(jié)束。 277. 當(dāng)在程序中執(zhí)行到break語句時,將結(jié)束本層循環(huán)類語句或switch語句的執(zhí)行。 278. 當(dāng)在程序中執(zhí)行到___ continue___語句時,將結(jié)束所在循環(huán)語句中循環(huán)體的一次執(zhí)行。 279. 在程序中執(zhí)行到__ return ___語句時,將結(jié)束所在函數(shù)的執(zhí)行過程,返回到調(diào)用該函數(shù)的位置。 280.在程序執(zhí)行完____主(或main)__函數(shù)調(diào)用后,將結(jié)束整個程序的執(zhí)行過程,返回到C++集成開發(fā)窗口。 281. 元素類型為int的數(shù)組a[10]共占用___ 40___字節(jié)的存儲空間。 282. 元素類型為double的二維數(shù)組a[4][6]共占用____192__字節(jié)的存儲空間。 283. 元素類型為char的二維數(shù)組a[10][30]共占用___300__字節(jié)的存儲空間。 284. 存儲字符’a’和字符串”a”分別需要占用_____1___和____2 ___個字節(jié)。 |
|