第二道題為:在乙個有序陣列中查詢某個數字n,這道題是比較簡單的,簡單在他說的前提是乙個有序的陣列,所以最簡單的方法就是從頭利用for迴圈進行遍歷,總會找到那個數字n,但是這樣做,也是效率低下的,這樣的時間複雜度就為n,且最壞的情況需要程式遍歷整個陣列,所以這裡老師向我們介紹了更加簡單的方法來找到數字n即:(折半查詢法,二分查詢法)!!!
折半,二分查詢法:即找到陣列最左邊的數與最右邊的數,因為是有序的,故可以找到中間值,後與要查詢的數字進行比較,然後再重複進行中分,直到找到那個數字n,這種方法的時間複雜度為log2n,當進行(2的32次方)的陣列時,此種方法只需要最多32次就能找到數字n!!!編寫時利用left與right與中間值mid來查詢。
第三道題為:編寫**,演示多個字元從兩端移動,向中間匯聚!這道題很有意思,學到了很多新的東西,比如如果陣列中是一堆字元而不是數字時,如果再用int sz = sizeof(arr)/size(arr[0])來計算字元個數時需要-2!因為在計算機中比如陣列中存放的是a b c時,其實存放的是a b c \n 四個量,故很容易出錯,用這種方法,老師給我們了乙個新的庫函式即是:strlen(arr)來得到,字元陣列中的元素個數,不止這個,為了讓字元有時間的出現,故使用sleep();來讓他有時間的出現和退出,說到退出,為了使之前的部分消除掉,使用system(「cls」)來清空螢幕,在使用以上函式時都要加上標頭檔案,#include#include#include依次按順序。
第四道題為:編寫**實現模擬使用者登陸場景,只能登陸三次,並且盡最大可能進行優化(三次密碼錯誤後,退出程式!)這道題就更更更好玩了!!!全是細節,都可以一點一點優化,完善**,其中也學了一些東西,比如==這個比較是不可以用來比較兩個字串是否相等的!!!即password=「123456」這樣是不可以的,需要用乙個函式strcmp(a,b)==0)來用等於0來用於判斷a與b相等的。
孫浩小筆記!!!
1.很重要,即是a++與++a的區別,前者是前自增,後者是後自增,
inta=0,b=1;
a=b++;//a=1 b=2
a=++b; //a=3 b=3
2.int sz = sizeof(arr)/size(arr[0])
strlen()計算陣列表長,標頭檔案為#include
system(「cls」)清空螢幕,標頭檔案是 #include
3.函式strcmp(a,b)==0)來用等於0來用於判斷a與b相等的。
4.加油!孫浩!做別人做不到的事!
孫Cloud的C語言學習部落格 2 分支語句
分支語句 有 if 和 switch if經常用if else 來使用,在進行單分支時經常使用if語句,但是if else語句也可以用來進行多分支,這樣使用 if 表示式1 語句1 else if 表示式2 語句2 else 語句3 注意 else總是匹配和它最近的if來使用。當進行多分支時經常使用...
C 語言學習 4
程式4 題目 輸入某年某月某日,判斷這一天是這一年的第幾天?1.程式分析 以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。2.程式源 include stdio.h include conio.h main sum sum da...
c語言學習 4 迴圈
一 for和while等價替換 inti 1 for i i 100 i inti 1 while i 100 二 從鍵盤輸入乙個數字,如果該數字是回文數,則返回yes,否則返回no 回文數 正著寫倒著寫一樣的數 include intmain if sum val else return 0 三 ...