類C PAT甲乙刷題常見問題總結

2021-10-02 20:27:21 字數 1742 閱讀 6254

int 佔4b 補碼表示的範圍為 [-231,231-1] (約為-2*109~2*109這個量級)

大於int 範圍考慮使用unsigne int 或 long long //輸入輸出格式為%lld

常見10^10這個範圍的兩個數相加減就可能超過int這個範圍。

大整數相加時正溢位不可能為0,而負溢位可能為0(10000000000000+10000000000000=0)

printf 輸出字串的問題

printf屬於c語言的範疇,c語言本身是沒有string型別的.

char str=

'abc'

;printf

("%s"

,str)

;

這裡的str是乙個字元陣列,也就是說printf 裡面應該是乙個字元陣列名才能正確輸出字串,一直輸出到『\0『停止。有時輸出不正確輸出一大堆亂碼的時候有可能是對字元陣列修改時丟失了』\0『.

呼叫c++的string庫宣告乙個字串陣列,採用printf進行輸出時一定要在字串後呼叫.c_str(),獲取字串的首位址才能正確輸出。

string num[10]

=;printf

("%s"

,num[0]

.c_str()

);

2.scanf 連續輸入字元時的問題

例如在迴圈中採用scanf讀取字元

for

(int i=

0;i)

scanf讀取字元%c是獲取乙個ascii碼,因此回車(\n)也可能會被讀取,不採用getchar();吸收換行符的話迴圈可能會不正確退出。

3.sacnf("%s",str)的問題

預開設的字元陣列務必保證要比儲存資料多乙個單元用於存放『\0』。

字元陣列間相互用迴圈賦值時也注意沒有用把『\0』也賦值過去了。

scanf("%s",str);無法讀取空字串,即回車符,如果需要處理空串情況改用cin.getline(str,maxn);

void

shuffle

(int order[

],string (

&card)[54

])

一定要採用固定大小的陣列?

考慮到擴充套件性可能還是要傳遞指標。

1.如果在其中宣告了乙個static 成員變數,其初始化要在main()函式之前初始化。

2.如果在結構體或者類中宣告了cmp函式,務必標註為靜態函式,且呼叫時要加上作用域

1.將乙個不確定位數的整數依次提取各位數字時,只能從最低位開始。如果需要正序輸出處理結果時,可以利用遞迴的堆疊特性先進後出。

void

fun(

int n)

fun(n/10)

;printf

("%d",n%10)

;}

1、for(;表示式a,表示式b;) 逗號相連預設為『或』的關係。

2.演算法筆記中a1065中提到 long long型的a+b必須存到乙個long long 變數中才能與long long c比較,直接在if中相加比較會錯誤,但是實測並沒有發生這個問題

3.如果對於固定長的數字串用整型儲存,輸出時記得要進行補0操作

4.函式引數能用引用就盡量使用引用,否者形參開闢記憶體並賦值的操作會消耗大量的時間。這一點在大結點的圖中的遞迴函式中尤其嚴重。

to be continued

c 類常見問題

c 類定義的時候,假如只是宣告了,沒有定義,用new生成物件時,會提示找不到symbol的錯誤。glibc detected free invalid pointer 0x0000000000517966 已放棄 重現方法 country new char maxbuf if index strst...

集合類常見問題

1 為什麼會出現集合類?物件導向語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,就對物件進行儲存,集合就是儲存物件最常用的一種方式。資料多了用物件來存,物件多了用集合來存。比如 乙個人有很多資料,年齡,身高等,乙個人就是乙個物件,而人多了,就用集合來存,人是唯一的 2 陣列和集合類同...

VueJs常見問題總結

1 響應式屬性和方法 每個 vue 例項都會 其 data 物件裡所有的屬性。var data var vm new vue vm.a data a true 設定屬性也會影響到原始資料 vm.a 2data a 2 反之亦然 data a 3 vm.a 3即 都可以使vm.這種方式獲取和修改例項屬...