1.求陣列元素之間相鄰的元素個數或者求字串的長度:
指向同乙個陣列的不同元素的兩個指標可以相減,其差便是兩個指標之間相隔的元素個數。
例如在乙個字串中,讓乙個指向該串的首元素,讓另乙個指向字串的結束符,兩個指標相減,其差便是字串的長度
2.怎樣判斷兩個指標指向的是陣列的同乙個元素?
:指標可以互相比較。如指向同乙個陣列元素的兩個指標可以比較,當兩個指標相等時,說明指向陣列的同乙個元素。
3.怎樣對二進位制進行取位?
:and運算通常用於二進位製取位操作,例如乙個數 and 1的結果就是取二進位制的最末位。這可以用來判斷乙個整數的奇偶,二進位制的最末位為0表示該數為偶數,最末位為1表示該數為奇數。
4.怎樣對二進位制特定位賦值?
:按位或(or |):or運算通常用於二進位制特定位上的無條件賦值,例如乙個數or 1的結果就是把二進位制最末位強行變成1。如果需要把二進位制最末位變成0,對這個數or 1之後再減一就可以了,其實際意義就是把這個數強行變成最接近的偶數。
5.可以使用%提取整數中的數字,用/將提取出的數字從整數中去掉。
6.判斷乙個字元是大寫字母,小寫字母,數字或者數字+大小寫字母,用標頭檔案的字元檢測函式,如下
c++提供了若干字元檢測函式,這些函式都在標頭檔案.這些函式檢測單個字元,返回true或者false(實際返回的是0和1)
isdigit(c)//檢測是否是為數字 如isdigit(『7』)
isalpha(c)//檢測是否為字母 如isapha(『a』)
isalnum(c)//數字或者字母時候為真
islower(c)//檢測小寫字母
isupper(c)//
isspace()//
7.怎樣進行單個字元大小寫轉換?
tolower(c)//轉換小寫字母。否則返回本身
toupper(c)//轉換為大寫字母
注意:轉換後的返回值並不是相應的大小寫字母,而是大小寫字母對應的ascii碼,所以,要轉換為大小寫字母,還需要進行型別轉換,如
char ch = 『a』;
cout<(toupper(ch));//顯示a
如果為:cout<
8.判斷一年的第一天是星期幾(用來列印日曆)
int firstday = ((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; //判斷某年的第一天是星期幾(計算從1970到現在的天數,模7取餘就是今天的星期)
daysofmonths是這個月的天數(123456789,10,11,12)
下個月第一天是星期幾就是firstday = (firstday+daysofmonths)%7;
9.找出符合條件的100個數(n個數):
將這些數放在乙個陣列中,先宣告這個陣列如:int num[100],n = 0;//n用於陣列的計數作用
再篩選,可以自己設定乙個開關,作為跳出迴圈的條件和執行符合情況的條件。
while(n<100)
生成數,
if(符合條件)
10.輸出10個不同的數,
演算法:就是每次新輸入的數,都與原來的所有數比較(因為要儲存原來的數,所以必須把原來的數放在陣列中,才能訪問到這個數),如果沒有相同的,則加入進去,否則丟棄。
(即只有要儲存的數,要訪問的數,有用的數才放在陣列中)
11.遇見多個一次出現數字,就要聯想到陣列,把這些數放在陣列中,能一一訪問。
有的情況下,輸入的數,是臨時的,可能會被立刻拋棄,這時候,就不用引入陣列,直接用迴圈生成一下這個數。即只有要儲存的數,要訪問的數,有用的數才放在陣列中
如int n = 0;
while(n<10)
a = rand()%10;
if(滿足條件才)
10設定」開關「的作用:若乙個數符合條件,那麼執行外面的動作,若不符合,則不執行外面的動作。原理就是當遇到不符合條件的數的時候,改變開關值。
和有條件跳出雙重迴圈一樣(不符合,跳出兩層迴圈(內層用break退出,外層用continue,),符合,執行外層迴圈動作)
可表示為
int sw = 0//開關
forif(!sw)
典型範例:輸出10個不同的數
void main()
}if (num[i] == a)
else
}for (int j = 0;j<10;j++)
}10.如何跳出雙重迴圈?
:
for(;;)if(跳出的條件)
break;
}
11.如果不符合條件,跳出兩次迴圈,如果滿足條件,跳出內層迴圈,執行外層迴圈的動作。與引入開關變數一樣(如果條件符合,則退出笨迴圈且執行外部動作,如果不符合,則不執行外部動作)
for(;;)if(跳出的條件)
continue;//跳出迴圈的一次迭代
else
}
演算法知識點彙總
貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性,即某個狀態以前的過程不會影響以後的狀態,只與當...
《啊哈!演算法》知識點彙總
這個知識點總結是朋友的讀書筆記,寫完之後扔給了我,發出來給其他人看看,希望更多的人能知道這本書,擺脫對演算法的陌生和畏懼感,也給我帶來點流量 感謝柏詩峰同學的支援 這份導圖總結自 啊哈!演算法 這本書,但有不僅僅是總結,更標註了許多頁碼的索引,可以在想要回看知識點時快速的找到對應的章節。書裡的演算法...
小知識點彙總
1 為什麼乙個數的各位數之和可以被3整除時,這個數就可以被3整除 設乙個n位數number,從個位起每一位為a1 an 則number a1 a2 10 a3 10 2 an 10 n 1 1 先證必要性 如果number的各位數之和是3的倍數,則a1 a2 an 3k k為正整數 2 由 2 得a...